<div dir="auto">Juan, this is amazing, congratulations!</div><div dir="auto"><br></div><div dir="auto">Did you do any benchmarks to measure the speed up factor you get from the plug-in vs the pure Smalltalk version?</div><div dir="auto"><br></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 23 Mar 2021 at 7:39 AM Juan Vuletich via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)">On 3/22/2021 5:55 PM, David T. Lewis via Cuis-dev wrote:<br>
> Hello Juan,<br>
><br>
> I recall from previous presentations that development of a VM plugin<br>
> was on the to-do list for your vector graphics package. Could you<br>
> please say a few words about what is needed? If it is something that<br>
> I could help with, I would be happy to assist.<br>
><br>
> Dave<br>
><br>
<br>
Hello David, Eliot,<br>
<br>
I've been working on it for a couple of weeks, and it is starting to <br>
take off! So, David, you just triggered an announcement.<br>
<br>
I have just pushed the relevant files to GitHub. There are several ways <br>
to explore this.<br>
<br>
A - You want to see it running. Experimental. I only buit it for MacOS.<br>
1) Grab VM including the plugin from <br>
<a href="https://www.dropbox.com/sh/rhkt4ayq24t2xbf/AACDb3mrjMUDB8Mptd-Bi6Zsa?dl=0" rel="noreferrer" target="_blank">https://www.dropbox.com/sh/rhkt4ayq24t2xbf/AACDb3mrjMUDB8Mptd-Bi6Zsa?dl=0</a><br>
2) Pull Cuis repo.<br>
3) Start Cuis with the VM above<br>
4) Evaluate: Feature require: 'VectorGraphics'.<br>
5) Set a TT Font (Stuff will break with StrikeFonts and you'll need to <br>
kill the image)<br>
6) Evaluate: M3Exp01Morph new openInWorld.<br>
7) Play with the halo. Very slow! Still running the Smalltalk code for <br>
VectorEngine<br>
8) Evaluate: (self runningWorld canvas instVarNamed: 'vectorCanvas') <br>
usePlugin.<br>
9) Play with the halo. Rotate (bottom left handle) and Zool (bottom <br>
right handle) Now it is very fast! The plugin is working.<br>
10) Hide the taskbar<br>
11) redefine WidgetMorph>>requiresVectorCanvas to answer true,<br>
12) refresh the display. Now every window and window element, including <br>
all the text, is drawn by VectorEngine. You might notice that all the <br>
appareances of any glyph, for example $a are no longer identical. Text <br>
layout and Glyph placement is done with Float arithmetic, using subpixel <br>
locations!<br>
13) redefine WidgetMorph>>hasVariableExtent to answer false.<br>
14) Open the halo on any window. Use the rotate and zoom handles.<br>
15) Yes. We can do high quality, subpixel antialiased text at _any_ <br>
scale and rotation angle! I don't know of any other Smalltalk or <br>
windowing system that can do this. It is like pdf scaling, but for _all_ <br>
the UI!<br>
<br>
B - You want to look at the generated C code for the plugin, or build it <br>
for another platform. You need a working setup to build the <br>
OpenSmalltalk VM. The dropbox opensmalltalk-vm includes the files needed <br>
to build the VM with the plugin.<br>
<br>
C - You want to experiment with the Slang plugin source code. I have <br>
only done this in Cuis, not yet in the official Squeak VMMaker image.<br>
1) Clone / pull VMMaker repo<br>
2) Feature require: 'VMMaker'.<br>
3) FileIn '<a href="http://IntegerArrayWordArray-stdint-VMMaker-jmv.006.cs.st" rel="noreferrer" target="_blank">IntegerArrayWordArray-stdint-VMMaker-jmv.006.cs.st</a>'<br>
4) Feature require: 'VectorEnginePlugin'<br>
5) VectorEnginePlugin translateInDirectory: DirectoryEntry <br>
currentDirectory doInlining: true<br>
I wanted to use stdint.h C types. The file <br>
<a href="http://IntegerArrayWordArray-stdint-VMMaker-jmv.006.cs.st" rel="noreferrer" target="_blank">IntegerArrayWordArray-stdint-VMMaker-jmv.006.cs.st</a> includes changes to <br>
VMMaker to generate the proper declarations.<br>
<br>
David, Eliot, do you think this is a sensible way to enable the use of <br>
stdint.h? It would affect any uses of IntegerArray and WordArray. I <br>
think we'd use stdint.h as much as possible. But I'm not certain if <br>
these changes could break other things.<br>
<br>
Feedback is most welcome.<br>
<br>
Cheers,<br>
<br>
-- <br>
Juan Vuletich<br>
<a href="http://www.cuis-smalltalk.org" rel="noreferrer" target="_blank">www.cuis-smalltalk.org</a><br>
<a href="https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev" rel="noreferrer" target="_blank">https://github.com/Cuis-Smalltalk/Cuis-Smalltalk-Dev</a><br>
<a href="https://github.com/jvuletich" rel="noreferrer" target="_blank">https://github.com/jvuletich</a><br>
<a href="https://www.linkedin.com/in/juan-vuletich-75611b3" rel="noreferrer" target="_blank">https://www.linkedin.com/in/juan-vuletich-75611b3</a><br>
@JuanVuletich<br>
<br>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>