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 (elenaelenadomain.it)
|