[Cuis-dev] Vector icons?

Juan Vuletich juan at jvuletich.org
Tue Apr 27 12:20:31 PDT 2021

Hi Ken,

On 4/24/2021 12:00 PM, ken.dickey--- via Cuis-dev wrote:
> On 2021-04-24 12:39, Bernhard Pieber via Cuis-dev wrote:
> ..
>     Are there any examples of vector icons in some package? What ist the
>     general idea, will we be using SVG or lower level graphics 
> operations?
> This is uncached drawing yet (per-stroke SVG drawing), so expect 
> SLOW.  THIS IS PRTOTYPE CODE (expect breakage).

Wow! This is really impressive!

You can use the halo on the IconPallete to select and individual icon, 
and then the duplicate handle to drag a copy to the World. Then, the 
usual resize and rotate work as expected. This is JUST GREAT!

> But..
> A fairly good looking icon set is:
>  http://freshmeat.sourceforge.net/projects/svg-icons/
> Black & White (simpler) icons:
>   git clone https://github.com/matthaywardwebdesign/icon
> Look in 'svg' directory.  All MIT licenced.

They are all great. To be able to view them I had to:
- Raise a "safe limit" walkback from 1000 to around 1400 in SVGImagePallet
- Fix Number>>readFrom: . Just pushed the update to GitHub.
- Fix SVGRectangle creation to use default x=0 or y=0 if not provided. 
Updated version of SVG package in GitHub.

> Too many B&W Icons.  I split directory into android-* ios-* ie-* and 
> others.
> Android and IOS load fine, but both ie-* and others fail because:
>   Number readFrom: '.5'. --> error: at least 1 digit expected
>   ('0.5' works)
> Should be easy fix, but I have not done it.
> vvv===vvv===vvv
> Feature require: 'SVG'.
> Feature require: 'Morphic-Misc1'.
> "In a FileList
>   install 
> <where-ever>/4568-CuisCore-SVGReadSupport-2021Apr11-08h24m-KenD.001.cs.st
>   fileIn <wherever>/SVGImagePallet.st
> "
> SVGIconsPk := (ContentPack new loadContentFrom: 
> '/<where-ever>/SVGIcons' asDirectoryEntry ).
> SVGIconsPk size.
> "=================="
> SVGImagePallet fromDictionary: SVGIconsPk imageExtent: 32 at 32.
> "This last will open an icon picker. Slow; get a cup of coffee"
> ^^^===^^^===^^^
> Just for fun!
> -KenD
> [Code & ScreenShot separate;  This 100K limit really sucks!]

The idea, or at least my idea, is to store the path information in 
memory in the same way we do for TrueType. Then the display of an icon 
will be as fast as the display of a TrueType glyph. This forces some 
assumptions, that TrueType conforms, but I'm not sure about the SVG icons:
- Use a single stroke color. Same for fill color.
- Use a single stroke width (zero in the case of TrueType, but can be 
non zero for icons)
If these don't hold, then several calls to the plugin are needed, making 
display more expensive. So, at least, window controls and scrollbar 
buttons should only use these, at least for the default theme.

Ken, this is a great first step. Thanks!


Juan Vuletich

More information about the Cuis-dev mailing list