@database WarpPNG.guide
@master WarpPNG.guide
@$VER: WarpPNG.guide 2.9 (20.5.2007)
@author "Oliver Roberts (oliver@futaura.co.uk)"
@(c) "Oliver Roberts 1999-2007"
@width 75
@remark Created with Heddley v1.20ß © Edd Dumbill 1994-5

@node "Main" "WarpPNG.datatype 45.9"

    @{b}WarpPNG.datatype 45.9@{ub} - the @{"fastest" link "Speed" 0} 24-bit PNG picture datatype!
         @{"SHAREWARE" link "Registration" 0}          (for 68k, PPC/OS4, PPC/WarpOS & PPC/MorphOS)

         Copyright © 1999-2007 @{"Oliver Roberts" link "Author" 0}, All Rights Reserved.


   @{" Description               " link "Intro" 0} what is this datatype for?
   @{" Disclaimer                " link "Disclaimer" 0} important notices
   @{" Distribution              " link "Distribution" 0} distribution conditions
   @{" Registration              " link "Registration" 0} registering this Shareware software

   @{" Features                  " link "Features" 0} list of features
   @{" System requirements       " link "Requirements" 0} what you need to use this software
   @{" Installation              " link "Install" 0} installing this software
   @{" Preferences               " link "Prefs" 0} descriptions of configurable settings
   @{" Speed                     " link "Speed" 0} information regarding speed issues

   @{" Acknowledgements          " link "Acknowledgements" 0} thankyous and credits
   @{" Support & the Future      " link "Future" 0} support + improvements I intend to make
   @{" About the author          " link "Author" 0} how to contact the author
   @{" History                   " link "History" 0} program history
@endnode

@node "Intro" "Description"
As you've probably guessed, WarpPNG.datatype is a yet another PNG datatype.
The original difference being that it was for owners of PPC cards, and was
targetted specifically at WarpUp (not PowerUp).  Even better, it is fast,
compact, clean, well behaved and fast - a true plug'n'play PPC datatype.
Now though, 68k optimized, and MorphOS + OS4 native versions have been
added, which also benefit from my WarpDT engine.  One of the key features
is its superior speed, hence the name WarpPNG.

I originally decided to write this datatype because no other decent WarpOS
native PNG datatype existed for the PPC, and it is was relatively easy to
implement being based on the same engine that WarpJPEG.datatype uses.
@endnode

@node "Disclaimer" "Disclaimer"
This software is provided "as is", without warranty of any kind, either
expressed or implied, statutory or otherwise. By using the archive and its
contents, you accept the entire risk as to its quality and performance.

Neither Oliver Roberts nor any other party involved in the creation,
production or delivery of the archive and its contents shall be liable for
any direct, indirect, special, consequential or incidental damages,
including without limitation damages for loss of profits, loss of use or
loss of anticipated costs, expenses or damages, and any data or information
which may be lost or rendered inaccurate, even if Oliver Roberts is advised
of the possibility of such damages.

@{b}Do not@{ub} attempt to tamper with the supplied files. Doing so will cause
problems and you may find things start going wrong!
@endnode

@node "Distribution" "Distribution Conditions"
WarpPNG.datatype is shareware, with the copyright remaining with the @{"author" link "Author" 0}
and may be freely distributed legally providing:

   (1) None of the distributed files are changed in any way
   (2) It is not sold for profit and it is not included on any disks
       that are sold solely for profit (includes magazine coverdisks)
   (3) The distribution contents remain complete (see list below)
   (4) WarpPNG.datatype is @{"registered" link "Registration" 0} if it is found to be useful after
       the evaluation period
   (5) Registered user keyfiles are @{b}NOT@{ub} distributed along with copies of
       WarpPNG.datatype

If this software is to be sold for profit, permission must be obtained from
me, the @{"author" link "Author" 0}.

