Some small fixes since 477: The flag for the 2. planar image
was sometimes set, although only one planar image existed.
Sometimes wrong system colors appeared after using ArtEffect.
Reworked the color reduction from TrueColor to 256 colors for
the OS4 and PNG icons to achieve a better dithering quality.
It uses a checkerboard pattern now to mix the colors instead
of vertical stripes as before. Alternately the brightness of
the pixels is pushed up or pulled down by 2. Simple and fast.
Optimized the colorscans to improve the color palette a bit.
Difficult icons with lots of colors are looking better now.
Added a palette occupation table to the color reduction. The
table can avoid up to 200 color compares and save some time.
Safer "Ram Disk" icon detection. It checks the first 8 chars
now instead of only 4. This avoids possible conflicts with
other labels like "Ram Test" or "Ram Tools" for your disks.
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.
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 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:
one has the extension "LD020" and uses the older line by line
direct drawing code because sometimes that runs still faster.
Another version is "SB020" which is based on LD020 and tries
to achieve softer borders around the icon symbols. This new
effect with 50 % transparent pixels works on gfx cards only.
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.
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.
Calling IconControlA(GetImageData2) will now also create the
delayed planar image which is required by the PowerIcons 1.06
for icon dragging. You don't need to call "NoDelayedImage2".
After aborting PowerIcons the delay works immediately again.
But remember that PI displays and saves only 1 PNG image! ;)
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.
And now a simple hack for all the GhostBusters: If you really
don't like icon ghosting to be enabled by default then take a
HEX-editor, scan the icon.library for $74FF4AAD and change it
into $74004AAD. Also scan for $6B2C and replace it with $602C.
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! :)
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.
The color reduction from truecolor to the OS 3.5 format has
been improved a little. This should make color banding effects
less visible on low resolution screens. This is simply done by
pushing the RGB level of every second pixel just a bit higher.
All my efforts to use some simple dithering code for spreading
the color error could not beat the results of this method. ;-)
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.
DOpus Magellan 5.8 can be used with the lack of some features.
A workaround for the DOpus5 problem to open disk drive windows
without real icons when the deficon was not of the type disk.
DOpus5 always tried to do this by itself, but it did not work
when DOpus5 had to deal with a project or tool icon as source.
Further, a completely new approach makes the icon loading with
DOpus5 a lot faster. Instead of delaying the colormapping, it
is not done at all on Hi/TrueColor screens anymore when you
disable it with the command DOnoColorMapping in your startup-
sequence. In order to get the real images while dragging the
icons around, you have to enable "Use Custom Drag Routines"
in the DOpus5 settings. But the icon loading is already much
faster without the optional command DOnoColorMapping and also
on AGA screens you can see some small speed improvements, too.
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.
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_OS has its own Icon_Lib.exe and will
do most of the icon drawing itself if loaded from AfA_OS_LIBS:.
AROS 68k systems are also supported with a fix for AllocList.
Please, install LoadModule LIBS:icon.library before SetPatch.
Complete pack http://aminet.net/package/util/libs/IconLib_46.4
Bugfixes and tests http://eab.abime.net/showthread.php?t=64079
Additional structure information is appended to my source code.
On OS 3.5+ just copy icon.library_68020 to LIBS:icon.library.
Icon.library_LD020 may be faster on some systems. Try it out!
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
You could also load both libraries resident with LoadResident:
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.
An Envarc:FBlit.cfg for WB 3.1 and 1 for WB 3.5+ are supplied.
Which FBlit.cfg version depends only on the workbench.library.
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.
The library will prefer to use FastMem when FBlit is detected.
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.
Without OS 3.5+ 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.
IconsTo24BitDmaMem can be used on systems with 16-bit memory
to save the faster 32-bit memory for your real applications.
To make this possible just call IconsTo24BitDmaMem from s-s.
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.
An other new 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. Both can't
be combined at the same time. Call the command before LoadWB.
WB 3.0/3.1 users need 2 calls: GrayscaleOnOff and FastColors.
If you start shadow/outline text or grayscale at runtime then
please update your icons and call WB-Reset from the tools menu.
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.
As a bonus, the command FixCGX_ReadPixelArray is supplied for
users of CGX software to solve problems with other programs
caused by a ReadPixelArray() bug. Icon.library won't need it.
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.
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 :)
My (PhxAss) source code is supplied and can be used by anybody.
Thanks to all users who've sent bugreports or made suggestions.