Page 1 of 1

Help with Iconic Plugin

Posted: Sun Apr 02, 2023 12:47 am
by NathanH
Hi,

I'm using Amiga OS3.5 with the Iconic Plugin. I have installed util/dtype/icondt.lha from Aminet. I found that, for example, the shell icon (SYS:System/Shell.info) displays poorly in Hollywood with this datatype installed. It does display perfectly in Multiview, however, with the datatype installed. I'm not sure the difference. Anyway, I thought no problem, I'll use the following code which I thought would load the icon using the Iconic Plugin rather than the datatype:

Code: Select all

@DISPLAY {width=100, height=100}

@REQUIRE "iconic"

LoadIcon(1, "SYS:System/Shell.info", {loader="iconic"})
ConvertToBrush(#ICON, 1, 1)

DisplayBrush(1, #CENTER, #CENTER)

Repeat
     WaitEvent
Forever
This code does not bypass the datatype. Is the code incorrect? If I delete the icon datatype the shell icon shows perfectly in Hollywood. Is there a way to bypass the datatype?

Since we're on this topic, there are several #ICNFMT_ constants that we can use to save icons. Is there a way to use GetAttribute() on the icon to see what type it was that was loaded by the Iconic Plugin? There doesn't seem to be anything about it in the documentation for GetAttribute().

Finally, there are several icons which display as blank (totally transparent though width and height are correct when queried) or as a small black box when using the Iconic Plugin. These icons display fine on the Workbench. Can the Iconic Plugin either fail in these cases or tell me via above that it is of #ICNFMT_UNKNOWN so that I can react accordingly in my code? Is there another way programmatically that I can tell there is a problem? Querying the width of the icon and the color of pixel (0,0) tells me that it is the black box case. I don't know how to tell in the transparent case though.

Thanks for the help!!

NathanH

Re: Help with Iconic Plugin

Posted: Thu Apr 13, 2023 3:25 pm
by airsoftsoftwair
NathanH wrote: Sun Apr 02, 2023 12:47 am This code does not bypass the datatype. Is the code incorrect? If I delete the icon datatype the shell icon shows perfectly in Hollywood. Is there a way to bypass the datatype?
This is weird. If you pass "iconic" in the "Loader" tag of LoadIcon(), only the Iconic plugin will be asked to load the file, i.e. datatypes and all other loaders will be bypassed completely so I don't understand why activating and deactivating the datatype has an effect here. What does this report on your system?

Code: Select all

LoadIcon(1, "SYS:System/Shell.info", {loader="iconic"})
DebugPrint(GetAttribute(#ICON, 1, #ATTRLOADER))
It should always report "iconic", no matter if that icon datatype is installed or not.
NathanH wrote: Sun Apr 02, 2023 12:47 am Since we're on this topic, there are several #ICNFMT_ constants that we can use to save icons. Is there a way to use GetAttribute() on the icon to see what type it was that was loaded by the Iconic Plugin? There doesn't seem to be anything about it in the documentation for GetAttribute().
Currently not but the next version of Iconic will support it.
NathanH wrote: Sun Apr 02, 2023 12:47 am Finally, there are several icons which display as blank (totally transparent though width and height are correct when queried) or as a small black box when using the Iconic Plugin. These icons display fine on the Workbench. Can the Iconic Plugin either fail in these cases or tell me via above that it is of #ICNFMT_UNKNOWN so that I can react accordingly in my code? Is there another way programmatically that I can tell there is a problem? Querying the width of the icon and the color of pixel (0,0) tells me that it is the black box case. I don't know how to tell in the transparent case though.
Can you provide an example icon that displays fine on Workbench but not with Iconic?

Re: Help with Iconic Plugin

Posted: Mon Apr 17, 2023 9:13 pm
by NathanH
Hi,

Thanks for responding. When I run that code on the OS that has the icon datatype installed it prints "iconic". Perhaps the datatype breaks rules or something. I thought using the iconic loader would not use the native datatype too.

I don't know how to attach a file to a post so I will send you an e-mail attachment with icons that display improperly with iconic. They include for OS3:
DirectoryOpus.info -- bad colors
Scout.info -- totally transparent
Spud.info -- black dot is displayed

and on AROS:
AROSPDF.info -- totally transparent
Zuneview.info -- totally transparent

These all display fine on Workbench/Wanderer. Thanks.

NathanH

Re: Help with Iconic Plugin

Posted: Sat Apr 22, 2023 7:18 pm
by airsoftsoftwair
Thanks for the example files! I can confirm that they don't render correctly with the Iconic plugin. Will be fixed.

Re: Help with Iconic Plugin

Posted: Mon Apr 24, 2023 5:11 pm
by NathanH
Thanks! Appreciate it.

NathanH

Re: Help with Iconic Plugin

Posted: Mon May 22, 2023 5:33 pm
by airsoftsoftwair
Actually, only the wrong rendering of the PNG icons was a bug in Iconic. This is fixed now:

Code: Select all

- Fix: PNG icons that didn't use an alpha channel weren't loaded correctly
There's no bug in Iconic with the other icons you provided. The reason why you get strange icons with them is that you're querying the standard icon. As a compatibility mode with pre-3.5 systems, GlowIcons also contain fallback icons in case the user's Workbench doesn't have OS3.5+ installed. These fallback icons often look ugly because they are just downsampled versions of the GlowIcons. To get the GlowIcon instead of the fallback icon you need to query icon index 2 instead of 1, e.g. like this:

Code: Select all

LoadIcon(1, "Sscout.info") 
ConvertToBrush(#ICON, 1, 1, 2)
DisplayBrush(1, 0, 0)
This code should give you the correct icon.