The following files must be present in their original and unchanged form in
any copies of this software:

   Classes/Datatypes/WarpPNG.datatype.020
   Classes/Datatypes/WarpPNG.datatype.030.pch
   Classes/Datatypes/WarpPNG.datatype.040.pch
   Classes/Datatypes/WarpPNG.datatype.060.pch
   Classes/Datatypes/WarpPNG.datatype.mos
   Classes/Datatypes/WarpPNG.datatype.os4
   Classes/Datatypes/WarpPNG.datatype.wos
   Devs/Datatypes/PNG
   Devs/Datatypes/PNG.info
   WarpPNG.guide
   WarpPNG.guide.info
   Install_WarpPNG
   Install_WarpPNG.info
   spatch
@endnode

@node "Registration" "Registration"
WarpPNG.datatype is part of the WarpDT package, and is SHAREWARE, which
means you are expected to register if you find it useful, and wish to
continue using it.  I have decided not to cripple the datatype at all
during the evaluation period, so everybody can judge for themselves if this
product is worth buying.

Registration of the WarpDT package costs Ł15 (GBP), entitling you to
unlimited usage of all the WarpDTs for all CPU/OS versions. At this time,
this one-time registration fee entitles you to full versions of any new
datatypes added to the WarpDT family in the future.

To register, please visit http://www.warpdt.co.uk/ for further details.
@endnode

@node "Features" "Features"
 - Supports both normal and interlaced PNG files

 - Gamma correction options allow the output image to be changed to
   suit your monitor/environment

 - Alpha channel handling can be configured to output RGBA bitmaps, or
   RGB bitmaps either by combining the alpha information internally or
   simply stripping it

 - Highly optimized datatype dispatch engine, and fast PNG decoder,
   resulting in a very efficient, compact and quick PNG datatype

 - Asynchronous file i/o and double buffering techniques (WarpOS only),
   which speeds up image decoding
 
 - Optimized versions for 68020, 030, 040 and 060

 - PowerPC support with native OS4, WarpOS and MorphOS versions

 - Alter the pen allocation precision when images are remapped to an
   8-bit display

 - Specific support for the AmigaOS picture.datatype v44+, when available

 - The dithering feature of the AmigaOS picture.datatype v44+ can be
   configured to your liking (e.g. disabled for 15/16-bit displays)

 - Based on libpng 1.2.18 and zlib 1.2.3
@endnode

@node "Requirements" "System Requirements"
This datatype needs the following in order to work:

 - Kickstart 3.0 or higher
 - picture.datatype v43 or higher
   (i.e. either of the ones supplied with AmigaOS 3.5+, P96 or CGraphX)

 @{i}68k version@{ui}

 - 68020 processor or higher (optimized versions included)

 @{i}WarpOS version@{ui}

 - PPC accelerator card + 68040/060
 - WarpUp Release 5.0 or higher

 @{i}OS4 version@{ui}

 - PPC accelerator card / AmigaOne
 - AmigaOS 4.0 pre-release or newer

 @{i}MorphOS version@{ui}

 - PPC accelerator card / Pegasos
 - MorphOS beta release 1 or higher

Note that a graphics card is @{i}not@{ui} necessary.
@endnode

@node "Install" "Installation"
To install WarpPNG.datatype, simply run the provided installer script by
double-clicking the icon.  This will create a CPU specific version of the
library for you, and install it to SYS:Classes/Datatypes and also installs
the PNG descriptor file to DEVS:Datatypes.  It does nothing else, so you
needn't worry about it messing about with your system :)
@endnode

@node "Prefs" "Preferences Options"
WarpPNG can be configured using the "Datatypes/WarpPNG.prefs" environment
variable.  The preferred way of altering the settings is via the
WarpDTPrefs graphical user interface (requires OS3.5 or higher), available
from http://www.warpdt.co.uk/prefs.html or Aminet
(util/dtype/WarpDTPrefs.lha).

However, it is also possible to alter the settings manually by changing the
environment variable with setenv, according to the following template:

  DITHER_OVERRIDE/K,DITHER_QUALITY/K,DITHER_DEPTH/K/N,PENS_OVERRIDE/K,
  PENS_QUALITY/K,GAMMA_CORRECTION/K/T,SCREEN_GAMMA/K/N,IMAGE_GAMMA/K/N
  ALPHA_MODE/K


