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)
|