[Cuis-dev] Updates to VectorEngine and VectorEnginePlugin

Juan Vuletich juan at jvuletich.org
Fri Mar 26 09:43:20 PDT 2021


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
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



More information about the Cuis-dev mailing list