@{b}@{fg shine}@{bg shadow}OS3.5 DITHER CONTROL OPTIONS@{ub}@{fg text}@{bg back}

The three dither options all interact with each other and apply only when
at least picture.datatype V44 (OS3.5 or higher) is in use.

By default picture.datatype V44+ dithers images for all target displays
less than 24-bit.  It is debatable whether it's worth using dithering on
15/16-bit displays - for photographic images, the difference is usually not
noticable, but for computer generated images containing smooth colour
gradients dithering produces a noticably better output image.

@{b}DITHER_OVERRIDE@{ub}

Selects what our dither quality setting should override:

  NOTHING    - do not change the dither quality in any circumstances
  DEFAULTS   - only override picture.datatype's default dither quality,
               which is used when the application does not specify it's
               own dither quality value
  APPS       - override the dither quality that an application may set
  EVERYTHING - always use your custom dithering settings

@{b}DITHER_QUALITY@{ub}

Select the dither quality to use when this datatype decides that changes to
the dither quality are required, according to your dither override and
depth settings:

  POOR - simple colour remapping and no dithering (fastest)
  GOOD - slower, higher quality dithered output (default)
  BEST - similar to GOOD, with maybe slightly higher quality output

@{b}DITHER_DEPTH@{ub}

Use this option to select which display depths should use the above quality
setting.  When the target display is deeper than the given depth value, the
above dither quality will be applied to that image.  For example setting
this to 8 will cause the dithering settings to be used for 15/16-bit target
displays, but left untouched when the target display is <= 8-bit.


@{b}@{fg shine}@{bg shadow}PEN SELECTION OPTIONS@{ub}@{fg text}@{bg back}

The pen selection options are only relevant to 8-bit displays, and adjust
the precision to which pens/colours are allocated, which affects the image
quality and number of pens that will get used.

@{b}PENS_OVERRIDE@{ub}

Selects what our pen/colour quality setting should override:

  NOTHING    - do not change the pen precision under any circumstances
  DEFAULTS   - only override picture.datatype's default pen precision
               quality, which is used when the application does not
specify
               it's own pen precision value
  APPS       - only override the pen precision that an application has set
  EVERYTHING - always use your pen precision settings

@{b}PENS_QUALITY@{ub}

Changes the pen precision quality to use when remapping an image to an
8-bit display, in situations according to your pens otherride setting:

  POOR - use only a small amount of unique colours, at the expense of
         image quality
  GOOD - allocate enough pens to ensure a reasonable output image
         quality, whilst not hogging all pens for a single image (default)
  BEST - allocate as many pens as possible/necessary, resulting in the
         best image quality, but when displaying multiple images on the
         same screen, the quality of every image might not be so good


@{b}@{fg shine}@{bg shadow}GAMMA CORRECTION OPTIONS@{ub}@{fg text}@{bg back}

The following options allow you to control the gamma correction feature:

@{b}GAMMA_CORRECTION@{ub}

  ON  - enable gamma correction (default)
  OFF - disable gamma correction support completely

@{b}SCREEN_GAMMA@{ub}

Specify the gamma of your display/screen - all images will have their gamma
corrected to match this option.  Generally, this value should be altered to
match your monitor and display environment (e.g. bright room, sunlight,
dark room, etc).  If you set the screen gamma too low, images will appear
too dark - likewise, images will appear too light if you set it too high.
The default gamma value is 2.2, although the actual value you must give is
the gamma value multiplied by one million - e.g. set this option to 2200000
for a gamma of 2.2.

@{b}IMAGE_GAMMA@{ub}

PNG files may well contain a gamma value, which defines the gamma of that
image.  In this case, the file gamma will always be used.  But, for images
that do not define a gamma value, you can use this option to change the
fallback image gamma.  The default value of 0.45455 should be sufficient in
most cases.  As with the screen gamma, the gamma value must be multiplied
by one million (e.g. 0.45455 -> 454550).

@{b}@{fg shine}@{bg shadow}MISCELLANEOUS OPTIONS@{ub}@{fg text}@{bg back}

@{b}ALPHA_MODE@{ub}

