Short: PowerIcons source code, last 68k release Author: elena@elenadomain.it Uploader: elena elenadomain it Type: util/wb Version: 1.06 Requires: AmigaOS 3.9, VBCC C Compiler, libz Architecture: generic LICENSE ------- -These sources have been released for free to the Amiga community but I still maintain the (c)opyright on them; -Anybody using them, entirely or partially, inside his own project must specify their original author in a note; -ANY USAGE OF THESE SOURCES OR PART(S) OF THEM FOR COMMERCIAL PURPOSES OR IN COMMERCIAL PROGRAMS IS STRICTLY FORBIDDEN! PLEASE READ ----------- It's many years since I released PowerIcons to the Amiga community. At those early times, AmigaOS4 developers were still showing no intention to implement a 32-bit icon support in the new icon.library and Workbench. On MorphOS's side, Ambient was still a very poor, little useable and crashful desktop, even if first introducing a png-based 32-bit icon system. I had to chose an icon format for PowerIcons, and thus, just to avoid introducing a new, propertary one, I decided to follow the only one available, i.e the single image, png-based format used by Ambient. Many things changed or evolved since - but one thing apparently survived: an entire community of people, both users and developers, still stuck to the old, 68K-based AmigaOS 3.9, possibly running on emulators as UAE. And still going mad with patches over patches over patches in order to make their desktop and operating system looking a bit less obsolete. Since some years I abandoned definitely any developing activity finalized to improve my system in some way, or even just involving direct use of the AmigaOS. I'm still using an Amiga-based system for my works of graphician and researcher (along with PCs, of course) but I now limit to write C programs when I need them, and which do mainly calculus, using OS calls only where strictly needed. Read: I'm no longer an "Amiga developer" in the strict sense. All my previous public projects are abandoned. But recently I heard notice of some 68K fanatics out there still fighting with icons and conflicts between patches, and related projects. I also heard that somebody is seriously interested in gaining access to the sources of PowerIcons in order to update it, fix compatibility with other aggressive patches, maybe introducing support for the double-image icons, or even integrating the code in other bigger projects. So I decided to release them, finally. After all, if somebody is interested, I have nothing to gain or to loss. So enjoy them. And good work. ABOUT THE SOURCES ----------------- First please don't blame me if you don't like my coding style. I kindly accepted to release them for free and in the state they originally were, so send your criticisms or insults to >NIL: The makefile also is a stupid mess, I never liked playing with makefiles, please accept. The sources compile with VBCC, but they can be easily adapted for any other C compiler. LibZ is required for linking because the uncompress() function is used by GetPNGPicture.c. The sources were conditionally valid for both 68K and MorphOS PPC. You simply drop all PPC stuff (#undef __MORPHOS__) (mainly entry points of the patched functions). Note that the PPC version was never really useful to anybody except me. Ambient now is mature enough. The special AmigaOS4 version is not included here, but the same thing applies: AmigaOS4 has its native 32-bit, double image icon support since times, PI for OS4 had (by luck) a very short useful life. Sorry, the code is not extensively commented, just because it wasn't initially intended for publication - only some comments useful to the developer, myself, were present. You need deep knowledge of AmigaOS, in particularly of icon.library, and some headaches, before you can understand many passages. Many tricks also were emploied to integrate the patch acceptably inside a system which was never designed to support 32-bit icons, and to work with DefIcons and RAWBInfo! And also, many tricks and data caches used to speed up icon loading, drawing and saving back were studied and implemented. Evil things... still using what I would call a very compact and essential code, when compared to the standards. So please put your hands and mind on at your own risk! Patched IconLibrary funcions are referenced as XYZ_New() with acronyms, eg. GIT_New is GetIconTagList, DIS_New is DrawIconState, GIR_New is GetIconRectangle, etc. The icon format, so all tags for tooltypes, etc. was deduced by reverse engineering the very first png icon format used by early verions of Ambient - and partially extended to cover specific Workbench options and needs. Please don't email me asking help because I honestly don't remember almost anything of what I wrote and so I would be of little or no help. I put my hand in that code last time at least seven years ago! Please also note that many portions of the code may look strange because they were source-level optimized, i.e written keeping in mind how the resulting ASM would look like, for speed purposes. I'm in no way an "academical" programmer. One thing I remember is the alpha-blitting functions, where I choose a very little compromise between mathematical correctness and speed (in the case somebody will notice something strange with the relative code). The code is assumed to be (empirically) bug-free - even if, as always stated, conflicts with other concurring patches could never be guaranted. For any other info and detail about PowerIcons, please refer to the documentation from the original PowerIcons package found on Aminet. Elena (elena@elenadomain.it)