Short: free icon.library in optimized ASM code
Author: Peter Keunecke
Uploader: pkeunecke alice-dsl net
Requires: 68000 CPU or 68020+
Architecture: m68k-amigaos >= 3.0.0
Support for new TrueColor versions installed on Amikit X, XE
or in freeware distros for more than 10 Euro ended with #538.
The new legal restrictions are explained under Distribution!
Fixed a bug (since #484) in IconControlA(SetWidth/SetHeight).
Fixed the CRC calculation of the "icOn" chunks in PNG files.
Added workarounds for using PNG icons with AsimCDFS, which
expects a normal DiskObject structure without checking that.
PNG icons loaded by AsimCDFS_Prefs are converted into OS 3.5
icons avoiding a later trashing of virtual icons on a CD by
AsimCDFS. If you copy PNG icons directly into ENVARC:AsimCDFS
they won't be loaded anymore after a trashing was detected,
but you can still get deficons by activating WB->"Show All".
However, AsimCDFS_Prefs always causes corrupted memory lists!
TrueColor versions are now able to save the preview images of
Eastern as OS4 icons if zlib.library v3.2 is installed. Then
it's also possible to use "ConvertPNGtoOS4" which makes icons
about 15 % larger but loading 30 % faster. A toggling option.
To avoid issues with tasks of powerpc.library zlib.library is
loaded only on demand by ConvertPNGtoOS4 or saving previews.
Another option is "FakeIconSizeForAfA" that can be used as a
fix to let AfA_OS display OS4 icons written by my library.
It should not be used if you don't need these icons for AfA,
because the small planar images of OS4 icons will waste too
much space on WB 3.1 which looks ugly. This option won't need
"KeepPlanarImages", and let's "KillPlanarImages" work on AfA.
There sometimes was a problem on WB 3.1 with refreshing the
image background when selecting/unselecting icons (conflicts
with Birdie NoIconBorder). This has been solved for the 68020
version. Better use the NewIcons patch for transparent icon
backgrounds with TC020 on WB 3.1.
Fixed wrong redirections from PNG error handling to OS4 code.
Since #533 the low memory handling for the TrueColor buffers
was broken, causing freezes in case of running out of memory.
In some applications like YAM icons didn't have a transparent
background and the deficons were ghosted (i.e. attachments).
For ColorIcons of the type Trashcan the planar images are now
only replaced by internal defaults if there was only 1 image
available (Tool, Project) to allow editing in IconEdit again.
Added a new option "Reduce8PlanesTo3" which changes the depth
to 3 and PlanePick to 7 for planar icons with 8 planes. That
way MWB icons with 256 colors will use the pens 0-7 only. All
other images with 1-7 planes are not changed. This new option
is an alternative to "KillPlanarImages", "KeepPlanarImages"
and the default behavior of my library which usually replaces
all images with more than 3 planes by internal icons. IconEdit
of OS 3.9 has the strange habit to display the first and the
last 4 colors of the screen palette for images with 8 colors.
That's confusing and MWB icons with 3 planes may look wrong.
Fixed the code for "KeepPlanarImages", was broken since #539.
A new OS 3.2 feature is already implemented in v51, untested.
LoadModule seems not to work on recent Aros 68k builds 2020+.
The icon.library has been written completely in optimized ASM
code with IconBeFast 2 already built in. It works much faster
now and is also a lot smaller than the original icon.library.
Added direct support for workbench.library version 39 and 40.
Two main libraries for 68000 and 68020+ systems are included.
And there are a few special versions of the library supplied:
The "TC020" version supports TrueColor for OS4 and PNG icons
with alpha channel and can also save icons in 32 bit formats.
TC020 has 2 buffers for the images. The 2. image won't be un-
compressed anymore to examine it before it is drawn. The new
buffer for the 2. image is created as soon as you select an
icon and is released when the unselected icon is drawn again,
if that is visible in the window. And you can use an optional
command "HoldTCbuffer1" to make the slow icon dragging of the
WB a little faster, but with a higher memory consumption. All
memory is always freed as soon as the window is closed. This
new buffer concept can improve speed from 15% on fast systems
up to 70% on slow Amigas. TC020 or FastWB are a much better
choice now than 68020 for Amigas with 40+ MHz and a gfx-card.
Made a new experimental "FastWB" version to achieve a faster
and more responsive TrueColor icon dragging on Workbench 3.5,
3.9 and 3.1.4 for slower Amigas. This is not a 100 % perfect
solution, because it still can happen that some parts of the
window where you select the icons are not refreshed after the
dragging, but that's not a big problem, since you can always
update the window from the WB menu. My fix already tries to
take care for any window switching, scrolling, resizing and
also has a timeout of 1 second after the last icon movement
to avoid a later graphical damage from menus or requesters
opening suddenly over the active window. Try it out and tell
me about any issues or enjoy the speed. For best performance
use FastWB dragging together with my option "HoldTCbuffer1".
FastWB, Aros, LD020 and Polish versions are in the Bonus dir.
The "hm020" and "HM020" are supporting HAM6 and HAM8 screens.
This gives you much nicer HAM icons for Workbench 3.x than on
normal OCS/ECS/AGA screens. HAM screenmodes can be selected
with MUI Screenmode Prefs or tested with my screenmode icons
if the corresponding monitor drivers are already installed.
The best 68000 setup I could find was a combination with the
workbench.library 45.127 loaded either by LoadResident or by
SetPatch v44. Using one of the original WB-Libs v44 - v45.127
has many advantages. No icon frames, it consumes less ChipMem,
it's faster and it's the only way to swap images with WB-info.
++You can also use the workbench.library 45.194 from OS 3.1.4.
This library can now display the 32 bit ARGB icons of OS4 on
any AGA screen with the normal 8 bit color mapping of OS 3.5+.
WB:icon->info will convert these icons into the OS 3.5 format!
The old style planar images of the OS4 icons are replaced now
by the smaller internal default images since many were broken.
Added support for displaying Dual-PNG icons on any AGA screen.
Icon snapshot converts your PNG icons into the OS 3.5 format!
PNG and OS4 icons with only one image will automatically get
a darker second image with a simple glowing effect around it.
On 020+ you will see a requester in case PNG or OS4 TrueColor
icons need to be converted into the OS 3.5 format. It can be
allowed or prevented for a single icon, in drawers or always.
This format has the advantage of getting small files and fast
icon loading, although there's hardly a visible quality loss.
A zlib inflate function is already embedded for uncompressing
the OS4 and PNG images. No need for the external zlib.library.
A direct drawing mode for all gfx-cards in HiColor quality is
is now available. The PowerIcons patch isn't required anymore
and should be removed now. The direct drawing on Hi/TrueColor
screens is really fast, even faster than normal color mapping.
The 68000 version has no direct drawing support builtin, since
there are no gfx-cards or drivers available. And because FBlit
also won't run on a 68000 CPU, it's impossible to use FastMem.
Other new features are the ghosted deficons (50% transparent)
and the optional outline text for icons on the Workbench v44+.
Furthermore, you can enable shadow text for icons on WB 3.5+.
Generating the shadow text is a lot faster than outline text.
Deficons without a transparent color defined are an exception
to allow Eastern to display its preview pictures still opaque.
If you don't like transparent deficons call IconGhostingOff.
Or you can add the tooltype "NoGhost" to particular deficons.
A synchronization of the Ram Disk icon with Sys/def_RAM.info
in ENV: and ENVARC: is working on all systems including DOpus5
and AmiShit (without icon_lib.exe). Thus, you won't need Copy
or MakeLink in your startup-sequence to create RAM:Disk.info.
The ghosting of the Ram Disk icon is disabled now forever! :)
Volume names starting with "ram:", "ram disk" or "RamD" are
supported up to a length of 10 characters including the ":".
The first 2 examples accept upper and lower case characters.
The library has a color reduction routine for PNG and OS4 ARGB
icons which is based on 15 bits for the first 128 colors now.
The comparison is done with less bits step by step when more
colors are required. The resulting quality is close to HiColor.
It uses a checkerboard pattern now for mixed colors to achieve
a better dithering quality. Alternately the brightness of the
pixels is pushed up or pulled down by 2. It's simple and fast.
Added a palette occupation table to the color reduction. The
table can avoid up to 200 color compares and save some time.
The cache for the screens colortable is built just once after
booting and will be updated only if the number of shared pens
has changed. The colormapping and the bitplanes for the second
image of any icon won't be done before the icons are selected.
Icon.library has two new shell commands "IconUpScaling" and
"IconDownScaling". You can use them at runtime to enlarge the
icon images to 150 % or to reduce them to 66 % of their width
and height. This works with all PNG, OS 3.5 and OS 4 icons,
but not with NewIcons or oldstyle planar icons. NewIcons can
be converted, of course. Calling one of the new commands for
a second time switches the scaling off again. Please, don't
get confused when saving scaled icons to disk, because they
are updated and scaled again immediately. Switch the scaling
off after writing is done and then reopen the window. Try it.
Don't be surprised to see the "Format Change" requester also
for the OS 3.5 icons since they are temporarily converted to
the TrueColor format which allows the creation of new mixed
colors for the additional inserted pixels.
This icon.library won't waste ChipMem for any Workbench icons.
Set Prefs/Workbench to use other memory or WBCTRL IMT=ICONFAST.
OS 3.1.4 does not need any memory settings made by the user.
A new space optimization routine for writing is included now.
It's always activated, regardless of the option settings, and
it rebuilds the colortables from scratch closing possible gaps
and avoiding multiple entries with the same RGB values. The
new and shorter data compression code should also be faster.
The icon images are now always compressed, but the RGB color
tables on the other side will not be compressed. It's faster.
This icon.library can also be used without conflicts on AfA_OS
since release 4.7. But AfA has its own Icon_Lib.exe and will
do most of the icon drawing itself if loaded from AfA_OS_LIBS:.
I'd recommend to use my optional instruction KeepPlanarImages
with TC020 to keep also planar images with more than 8 colors
alive when you are saving OS4 icons. This is a workaround for
AfA_OS to let it display my OS4 icons. Call KeepPlanarImages
in your startup-sequence above LoadWB to fix this bug in AfA.
The Aros version in the Bonus drawer now always uses FastMem.
AROS 68k systems are also supported with RemLib by Thomas Rapp.
ie. add "RemLib >NIL: icon.library" somewhere above SetPatch.
Allow copying of deficons to ENV: again by commenting PAT out:
Copy >NIL: ENVARC: ENV: ALL NOPRO NOREQ ;PAT "~(def_#?.info)"
The DefIcons tool from Stephan Rupprecht or OS3.9 can also be
used on Aros together with a config in ENVARC:deficons.prefs.
Enable "Borderless icons are fully transparent", but disable
the "quick icon dragging" in the DOpus5 settings for icons.
Added support for the OS 3.1.4 function BumpRevisionLength()
to make copies of icons with long file names under the new WB
possible, like it could already be done internally since WB
v45.130 with the help of WBCTRL MNL=102.
The TC020 version displays Eastern preview icons in TrueColor.
Use the OS 3.9 picture.datatype 45.17 for best image scaling.
If you want to create perfect icons for pictures permanently
use Image2Icon + i2iGUI and select the OS4 TrueColor format.
Complete pack http://aminet.net/package/util/libs/IconLib_46.4
Bugfixes and tests http://eab.abime.net/showthread.php?t=64079
http://aminet.net/package/util/wb/SwazInfo18b install by hand
BoingBags 3+4 with other monitor drivers:
Additional structure information is appended to my source code.
On 3.1.4+ just copy icon.library_68020 to LIBS:icon.library.
On all high-end systems with a gfx-card TC020 is recommended!
The 68000 version has no support for all that needs an 68020+.
Of course, it's required to load the icon.library into memory
if you want to use it with AmigaOS 3.0/3.1. This can be done
either with LoadModule, LoadResident or by using a custom ROM.
(LoadModule may need the options NOMEMFKICK and IGNOREVERIFY)
There is just one limitation: the OLD workbench.library will
not reload the icons after a screenmode change and thus the
OS 3.5 colors will not be remapped then. This needs a reboot.
Please put SwazInfo into WBStartup to replace WB-Information.
If you don't want to load the icon.library resident and want
to avoid a reboot, I would recommend RemLib from Thomas Rapp:
If EXISTS Libs:icon.library
RemLib >NIL: icon.library
If EXISTS Libs:workbench.library
RemLib >NIL: workbench.library
Instead you can also load both libraries resident as follows:
Version >NIL: icon.library 46
If EXISTS LIBS:workbench.library
LoadResident >NIL: LIBS:workbench.library
LoadResident >NIL: LIBS:icon.library REBOOT
If you have SetPatch v44 installed then don't load the wblib
or iconlib with LoadResident or LoadModule. It wastes memory.
The Envarc:FBlit.cfg for WB 3.1 and for WB 3.1.4+ is supplied.
Which FBlit.cfg version depends only on the workbench.library.
The library will prefer to use FastMem when FBlit is detected.
How to use this with AmigaOS 3.0 already is shown on the disk
image IconDemoADF http://eab.abime.net/showthread.php?t=64079
Added an installation guide for OS 3.9, AGA and FBlit written
by Wizardry and Steamworks as PDF file into ThirdParty/FBlit.
It's now possible to install an alternative CPU version of the
icon.library in a subdirectory of LIBS:. If LIBS:icon.library
is compiled for 68000 then you can add the alternative version
as LIBS:68020/icon.library. If LIBS:icon.library is compiled
for 68020+ then add an alternative as LIBS:68000/icon.library.
The correct version will be loaded automatically by iconlib.
This feature works with SetPatch v44 or RemLib by Thomas Rapp
but not with LoadModule, LoadResident, BlizKick or from a ROM.
HAM6 and HAM8:
Copy the icon.library from the HAM6 or HAM8 drawer into LIBS:.
HAM screenmodes can only be selected with MUIScreenmodePrefs.
You also have to install my HAM6 or HAM8 FullPalette.prefs in
ENVARC:Sys to get the required 16/64 base colors and need to
call FPPrefs in your s-s. Never change the pens 0-15 or 0-63!
The HAM screenmode files need a corresponding monitor driver.
You can change the tooltype from ACTION=USE to ACTION=SAVE if
you don't want to install MUIScreenmodePrefs on your system.
There are also some files with my palette in the HAM drawers,
which can be used to create and optimize wallpapers or icons.
For the last 4 pens of the palette it's impossible to get the
4 MWB colors. Better remap bad looking MWB icons to pens 4-7.
hm020 and HM020 are an extended TC020 with TrueColor support,
but the delayed second image and icon ghosting are disabled.
Upgraded the HAM6 and HAM8 versions to 51 in order to display
the Eastern picture preview icons in full HAM quality instead
of dithered images. Of course, I know that a HAM-WB is more a
tech demo than something useful, but HAM pictures are nicer.
DOpus5 has no real support for HAM screens. It only works if
you choose the display setting "Use Workbench". On DOpus5 it
is recommended to use my "DOnoColormapping" command and enable
the "custom dragging routines" for best speed. If you want to
use other P96 monitor drivers for HAM like SuperPlus, HighGFX
or Xtreme and get FreeMem Gurus from DOpus5, try MemTrailer.
A completely new approach makes the icon loading with DOpus5
a lot faster. Instead of delaying the colormapping, it is not
done at all anymore on Hi/TrueColor screens when you disable
it with my option "DOnoColorMapping" in the startup-sequence.
But you have to enable "Use Custom Drag Routines" in DOpus5.
I've also made a fix for the big memory loss of DOpus 5.82 in
the "Custom Drag Routines" on P96 plus a better transparency
masking for the icon images when these options are activated.
You will get a faster icon loading without using slow planar
images. For TC020, FastWB and my Aros version "HoldTCbuffer1"
is also recommended for optimal speed and soft borders on RTG.
You can find my fixed executable in the Bonus drawer. Rename
it and replace DirectoryOpus if you're starting from LoadWB.
The DOpus 5.82 patch of AfA_OS for Eastern and DefIcons from
Bernd Roesch can still be used with my fixed DOpus5.83, since
it's not a new C-compilation, but just an edited binary file.
Running DOpus5 and WB at the same time usually works, but if
both use different screen depths, results are unpredictable.
Systems with workbench.library v44+ can now enable the frames
exclusively for old planar + MWB icons with PlanarFrames1/2/3.
The number at the end of PlanarFrames1-3 sets the frame size.
Changing the settings in Prefs/Workbench will keep this option
alive. So you can easily select another frame size for planar
icons only if one of the supplied instructions PlanarFrames1-3
is called in your startup-sequence.
AllFramesOn1/2/3 and AllFramesOff are for systems with WB v44+
on OS 3.0-3.5. Some color icons may never get any frames when
they have an internal "Frameless" flag enabled which can only
be changed with OS 3.9 IconEdit. By calling PlanarFrames1/2/3
once, all color icons will always remain frameless, even after
a subsequent call of AllFramesOn1/2/3. OS 3.9 needs that.
A faster colormapping mode is now optional available and can
be enabled by setting icon quality to bad in Prefs/Workbench.
On OS 3.0/3.1 you can add the instruction FastColors below
IPrefs in your startup-sequence. Works with a 512 byte cache.
I would recommend to call FastColors on all standard Amigas.
You could also boost the icon loading by converting PNG icons
via position SnapShot and saving all OS4 icons with WB-info.
An additional instruction is GrayscaleOnOff which can be used
to render the icons in shades of gray only instead of color.
It can be enabled in Prefs/Workbench by setting icon quality
to bad like it's done for the faster colormapping and calling
the command GrayscaleOnOff before LoadWB. Users of WB 3.0/3.1
need both calls in their s-s: GrayscaleOnOff and FastColors.
To enable the outline text call OutlineIconText before LoadWB.
For shadow text call ShadowIconText from the startup-sequence.
In Prefs/Fonts you should set the text and the field color for
the text background and then switch back into text only mode.
If you start shadow/outline text or grayscale at runtime then
please update your icons and call WB-Reset from the tools menu.
IconsTo24BitDmaMem can be used on systems with 16-bit memory
to save some of the 32-bit memory for your real applications.
To make this possible just call IconsTo24BitDmaMem from s-s.
The instruction "InvertGhostingMask" for the startup-sequence
can avoid the disappearing of ghosted deficons while dragging
them on the Workbench. It's a fix for a shifted dragging mask.
Don't invert the mask as long as you have no dragging problem.
Added the option "KillPlanarImages" to replace old images of
color icons and NewIcons by pointers to the internal 4-color
images or a simple black dot if ChipMem is used for blitting.
This option can save dozens or a few hundred kByte of memory
consumption when loading lots of color icons. By default this
option is disabled and only tiny planar images with up to 8
pixels width or more than 8 colors are replaced. Old icons or
MWB icons are not changed. I also added KeepPlanarImages, but
that is only required if you've enabled the killing and want
to stop it again. On OS 3.9 you can simply test these options
by disabling color icons in Prefs/Workbench or using ChipMem.
The TrueColor mode can be disabled with "ConvertTrueColor" to
create icons in the OS 3.5 format or "PreserveTrueColor" to
switch back to TC mode. You will need to update the windows.
DaxB has written the script "OpenWin.rexx" as a benchmark for
for opening and displaying a window filled with many icons.
I've also included 2 modified versions of Rebel's palette with
16 colors which can be setup by copying FullPalette.prefs into
Envarc:Sys and calling C:FPPrefs from the S:startup-sequence.
This gives a much better balanced color mapping in many cases.
And finally, a recompiled version for WB 3.0+ and 68000 CPUs
of Stephan Rupprecht's excellent CopyIcon tool is also added.
If you have any problems with my library or want to discuss new
features then you can either send an email to the "uploader",
or use my icon.library threads at A1k.org or EnglishAmigaBoard:
But I won't reply in any other forums, at Facebook or over IRC.
Thanks to all users who've sent bugreports or made suggestions.
This program is freeware. I don't give any warranties. You are
using this program on your own risk and you are responsible for
any damage it could cause to your system. This icon.library is
now completely independent and free of the AmigaOS copyright :)
It's not allowed to distribute or install the TrueColor versions
of this icon.library with or on AmiKit X or XE or any freeware
distro or software package for more than 10 Euro. This applies
to all v51 versions, LD020 and the Aros version. They may switch
into a low quality mode after a while and it's not recommended
to use them on AmiKit X or XE, which are not supported anymore!
But you can still use new 68000 or 68020 versions or any other
versions of older releases up to 46.4.538 without restrictions.
- this is the end -