For images which contain an alpha channel, specify how this should be
handled:

  USE     - the alpha channel will be combined with the background and
            image, which is the standard way of handling the alpha
            channel, resulting in a 24-bit RGB bitmap (default for OS3.x)
  DISCARD - completely ignore the alpha channel, allowing you to see the
            image as-is.  This is useful for PNG images containing a fully
            transparent alpha channel, that have been created with buggy
            programs, which would otherwise result in a blank image being
            shown.  Of course, images that contain a meaningful alpha
            channel will not be shown properly using this option.  The
            output of this mode is a 24-bit RGB bitmap
  KEEP    - simply pass the alpha channel data through to picture.datatype
            by creating a 32-bit RGBA bitmap.  IMPORTANT: this mode
            requires a picture.datatype that supports RGBA output, and as
            such this mode is only available under OS4 and MorphOS 1.x
            (default for OS4 & MorphOS 1.x)
@endnode

@node "Speed" "Speed"
@{b}@{fg shine}@{bg shadow}The fastest PNG datatype?@{ub}@{fg text}@{bg back}

The table below shows the time (in seconds) it took to decode 14 different
images on my A1200 603e/240MHz 060/50MHz, with BVision and CGX
picture.datatype, with other tested datatypes configured as close as
possible to WarpPNG's internal settings.  However, I should emphasize that
the figures above are for comparison purposes only - the actual values are
likely to be slightly different (faster or slower) on your system, but I'm
confident that the WarpOS version of WarpPNG is noticably faster than all
alternative PPC datatypes.

The figures speak for themselves...  WarpPNG for WarpOS is at least 75%
faster than other PPC datatypes in most cases (100-300% faster with palette
based and/or smaller files), and around 3 times faster than 68k datatypes
on a 060 (the speed difference will be even greater on 040 systems with a
fast PPC).  Maybe you don't believe these claims - my answer to that is
simple...  Try WarpPNG for yourself and you will see the difference! :)

                                +------------------------------+
                                |@{fg shine}@{bg fill}    PowerPC/68K (dual-cpu)    @{fg text}@{bg back}|
                                +--------------------+---------+
                                |       WarpOS       | PowerUp |
                                +---------+----------+---------+
                                |         |    akPNG 44.112    |
                                | WarpPNG |                    |
                                |   45.9  | PPCLibEmu  PowerUp |
                          bytes |         |            native  |
 +------------------------------+---------+--------------------+
 | 1024x768 24-bit,      833721 |   1.11      2.06      2.26   |
 | 1024x768 24-bit int, 1037008 |   1.47      2.44      2.74   |
 |  779x767 24-bit,      946564 |   1.00      1.82      2.11   |
 |  473x639 24-bit,      377518 |   0.47      0.91      0.98   |
 |  473x639 24-bit int,  459869 |   0.64      1.06      1.17   |
 |  368x463 24-bit,      279896 |   0.34      0.64      0.70   |
 |  251x400 24-bit,      136856 |   0.22      0.43      0.42   |
 |  718x425 grey,        157890 |   0.24      0.49      0.51   |
 |  718x425 grey int,    182522 |   0.32      0.55      0.57   |
 | 1024x768 256 col,     324599 |   0.36      0.77      0.84   |
 |  779x767 256 col,     404245 |   0.36      0.78      0.81   |
 |  473x639 256 col,     163397 |   0.21      0.46      0.44   |
 |  368x463 256 col,     115942 |   0.16      0.34      0.32   |
 |  251x400 256 col,      57056 |   0.11      0.27      0.22   |
 +------------------------------+------------------------------+
  (int = interlaced image)

