Short: free icon.library in optimized ASM code Author: Peter Keunecke Uploader: pkeunecke alice-dsl net Type: util/libs Version: 46.4.516 Requires: 68000 CPU or 68020+ Architecture: m68k-amigaos >= 3.0.0 Date: 2019-10-31EXTERNAL LINK Latest changes: ~~~~~~~~~~~~~~ Since there were graphical glitches on some HiColor screens when ARGB was used for Read/WritePixelArray(), my workaround for these older P96 problems is to transfer RGB data only in versions that support TrueColor like TC020, LD020 and HAM. There are no functional changes in the 68000 and 68020 code. Description: ~~~~~~~~~~~ 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 is a much better choice for gfx-cards now than 68020. 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. Moved into Bonus drawer: "LD020" uses the older line by line direct drawing code because sometimes that runs still faster. 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. 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 $6B2A and replace it with $602A. 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. 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. 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. AROS 68k systems are also supported with LoadModule or RemLib. On Aros 68k with DOpus5 I'd recommend to use IconsToFastMem, but don't use DOnoColormapping and in DOpus5's icon settings enable "Borderless icons are fully transparent", but disable the "Quick icon dragging" and "Use custom dragging routines". The deficons and prefs need to be copied from ENVARC: to ENV:. 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. Downloads: ~~~~~~~~~ Complete pack EXTERNAL LINK Bugfixes and tests EXTERNAL LINK Installation: ~~~~~~~~~~~~ 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 EndIf EndIf You could also load both libraries resident with LoadResident: Version >NIL: icon.library 46 If WARN If EXISTS LIBS:workbench.library LoadResident >NIL: LIBS:workbench.library EndIf LoadResident >NIL: LIBS:icon.library REBOOT EndIf SetPatch ... 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. How to use this with AmigaOS 3.0 already is shown on the disk image IconDemoADF EXTERNAL LINK Added an installation guide for OS 3.9, AGA and FBlit written by Wizardry and Steamworks as PDF file into ThirdParty/FBlit. => EXTERNAL LINK 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. 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. Other commands: ~~~~~~~~~~~~~~ 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. 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. ThirdParty: ~~~~~~~~~~ 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. Distribution: ~~~~~~~~~~~~ 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. Copyright 2007-2019: ~~~~~~~~~~~~~~~~~~~ Peter Keunecke - this is the end -
|