SystemImage

How is the call to get a system image on MAcOS ?

The example is only for iOS but no suggestion for OSX
Var p As Picture = Picture.SystemImage(“moon”,50)
g.DrawPicture(p,0,0)

I think that this question is in reference to the recent blog post… https://blog.xojo.com/2020/12/17/quick-tip-systemimage-more-than-2400-symbols-at-your-disposal/

I have the same question. How can we use SystemImage on Mac OS desktop projects?

AFAIK there is no way using “pure” Xojo.

However I have posted an article on how I use SF Symbols in Xojo made applications here.

There’s also this article I wrote back in August 2020 about SF Symbols.

Apple added a way to get the symbols by name in macOS 11.

These won’t work on OSX versions prior to Big Sur, and obviously a no-go in Windows (if your app is cross-platform. That leaves a few alternatives:

  1. recreate them as SVG or PNG’s (tedious),
  2. the dirty way - screenshot and edit that;
  3. DIY icons using say Sketch, which I’m growing to like if you can get by with flat simple icons.

Showing my age here… this is a repeat of the situation way back in the days of System 7 - 9, with RESEDIT, Hypercard/Supercard. While you COULD utilise the system icons and those in Hypercard/Supercard; for a commercial app it was almost always worth spending the time to make your own. In particular the system icons weren’t consistent across subsequent versions of the operating system and you had no guarantee Apple wouldn’t change the resource ID, size or the icon (and they did).

There is an option missing from the list.

In App Wrapper 4 (when run on macOS Big Sur), select “Contents” from the side bar, then “Add Files”, and finally “Add SF Symbol as image”. This will open the SF Rasterizer that I built.

Once you’ve entered the name, selected the sizes (it auto creates @2x images of the selected sizes) and saved it. App Wrapper 4 will create a multi-rep tiff file and embed this into your macOS application at wrapping time.

This can then be used with the Ohanaware App Kit function " NSImageWithSymbolNameAndFallBack" to use the SF Symbol on BS and the rasterized version for below versions of the macOS. This function is used in App Wrapper.

Be very careful that these images not find their way into non-macOS apps. It wouldn’t surprise me if Apple specifically forbids this.

3 Likes

They are forbidden in non-Apple platforms. I’ve been making my own icons… and made a tool to simplify it. Talk about bloat… I’m kind over seeing a 200k Xojo project suddenly explode to 50MB just by adding a few graphics in PNG or TIFF.