The MorphOS version is round about the same speed as the WarpOS version
(above), but a little bit faster in some cases.  It's 10-40% faster
than akPNG for non-interlaced images, and upto 2-3 times faster for
interlaced images.  The PNG datatype supplied with MorphOS is somewhat
slower than WarpPNG in most cases.

                                +------------------------+
                                |@{fg shine}@{bg fill} PowerPC only (no 68K)  @{fg text}@{bg back}|
                                +------------------------+
                                |        MorphOS         |
                                +---------+-------+------+
                                | WarpPNG | akPNG | MOS  |
                          bytes |   45.9  | 45.60 | 50.4 |
 +------------------------------+---------+-------+------+
 | 1024x768 24-bit,      833721 |   1.10    1.16    2.17 |
 | 1024x768 24-bit int, 1037008 |   1.26    1.93    2.64 |
 |  779x767 24-bit,      946564 |   0.99    1.08    2.04 |
 |  473x639 24-bit,      377518 |   0.45    0.49    0.61 |
 |  473x639 24-bit int,  459869 |   0.54    0.80    0.77 |
 |  368x463 24-bit,      279896 |   0.31    0.34    0.34 |
 |  251x400 24-bit,      136856 |   0.18    0.20    0.18 |
 |  718x425 grey,        157890 |   0.21    0.24    0.21 |
 |  718x425 grey int,    182522 |   0.26    0.58    0.31 |
 | 1024x768 256 col,     324599 |   0.32    0.37    1.68 |
 |  779x767 256 col,     404245 |   0.33    0.40    1.59 |
 |  473x639 256 col,     163397 |   0.17    0.21    0.42 |
 |  368x463 256 col,     115942 |   0.13    0.16    0.19 |
 |  251x400 256 col,      57056 |   0.08    0.11    0.11 |
 +------------------------------+------------------------+
  (int = interlaced image)

The results for the 68k version are much tighter, with WarpPNG being around
10% faster than Gunther Nikl's excellent PNGdt on non-interlaced images.
For interlaced images, WarpPNG is 58% faster for 24-bit images, and 90%
faster for 8-bit images.  akPNG is slower than both WarpPNG and Gunther
Nikl's PNGdt.

                                      +--------------------------+
                                      |@{fg shine}@{bg fill}           M68K           @{fg text}@{bg back}|
                                      +---------+-------+--------+
                                      | WarpPNG | PNGdt | akPNG  |
                                      |   45.9  |  44.6 | 45.60  |
 +------------------------------------+---------+-------+--------+
 | 1024x768 24-bit,      833721 bytes |   3.17     3.35    4.10  |
 | 1024x768 24-bit int, 1037008 bytes |   3.69     5.85    6.37  |
 |  779x767 24-bit,      946564 bytes |   2.82     3.05    3.94  |
 |  473x639 24-bit,      377518 bytes |   1.25     1.35    1.66  |
 |  473x639 24-bit int,  459869 bytes |   1.48     2.35    2.58  |
 |  368x463 24-bit,      279896 bytes |   0.82     0.92    1.14  |
 |  251x400 24-bit,      136856 bytes |   0.47     0.53    0.68  |
 |  718x425 grey,        157890 bytes |   0.55     0.64    1.04  |
 |  718x425 grey int,    182522 bytes |   0.69     1.31    4.69  |
 | 1024x768 256 col,     324599 bytes |   0.80     0.89    1.58  |
 |  779x767 256 col,     404245 bytes |   0.76     0.92    1.57  |
 |  473x639 256 col,     163397 bytes |   0.36     0.46    0.82  |
 |  368x463 256 col,     115942 bytes |   0.25     0.30    0.57  |
 |  251x400 256 col,      57056 bytes |   0.15     0.18    0.36  |
 +------------------------------------+--------------------------+
  (int = interlaced image)

Note: all tests were performed, multiple times, using Visage, with the
following command line: "visage test.png nopng time test".

@{b}@{fg shine}@{bg shadow}How to make the datatype faster@{ub}@{fg text}@{bg back}

Is there anything that can be done to increase the speed of WarpPNG?  Well,
yes, there are a few patches that you can install which should make things
faster:

 - NewWPA8 (util/boot/NewWPA8.lha on Aminet) should provide a notable
   speed increase on native Amiga graphics - probably won't make any
   difference if you use a graphics card.

 - If you use a graphics card and CyberGraphX, you may want to make
   sure you are using the supplied v43 picture.datatype, as this will
   be faster than the P96 and v44+ picture.datatype on your system.

 - For the 68K versions only, WarpPNG will benefit from any CopyMem
   speedup patches, such as offered by CMQ060, CopyMemQuicker or MCP.

