[Cuis-dev] Updates to VectorEngine and VectorEnginePlugin

Juan Vuletich juan at jvuletich.org
Fri Apr 9 12:29:54 PDT 2021

Hi Folks,

I just pushed a few changesets and updates to packages, together with 
updated images.

To load VectorGraphics, just do "Feature require: 'VectorGraphics'" or 
set a TrueType font. No need to activate the plugin, as it will be used 
by default if available. Also, no need to enable VectorGraphics, it is 
done by default when installing the package. Also, a TrueType font is 
selected automatically, so you don't need to remember to do it yourself.


On 3/26/2021 1:43 PM, Juan Vuletich via Cuis-dev wrote:
> Hi Folks,
> I added some new features to the VectorEnginePlugin. Unicode text 
> (UTF-8 and UTF-32) can now be rendered by the plugin, with excellent 
> performance, quality and multilingual support. SVG examples also work 
> great. Take a look!
> I hope you like it.
> To explore this stuff:
> A -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:
>     ChangeSet installNewUpdates.
> 5) Evaluate:
>     Feature require: 'VectorGraphics'.
> 6) Set a TT Font, like DejaVu.../DejaVuSans (Stuff will break with 
> StrikeFonts and you'll need to kill the image)
> 7) Evaluate:
>     M3Exp01Morph new openInWorld.
>     Answer yes.
>     Play with the halo. Very slow! Still running the Smalltalk code 
> for VectorEngine
> 8) Evaluate:
>     (self runningWorld canvas instVarNamed: 'vectorCanvas') usePlugin.
>     Play with the halo. Rotate (bottom left handle) and Zool (bottom 
> right handle) Now it is very fast! The plugin is working.
> 9) For the following, it is advisable to download the GPL licensed 
> "HanWangMingMedium" chinese font, and make it accessible to Cuis. 
> Evaluate:
>     VectorCanvas demoUTF8Unicode.
>     VectorCanvas demoUTF32Unicode.
> 10) Evaluate
>     Feature require: 'SVG'.
>     SVGElementMorph examplesLion
>     SVGElementMorph examplesMagician
>     SVGElementMorph examplesTiger
>     SVGElementMorph phoneExample
>     Note that loading some of these files takes a bit of time. These 
> are complex SVG files! Still, note that they are drawn quickly by the 
> plugin, even when doing high-quality subpixel antialiasing. To compare 
> quality, you might try opening these SVG files with a web browser. You 
> can rotate and zoom, of course. You can also use the halo to extract 
> or duplicate parts of the SVG composites, like you would do in Inkscape.
> 12) Hide the taskbar
> 13) redefine WidgetMorph>>requiresVectorCanvas to answer true,
> 14) 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!
> 15) redefine WidgetMorph>>hasVariableExtent to answer false.
> 16) Open the halo on any window. Use the rotate and zoom handles.
> 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) Start Cuis
> 3) Evaluate:
>     ChangeSet installNewUpdates.
>     Feature require: 'VMMaker'.
>     Feature require: 'VectorEnginePlugin'
>     VectorEnginePlugin translateInDirectory: DirectoryEntry 
> currentDirectory doInlining: true
> Cheers,

Juan Vuletich

More information about the Cuis-dev mailing list