[Cuis-dev] VectorEnginePlugin (was Re: UK Smalltalk User Group meeting - Wednesday March 31st)

Luciano Notarfrancesco luchiano at gmail.com
Wed Mar 24 12:11:04 PDT 2021


Juan, this is amazing, congratulations!

Did you do any benchmarks to measure the speed up factor you get from the
plug-in vs the pure Smalltalk version?


On Tue, 23 Mar 2021 at 7:39 AM Juan Vuletich via Cuis-dev <
cuis-dev at lists.cuis.st> wrote:

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


More information about the Cuis-dev mailing list