Of course, any other general speed-up patches should help too.

@{b}@{fg shine}@{bg shadow}WarpOS version still too slow!@{ub}@{fg text}@{bg back}

Despite these facts, I'm still disappointed with the relatively slow
performance advantage offered by my 603e over my 060 (approximately only 3
times faster). The main problem is that PPC datatypes still have to use the
68k for reading the data from disk and for creating / writing to the bitmap
time lost for file i/o is negligable as WarpPNG uses double buffered
asynchronous i/o (supports DMA controllers).

The largest bottleneck is that the DTM_WRITEPIXELARRAY method of the
picture.datatype has to be used to write the image data from WarpPNG into
the image bitmap.  As this process is done via picture.datatype, it can
only currently be performed by the 68k.  To give you some idea of how much
of a problem this is for WarpPNG, typically, half of the overall decode
time is used by the PPC to decode the whole image, and the other half is
used by DTM_WRITEPIXELARRAY on the 68k.  And that's on a graphics card -
the time used by DTM_WRITEPIXELARRAY will probably be even greater on
systems using native Amiga graphics. It doesn't take a genius to see that
this is slowing the datatype down, and is the main reason why WarpPNG will
still be faster on a 060 than a 040.
@endnode

@node "Acknowledgements" "Acknowledgements"
PNG support based on the libpng link library by the PNG Development Group,
and the zlib link library by Jean-loup Gailly and Mark Adler.

The WarpOS version was made possible by VBCC, which was used to build and
compile the datatype.  Thanks to Volker Barthelmann and Frank Wille, for
their support and help.

The Spanish installer translation is by Dámaso D. Estévez. The French
installer translation is by Philippe Bovier.

Thanks also to Sam Jordan for WarpOS and helping me out with various
queries regarding it.

Finally, thanks to the OS 3.5 development team - now everyone has access to
a 24-bit picture.datatype, I don't need to bother messing about adding
dithering routines :)
@endnode

@node "Future" "Support & the Future"
Some things that may appear in the future:

 - If I can squeeze any more speed out of the datatype, I'll do so :)

If you have any other suggestions, please @{"let me know" link "Author" 0}.

Future releases of WarpPNG.datatype will be available from either Aminet
(util/dtype/WarpPNGdt.lha) or its webpage:

  http://www.warpdt.co.uk/png.html

If you would you like to know when WarpPNG is next updated, then you may
want to subscribe to my announcement list to receive an e-mail informing
you of the changes as soon as a new versions of any of my products are
released.  To subscribe, send a blank e-mail to

  futaura-announce-subscribe@yahoogroups.com

or go to

  http://groups.yahoo.com/subscribe/futaura-announce
@endnode

@node "Author" "About the author"
If you have any problems with this software, or if you have any
suggestions/queries, please contact me and I will do my best to sort any
bugs out as soon as possible:

e-mail: oliver@futaura.co.uk
   www: http://www.futaura.co.uk/
   icq: 34640231
@endnode

@node "History" "Program History"
@{b}45.9@{ub} (20.5.2007)

 - Updated with libpng 1.2.18.

@{b}45.8@{ub} (22.8.2006)

 - Updated with libpng 1.2.12.
 - Asynchronous i/o now uses dos/SendPkt instead of exec/PutMsg.
 - Updated with the latest WarpDT engine build.
 - MorphOS and WarpOS versions recompiled with VBCC 0.8j.
 - OS4 version now requires kernel 51.4 or higher.

@{b}45.7@{ub} (13.8.2005)

 - Updated with zlib 1.2.3, which includes various bug and security fixes.
 - MorphOS and WarpOS versions recompiled with VBCC 0.8i.

@{b}45.6@{ub} (4.3.2005)

 - Overhauled IEEE math lib usage in the 68k versions, fixing problems
   with precision in the 020/030 versions and removing the restriction of
   only being able to decode one image at a time.
 - Updated with zlib 1.2.2.
 - MorphOS and WarpOS versions recompiled with VBCC 0.8h.

@{b}45.5@{ub} (2.1.2005)

 - Updated with libpng 1.2.8, which fixes decoding of images (caused
   image corruption and crashes) that have an alpha channel, that occurred
   when the DISCARD alpha channel option was active.
 - MorphOS version is now around 5% faster.
 - Previous MorphOS version crashed - fixed.
 - MorphOS and WarpOS versions recompiled with VBCC 0.8g.
 - Updated French and Spanish installers.

@{b}45.4@{ub} (25.9.2004)

 - 68k versions now upto 15% faster.
 - Added a new ALPHA_MODE option called KEEP which allows pure 32-bit
   RGBA output for images accompanied by an alpha channel (only available
   for OS4 and MorphOS 1.x - requires a picture.datatype supporting RGBA).
 - Updated with libpng 1.2.7 and zlib 1.2.1.
 - Added native AmigaOS 4 version.
 - Added Polish installer translation.

@{b}45.3@{ub} (9.7.2003)

 - Fixed a problem reading the prefs file from disks using FFS.
 - Fixed another bug which caused bogus evaluation period warnings.
 - Tweaked installer so that it checks for picture.datatype in MOSSYS:
   as well as SYS: when run under MorphOS.

@{b}45.2@{ub} (5.7.2003)

 - Fixed problems with the evaluation period code causing bogus warnings.

@{b}45.1@{ub} (4.7.2003)

 - PNG files not containing enough data are no longer treated as a fatal
   error.  Now the part of the image that was successfully decoded is
   returned.
 - Updated with libpng 1.2.5 and zlib 1.1.4.
 - Minor optimizations and cleanups.
 - Bumped version to v45 since a stable release has now been reached
   and to reflect the jump to @{"shareware" link "Registration" 0} status.

@{b}44.21@{ub} (19.10.2001)

 - Raised minimum WarpUp requirements from V4 to V5, due to cache flush
   bugs in V4 which cause images to be displayed incorrectly (black
   stripes, corrupt images or completely black images).  These bugs
   affected v44.20.  WarpUp V5 does not have these problems.
 - Cleaned up the WarpOS version, fixing some potential problems that
   could happen when an error occurred.
 - The installer now allows the destination of datatype files to be
   changed.

@{b}44.20@{ub} (24.9.2001)

 - 68k and WarpOS versions now 4-8% faster than before, depending on image
   size/type.  4% speedup for larger images in the MorphOS version.
 - WarpOS version reworked, now working in a fundamentally different way,
   to completely banish any possibility of cache conflicts.
 - Fixed a bug which could cause a system deadlock if the dither control
   or pen precision options were enabled when using picture.datatype V44
   or higher.
 - Optimizations made to the dispatch engine.
 - Updated with libpng 1.2.0.

@{b}44.19@{ub} (20.8.2001)

 - Added option to allow the @{"alpha channel to be ignored" link "Prefs" 119}, for images
   which have one.
 - Now supports the PDTA_GetNumPictures and PDTA_WhichPicture tags.
 - Discovered a bug in the CyberGraphX picture.datatype, concerning
   error numbers which would have resulted in an unknown error being
   reported by application software if bitmap allocation failed - added
   workaround.

@{b}44.18@{ub} (25.7.2001)

 - Faster decoding of interlaced images - 80% faster for 8-bit images
   on 68k and 20% faster on PowerPC.  50% faster for 24-bit images on
   68k and 10% faster for PowerPC.
 - Updated with libpng 1.0.12.
 - PowerPC versions recompiled with VBCC 0.8.
 - Added French strings to the installer.

@{b}44.17@{ub} (2.5.2001)

 - Updated with libpng 1.0.11 (this should have been in yesterday's
   update - blame my ISP's webcache :).

@{b}44.16@{ub} (1.5.2001)

 - Updated with libpng 1.0.10.

@{b}44.15@{ub} (10.4.2001)

 - The built-in image gamma value (used when no value is defined in the
   prefs) was incorrect - fixed.
 - Gamma correction did not work in the 68040 and 060 versions, causing
   images to be mostly black or white if the default gamma values were
   not used.  This was due to a non-working FPU pow() implementation -
   mathieeedoubtrans.library is now used instead.  Does not affect speed.

@{b}44.14@{ub} (4.4.2001)

 - Enabled the gamma correction feature of libpng, and provided some
   preferences options to control it.
 - Added options to control the precision/quality of pen allocations for
   when an image is displayed on a pallette-based display (8-bit).
 - Unfortunately, the all versions are now fractionally (less than 1%)
   slower than before, although interlaced images are now decoded a bit
   faster in the 68k versions.
 - Added Spanish strings to the installer.

@{b}44.13@{ub} (15.3.2001)

 - Added preferences options to configure the OS3.5/3.9 @{"dithering control" link "Prefs" 0}
   feature.
 - The MorphOS version got broken in v44.11 - fixed.

@{b}44.12@{ub} (19.2.2001)

 - The dithering disabler feature (for when the OS3.5/3.9 picture.datatype
   is in use on hi/true colour displays) was flawed, since it only worked
   with images that were eventually attached to windows (e.g. Multiview).
   Now dithering will be disabled in all other cases too (e.g. Workbench /
   DOpus backdrops).

@{b}44.11@{ub} (1.2.2001)

 - Updated with libpng 1.0.9.

@{b}44.10@{ub} (12.1.2001)

 - Fixed a bug in the new startup code, which caused images not to be
   loaded in some cases - e.g. IPrefs failing to load WB backdrops.

@{b}44.9@{ub} (9.1.2001)

 - Recoded much of the startup code, with libraries now not being opened
   on the ramlib context (after advice from H&P).
 - Modified internal structure of the WarpOS version, to totally safeguard
   against cache conflicts (may have been causing rare random crashes).
 - Changed floating point usage of the 68k versions - the 040 and 060
   version now use the FPU directly, while the 020 and 030 versions
   continue to use the mathieee libs (in a safer manner than before).
 - All WarpOS benchmarks recomputed, since WarpOS V5 is a little bit
   faster than V4 (this datatype is a bit faster as a result).
 - The 68k versions are now fractionally faster than before.
 - Added benchmarks for MorphOS.

@{b}44.8@{ub} (7.9.2000)

 - Added a MorphOS native version and 68k version (in 020, 030, 040 and
   060 flavours) to accompany the original WarpOS version.
 - Minor optimizations (code size only - no extra speed :(

@{b}44.7@{ub} (2.8.2000)

 - Around 10% faster decoding of most images!
 - Recompiled with VBCC 0.7d beta, which gives a slight performance
   increase and smaller program binaries.
 - Tweaked compiler optimization options and increased disk i/o buffer for
   enhanced performance.
 - Recomputed all @{"benchmarks" link "Speed" 0}, to ensure correctness after a change in my
   test environment (test files are now on a different HD, due to a
   semi-fatal HD crash on the old partition).

@{b}44.6@{ub} (26.7.2000)

 - Updated with libpng 1.0.8.

@{b}44.5@{ub} (4.7.2000)

 - Updated with libpng 1.0.7.
 - Slightly faster (upto 2%) in some cases.

@{b}44.4@{ub} (27.4.2000)

 - Updated with libpng 1.0.6.
 - Tweaked compiler options and made some optimizations, which gives a
   slight performance increase when decoding 24-bit and greyscale
   images (around 3% faster - 8% faster for interlaced images).
 - Reworked transparency handling.

@{b}44.3@{ub} (22.1.2000)

 - Fixed possible deadlock case (caused everything to freeze/lock-up)
   which usually only occurred when lots of images were being decoded
   simultaneously.

@{b}44.2@{ub} (9.1.2000)

 - When the OS3.5 picture.datatype is in use, dithering is now switched
   off (only) if the image is to be rendered to a hi/true colour screen,
   resulting in much higher performance, with negligable quality loss.
 - Dispatcher now performs some extra functions, which should quash
   possible stability problems.
 - Corrected akPNG WarpUp @{"benchmarks" link "Speed" 0}.

@{b}44.1@{ub} (3.1.2000)

 - Initial release.
@endnode

