]> git.imager.perl.org - imager.git/blobdiff - Changes
- check that the result of fileno($fh) is defined rather than simply
[imager.git] / Changes
diff --git a/Changes b/Changes
index 7eab3a6036907aba048f310179d0f149d7a13b49..e6ef2bfd4af3b4489b5c59ae7e4139085e899062 100644 (file)
--- a/Changes
+++ b/Changes
-Revision history for Perl extension Imager.
-
-0.01  Thu May  6 15:25:03 1999
-        - original version; created by h2xs 1.18
-
-0.02  Mon May 10 20:20:20 1999
-        - Added PPM writer, and a new return type to
-        be used to return undef() from a function returning
-        (int)0.
-
-0.03  Thu May 20 23:23:23 1999
-        - Added Pseudo image handling thingies, now
-        you can use your own get and put pixel routines.
-
-0.04  Mon May 24 22:14:55 1999
-        - Rewrote parts of jpeg support.
-
-0.05  Tue May 25 23:40:01 1999
-        - Added png support with libpng
-        fixed error reporting and return types from
-        some format routines.
-
-0.06  Wed May 26 19:05:39 1999
-        - Fixed Data::Dumper being used when it shouldn't have
-        added feature checking to see at run time if 
-        certain formats are avaliable.
-        removed some ancient C++ style comments that hadn't 
-        been properly removed, some out of bounds errors in ppm.c
-        fixed tests so missing features are skipped.
-
-0.07  Thu May 27 03:15:00 1999
-        - Fixed the typemap for i_img and i_color so that you can pass
-        a null pointer to them without getting a warning when warnings
-        are enabled. Maybe this is counter perl but it greatly increases
-        the usability of the functions.
-
-0.08   Fri May 28 14:13:21 1999
-         - Added support for gif via, giflib or libungif.
-         gif is so ridden with patent issues but the user
-         can decide which library to use since they have the same
-         include files and calling interface.
-
-0.09   Mon May 31 17:52:32 1999
-         - Added image scaling per axis - faster than doing both
-         axes at the same time.  The current method uses lancoz
-         kernel and filtering. But more types should be added -
-         including: nearest neighbor, linear, and bicubic.
-
-0.10   Mon Jun  7 03:25:54 1999
-         - Added T1 postscript font handling. It's very primitive
-         at the moment but creative people can do nice stuff 
-         with it.  Currently it is not possible to have it 
-         generate an image of the correct size for a given string 
-         but that is on the way.
-
-0.11   Mon Jun  7 14:43:35 1999
-         - Added T1 features for direct to image rendering in 
-         a single color.  fixed some debug messages going to 
-         stderr instead of a log file.
-
-0.12   Tue Jun  8 02:58:43 1999
-         - Fixed bugs in jpeg.c when loading images. Also specified
-         prototype behaviour to on in the Imager.xs file. The
-         Makefile.PL step doesn't complain anymore so that is
-         hopefully fixed.
-
-0.13   Wed Jun  9 06:55:58 1999
-         - Fixed Imager.xs for init_log call.  Minor fixes here
-         and there.
-
-0.14   Thu Jun 10 14:11:22 1999
-         - Rewrote most of the logging stuff so that it is now
-         possible to remove all logging from the XS part of the
-         module.  Also some primitive check of memory usage was
-         added. Claes Jacobsson sent in some filters, inverter,
-         contrast and a noise filter.
-
-0.15   Mon Jun 14 08:13:29 1999
-          - Wrote minor enhancement on the calling syntax list.
-          Started on the object interface - added better support
-          for quering avaliable filetypes.  Fixed memory leaks in       
-          most loaders. New filters from Claes in this version
-          are bumpmap, postlevels and mosaic.
-
-0.16    Wed Jun 16 20:54:33 1999
-          - Added fixes to the BEGIN and END parts, added writer
-          function for the OO interface. Also added basic IPTC 
-          reading support for jpegs.  Also a few filters have been
-          added to the OO interface.
-
-0.17    Thu Jun 24 11:09:15 1999
-          - Added dynamic loading stuff - It's still missing a nice
-          global symbol table. This will be fixed in next release.
-          also calling the plugins is not all to easy at the moment.
-
-
-0.18    Mon Jun 28 12:31:33 1999
-          - Added global symbol table - plugins now need a symbol
-          table pointer in them. When the module is loaded it is
-          set to point at the global symbol table. Also some barebones
-          Makefile.PL has been made in the dynfilt directory - it works
-          on my system - I hope it does on yours.
-
-
-0.19    Fri Jul  1 15:00:03 1999        
-          - Added a way new scaling method for creating easy previews.
-          It only uses nearest neighbor, so it's doesn't look very nice
-          but it may be better for applications like remote sensing.
-
-0.20    Mon Jul  5 10:15:37 1999
-          - Added and rewrote documentation.
-
-0.21    Mon Jul  6 19:15:37 1999
-          - Fixed a bug in the scaling routine - it wasn't
-          handling 0< cases.
-
-0.22    Sat Oct  9 07:04:14 1999
-          - Added a new method to write gif images - now 
-          it is possible to have a part of a palette fixed.
-          this is very usefull if one needs to make sure that
-          some color like white is in the pallete.  This method
-          also allows some ditherding and gives better colormap
-          than the mediancut from the gif libraries.  It does
-          need much more cpu power though.  Hopefully later versions
-          will be faster.
-
-0.23    **************** Internal release only
-          - Fixed the %instances bug - caused ALL memory to be leaked.
-          Added real noise function - need feedback on how it should
-          be used. Also box(), and polyline are now in place.  Polygon
-          is missing but antialiased line drawing with integer endpoints are
-          done but should be replaced with a version that can have 
-          floating point endvalues. Two noise filters addded.
-
-0.24    **************** Internal release only
-          - Converted i_color into an object from a reference, so now it's
-        giving an object instead of a void ptr or an integer or something.
-
-0.25    **************** Internal release only
-          - Added basic Truetype functionality - still needs a rewrite
-        to be decent. Currently it's a port of a demo program that
-        uses an awful amount of global variables and there is much IO since
-        no caching of glyphs is done.
-
-0.26    Tue Nov 23 03:57:00 1999 > Development release <
-          - Added transformations so that an image can be wrapped.
-        To achive decent speed a C based stackmachine is included. As a result
-        transformations need to be specified in rpn (postfix) notation. It
-        also can use the Affix::Infix2Postfix class to do the conversion for it.
-
-0.27    Tue Dec 28 03:57:00 1999 > CPAN release <
-          - This is a bugfix version mostly, thanks to claes for pointing
-        out the problems - fixed palette saving wasn't working correctly after
-        version 0.24 - rather surprised this didn't crash everything.
-        Also fixed that for t1 fonts the bounding box wasn't being reported 
-        unless the font had been used before.  This is either a bug in t1lib
-        or a mistake in it's documentation.  Another lingering bug since 0.24
-        what that $img->box() wasn't creating it's default color properly.
-        Added i_tt_text() method and more debuging to the truetype routines.            
-        truetype testcase fixed and old debug rubish removed.
-
-0.28    Tue Jan  4 05:25:58 2000 > CPAN release <
-          - Only fixes to truetype test and transformation tests.
-        Thanks to schinder of cpan testers for testing and reporting.
-
-0.29    Tue Jan  4 21:49:57 2000 > CPAN release <
-          - fixes to get rid of warnings under pre 5.005, 
-        Fixed broken preproccessor directives to work on non gnu
-        compilers.  Fixed DSO test on HPUX - both code errors and
-        HPUX creates .sl instead of .so so the tests were failing.
-
-0.30    Sun Jan  7 05:00:06 2000 > Bunch of Alpha releases <
-          - An attempt to automate installation.
-
-0.31    Sat Jan 15 03:58:29 2000 > Fixes fixes fixes <
-          - Fixed a bug pointed out by Leolo where loading gifs
-        skips the first line of the imageload() has been
-        by read() - for now load is an alias for read.  It will
-        be removed in the future.  Also, fixes dynamic loading on
-        systems that prepend an underscore to symbols.  At the present
-        the only system that I know of that needs this is OpenBSD.
-        BUT YOU MUST RECOMPILE ALL OF YOUR OLD MODULES AGAINST THIS BUILD.
-        Added getchannels() method ( How did I manage to delay this
-        untill now ).  Some document changes but nothing substantial.
-        Also fixed the png read/write routines to handle all colorspaces
-        and images with alpha information.  Also now it's possible to 
-        have Imager guess the format of the files to load or save 
-        when passing files to read or save from the filename.
-        Also all of the tests except dynamic loading now pass on OS/2.
-
-0.32    Tue Feb 29 17:26:00 2000 CPAN RELEASE
-          - Added the getcolorcount method.  Fixed interlace handling
-        on png images.  Fixed the missing channel count in crop()
-        method. Rewrote most of t1lib database stuff - created color
-        and font classes.  T1 stuff is mostly done - TT things were
-        rewritten too and now include most of what is needed for
-        pixmap caching.  Added documentation for fonts.  Comments have
-        been added to some of the relevant c-routines.  Added a copy()
-        function in Imager.xs and a corresponding method name.
-        Changed the underlying data type for the raw XS images from
-        pointers to objects - this will hopefully catch the most
-        basic errors and keep the segfaulting down.  This means that
-        all of the underlying XS calls for readjpeg, readgif, readpng 
-        and readraw do not take the first parameter any more.  
-        Made fixes to keep it not spewing warning on 5.004 perl.        
-
-        **** If you had any code that didn't use the OO interface ****
-        ****         It will probably not work any longer         ****
-        
-0.33    Beta -- No final
-          - Fixed the end message from Imager 0.32.  Destroy called
-        on an empty image.  Did some work on the polygon method.  
-        Some clean up in the Makefile.PL script.  Fixed a buffer
-        overrun in the t_transform in Imager.XS.  Fixed the 
-        error handling in the jpeg loader.  It now correctly
-        returns undef if a load on an image fails.  It also 
-        sends the error messages to the log file.  Added errstr()
-        method to the image object.  Added a new way to read()
-        objects from scalars.  So far this is only implemented for
-        jpeg, png and gif.  ppm and raw soon - as always if someone
-        wants to do an overhaul on the ppm stuff feel free.  It seems
-        like such a basic format that interfacing with a library is more
-        work than implementing all of the needed routines instead.
-
-0.34    Beta -- No final
-          - Bunch of documentation fixes, backed out ppm code.
-        Put in TonyC's giant transform2 patch.  Fixed the patch
-        to make it ansi compliant.  Fixed a bunch of bugs in the
-        Freetype code with regard to vertical and horizontal 
-        positioning and bounding boxes.  Cleaned up a lot of the
-        code so it runs under -Wall.  Code that is still in 
-        development such as the polygon converter do not compile
-        cleanly.  Fixed the non antialiased versions of truetype
-        dump to image routines.  Also removed the FIXME for the 
-        hardcoding of antialias in the Imager string method.
-        Fixed sign error and a missing cache of the bounding box
-        calculation for the rasterize function.  Removed some
-        debugging code I forgot to remove.  Added iolayer.h
-        and iolayer.c but they don't do anything for now.
-        
-0.35    pre2 -- No time yet
-          - Fixed some compile warnings for various files under -Wall.
-        Added functionality for jpeg reading of seekable files, it's not
-        really working yet.  This version is pretty much *not* working.
-        Do not install unless you intend to do a lot of development.
-        Repeat - it doesn't even pass tests (but it compiles).  Ok now reading
-        jpegs works from scalars, my guess is that it also works from non
-        seeking sources such as sockets or pipes.
-
-0.35  pre3 - No time yet
-          - Added the *right* patch from Tony which combines
-        the common code from i_readgif and i_readgif_scalar into
-        i_readgif_low.  Added tiff reading support through iolayer.
-
-0.35  pre4 - No time yet
-          - Added tiff writing (no options) support through
-        iolayer.  Also made some small fixes for the iolayer reading
-        (was always doing two reads when one was needed).  Patched the
-        Imager::read() call so that it now uses a mixture of old and new
-        functions.  
-
-0.35  pre5 - No time yet
-          - Fixed various gnu'isms in the c code (some bugs in the link list
-        implmentation).  Fixed missing #skip codes when gif format is not
-        present in any form.  Added fixes for 5.004_04 in the transform2 function.
-        Made sure it compiles cleanly with sun's cc.  Switched from a .jpeg
-        for transform2 check to a .ppm file so it runs when jpeg is not 
-        present.  Added a test for tiff files in t10formats.t.
-
-
-0.35  pre6 - No time yet
-          - Fixes to Makefile.PL.  Should find freetype includes on more
-        distributions now.  Ran tests on Solaris and Hpux, minor fixes.
-        Compiles with some warnings on with both hpux and solaris' cc.  
-        Made some minor changes to the documentation.  Fixes to tiff.c log
-        code.
-
-0.35  pre7 - No time yet
-          - Fixes 64 bit bug on freebsd.  While libtiff mirrors the effects of
-        lseek it's toff_t is a uint32, while lseek uses off_t which can be a 64
-        bit quantity.  Added the IM_LFLAGS environment variable to help
-        people with broken libgifs (that want to link with X).
-
-0.35  Sun Jan 28 19:42:59 EST 2001
-          - More makefile fixes, fixed a few signedness warnings.  
-        Checked to see if it compiled cleanly on Solaris and HPUX.
-        Fixed a 5.004_04 warning and added more ENV flags for makefile.
-
-0.36    Mon Jan 29 09:36:11 EST 2001
-          - String as 0 or "" caused an error in $img->string().  Fixed a 
-        documentation error invoving string() method syntax.  Merged a patch
-        for non antialised truetype fonts.  Fixed an error in the Makefile.PL
-        which caused a makefile to be generated that bombed with sgi's make.
-
-0.37    Mon Tue 30 09:36:11 EST 2001
-          - Several documentation fixes.  Pod documentation for almost every
-        function in image.c.  Added sys/types.h include in iolayer which was
-        causing problems on various linux systems.
-
-0.38    pre1 - No time yet
-          - Fixed a braindamaged fix on the Makefile.PL file.  Moved the 
-        code for Imager::Color into lib/Imager/Color.pm.  Wrote some pod
-        about how it works.  Made the names of Imager::Color XS routines
-        all begin with ICL_ and used the prefix rules of XS to get nice names
-        in perl.  Found a bug (not fixed) in how XS handles 
-        returning an object to an object it had as a parameter (double
-        free).  
-
-0.38    pre2 - No time yet
-          - Fixes lots of for documentation, patch for freetype bounding
-        box handling.  Split put code for Imager::Font into Font.pm and added
-        more documentation for Font.pm.  Added string local ascender and
-        descender for tt fonts.  Note that this needs to be added to t1 fonts
-        before 0.38 final.
-
-0.38    pre3 - No time yet
-          - Fixed an in consistency in the bounding box functions for t1
-        fonts.  Now both versions get the 6 argument bounding_box method
-        described in Imager::Font.  Started converting the comments in 
-        font.c so that they are viewable by doco.perl.  Added two examples
-        of filters.  Need to make them more usefull and then add more
-        notes than are in compile.txt.
-
-
-0.38    pre4 - No time yet
-          - Completed adding pod comments to font.c, tiff.c and iolayer.c.
-        Those along with image.c should now have every single function 
-        described in pod format.
-
-0.38    pre5 - No time yet
-          - Replaced ppm.c with pnm.c which adds support for pbm/pgm/ppm
-        files ascii and binary formats.  Added patches for the gif routines.
-        Patched some of the color quantizing routines (Leolo and TonyC).
-        There is one bomb and one warning in this test, and frankly I don't
-        see why they are suddenly there.
-
-0.38    pre6 - No time yet
-          - Patch from Tony that fixes infix when Parse::RecDescent is present.
-        Checked some cases where malloc/free were used instead of mymalloc/myfree.
-        Added bufchain iolayer code.  You can now write to a chain of buffers and
-        later slurp it all into a single perl scalar.  Found some oddity of t/t10
-        test not giving the right return value when malloc debugging was enabled.
-        Fixed some of the logging code and the malloc debugging options.  Added 
-        more tests for tiffs.
-
-0.38    pre7 - No time yet
-          - Added i_gradgen code and put it into the filters hash.  Think a
-        seperate pod for filters would be a good idea.  Also removed some of the
-        debugging code from the iolayer.  Added pod comments to filters.c and
-        looked over the code.
-
-0.38    pre8 - No time yet
-          - limited Win32 support, Imager installs and builds using VC++,
-        but there's no image/font format support yet.
-
-0.38  pre9 - No time yet
-          - Added lots of color quantization code from Tony with benchmarks.
-        Also fixes ugly stack overrun in old version.  Added fixes for the lmfixed
-        problem.  Four of them, let's see which is fastest.  This version adds
-        some voronoi partitioning - it's dog slow but it's a reference implementation
-        to check if faster algorithms are doing the right thing [tm].  Added a check
-        for giflib 3.
-        - Win32 support for libpng
-        - fixed set_internal creating 2 refs to one object
-        - Win32 support for jpeg
-        - Win32 support for tiff
-        - base level error reporting code added, I still need to modify
-          older code to use it
-        - fix translate=>'giflib' handling of single-colour images.  
-          Previously a single colour image would cause an error in 
-          MakeMapObject().
-        - fix t/t10formats.t tests against giflib3
-        - added test for transparent gifs
-        - minor doc fixes for transparent gifs
-        - make it less error-prone to write transparent gifs
-        - documented the options for reading raw images
-        - Changes switched to use spaces for formatting
-        - switch gif.c to new error reporting with related changes to
-          Imager.xs, Imager.pm
-        - each of the image formats now have their own test file,
-          extracted from t10formats.t, usually with som extra tests
-        - Added flip() and docs to Imager.pm and i_flipxy to image.c.
-          Added testcases too.
-        - Fixed an overflow bug in png.c
-        - added the colors parameter to Imager::read() which receives 
-          the arrayref of colours that i_readgif(_scalar) returns
-        - fixed a problem in makemap_addi in quant.c where only the first
-          image was compared against the palette when the palette was being 
-          refined.  I screwed up on this originally (TC).  This is the other
-          half of a fix for Leolo's lmfixed problem <sigh>.
-        - makemap_addi() now only puts colours into the palette that it
-          found while optimizing the palette (so we don't get 256 colour
-          palettes for 2 colour images :)
-        - initial implementation of a row-based interface to low-level
-          images (for performance)
-        - changed Imager::read() for GIF so that the arrayref pointed to 
-          by the ref supplied in colors contains Imager::Color objects 
-          instead of more arrayrefs, keep this interface stable until we 
-          can make an informed choice about i_readgif()
-        - incorporated Micksa's faxable tiff support, treating as a type
-          of tiff rather than a separate format
-        - t/t70newgif.t now checks for gif support
-        - added the convert() method
-        - Added support for transparent to alpha conversion during loading
-          of png files.  Note that libpng 1.0.1 is broken in handling this,
-               we know that 1.0.5 works.
-        - support for writing PGM (portable gray map) files
-        - Fix for i_gifread_low() for images with only a local and no global
-          colormap and an abort if no colormap is present (which is legal
-          in gif).
-        - several fixes to i_readgif_low()
-       - Fixed crop() method so that it is consistent with documentation.
-        - make clean now removes the testout directory
-       - added tests for the OO interface for tiff, added an option to
-         choose the resolution for fax tiffs, removed some unused code,
-         fixed minor problems with Imager::write() handling of image types
-        - changed README note on libgif bug to refer to t105gif.t instead
-         of t10formats.t
-
-0.39  pre1
-       - split Imager::Font into a base, *::Type1 and *::Truetype
-        - writing faxable tiff now allows 2 and 4 channel images
-        - virtual image interface - 8-bit/sample images
-        - paletted images
-        - 16-bit/sample images
-        - masked images
-        - writing non-8bit images to raw
-        - writing   ''       ''   to tiff
-        - i_convert support for high-bit images and paletted images
-        - i_copy for high-bit and paletted images
-        - tests for rubthru
-        - rubthru can now rub a 2 channel image over a 1 or 3 channel 
-          image
-        - rubthru for high-bit images
-        - i_readgif_multi functions, which return all the frames from a
-          GIF file, along with a bunch of meta-information as tag
-        - OO interface to tags
-        - OO interface read_multi() to read multi-image files (just GIF
-          so far)
-        - documentation for the multi-image GIF reading and tags
-        - rotate() method with rotate by steps of 90 degrees (and docs)
-        - fixed a bug in i_img_pal_new_low()
-        - added gaussian to the filters list
-        - documented the individual filters
-       - fixed the right-hand side of bounding boxes for TT fonts 
-         where the last character overlaps the advance width (eg. 
-         italic fonts)
-        - added rotation by exact amounts in degrees or radians,
-          implemented using the matrix idea from Addi.  The procedural
-          matrix transformer is exposed, but still needs testing (as XS)
-          and needs an OO interface, hopefully with some helper tools,
-          like the preset interface with ->convert().
-        - MY::postamble() in Makefile.PL included a broken rule 
-          (Makefile.PL 1.13.2.5)
-       - support for GDI fonts under Win32
-       - made that work for cygwin too (needs the w32api package)
-       - freetype1 support under Win32
-       - t1lib support under Win32
-       - fixed a minor bug in font.c (invalid font files caused a SEGV)
-       - checked cygwin for both t1lib and freetype1
-        - freetype 2 support
-        - exposed the matrix_transform() function to the OO interface
-        - added Imager::Matrix2d convenience class
-        - support for setting the resolution when writing to PNG
-        - retrieve physical resolution to tags when reading from PNG
-        - found an XS bug in the interface to i_tags_add()
-        - fixed handling of writing text to a channel with freetype2 
-          (sometimes the edge of a character would damage the edge of the 
-          previous character)
-        - some utf8 support for freetype2
-        - some vertical layout support for freetype2
-        - named parameters for specifying colors, with quite a few options.
-        - glyph size issues for freetyp2
-        - minor problem in handling of canon option
-        - low-level bmp writing (moving it to laptop)
-        - Windows BMP reading and writing
-        - added OO interfaces for the mosaic, bumpmap, postlevels and
-          watermark filters
-        - added t/t61filters.t to test the filters
-        - fixed some problems in jpeg handling from the exp_represent merge
-        - fixed buffer flushing for wiol jpeg code
-        - added some tests that will hopefully catch it in the future
-        - added the OO interfaces to the mosaic, bumpmap, postlevels and
-          watermark filters, and documented them
-        - fixed a sample size conversion problem in i_gpixf_d() etc.
-        - added simple color representation conversion functions (used
-          in i_fountain().)
-        - added the fountain filter:
-          - creates gradients similar to paint software
-          - 90% support for GIMP gradient files
-          - OO interface and documentation
-          - Imager::Fountain for building/loading fill definitions
-          - named value translation for filters
-        - added a generic fill mechanism
-          - created versions of i_box() and i_arc() that can fill using
-            generic fills
-          - solid generic fills (with alpha blending if asked for)
-          - hatched generic fills (with some options)
-          - fountain generic fills
-          - sample code to generate an examples page
-        - improved the scale* hatches a bit
-        - add the flood_fill() method (using the existing i_flood_fill)
-        - implement i_flood_cfill() based on i_flood_fill, and 
-          add general fills to the flood_fill() method
-        - generalize the combine parameter to get different ways of 
-          combining the fill with the target
-        - the tt driver (freetype 1) didn't handle the first character
-          hanging off the left of the character cell
-        - the tt driver produces some artifacts when characters
-          overlapped
-        - error handling for writing jpeg images
-        - writing paletted images to GIF now uses the image palette
-          if it's small enough
-        - $img->arc() now calls i_circle_aa() if a complete circle is
-          being drawn in a plain color
-        - image based fills
-        - unsharp mask
-        - make i_conv() clamp the bottom end of the samples range too
-          (makes it useful for sharpening)
-        - adjust ascender/descender values for FT1.x to avoid losing
-          descenders (specifically the bottom of "g" in ImUgly.ttf or
-          arial.ttf at 14pixels)
-        - added tga.c to read targa images
-        - added i_bumpmap_complex to do more accurate bumpmapping
-        - added an image type with doubles as samples
-        - change i_copy() and i_sametype() to handle double/sample images
-        - added basic POD to trans2.c
-        - transform2 now uses the error interface
-        - myrealloc() is implemented for malloc debug mode
-        - now buffer chains are freed when destructor for Imager::IO
-          is called
-        - adjusted the Lanczos window width for the scaling code and
-          added code to normalize the filter generated to preserve
-          intensity scaling.
-        - constant edge extension for scaling operations
-        - better error checking of automatic fill conversions
-        - fix some range checking for the fountain fill segment type
-
-0.39  pre2
-       - A few scattered mymalloc/free fixes
-        - io_buffer implemented as a source for io layer and
-          XS and perl OO code added.
-        - Test for iolayer t/t07iolayer.t implemented.
-       - Fixed known memory leaks.
-       - gif screen was wasn't being calculated correctly
-
-0.39    Released: Nov 2 2001.
-
-0.40  pre1
-        - anti-aliased polygon fill
-        - add general fill to polygon fill
-        - make color values smarter for the drawing functions
-        - implemented reading and writing the TIFF text tags
-        - added prototypes for some of the derivative tags functions
-        - read paletted tiff images into Imager paletted images
-        - on partial tiff image reads, set the i_incomplete tag
-        - tiff reading now uses the error stack
-        - use the error stack value from reading bmp files
-        - fix an error message in bmp.c
-        - added has_chars() method to Imager::Font::FreeType2
-        - freetype 2 bounding box function didn't know UTF8 (doh!)
-        - write paletted images as paletted to tiff
-       - initialize counter for packing 4 bit data
-        - don't allocate hashboxes as locals since it overflows the 
-         stack by default in Darwin
-        - applied T1 afm patch from Claes Jacobsson
-        - split IM_INCPATH and IM_LIBPATH with $Config{path_sep}, so they
-          work on Windows
-        - Added memory pools for easy cleanup of temp buffers
-        - Added read support for sgi .rgb files.
-        - io_new_fd() now creates a FDSEEK io object
-        - implemented i_readgif_wiol()
-        - Imager->read() now uses i_readgif_wiol();
-        - extend callback iolayers at C and Perl levels
-        - implemented i_writegif_wiol()
-        - split out Perl iolayer initialization into private methods
-        - add tests for each type of iolayer in t50basicoo.t
-        - read/write multi-image tiff files
-        - tests in t50basicoo.t for multi-image/file
-        - ASCII PBM files were reading white as dark gray (255 vs 1)
-        - modify the Freetype2 font code to pick it's own encoding
-          rather than using whatever strange translation FT2 happens to 
-          pick
-        - modify the FT1 font code to use the first encoding as a default
-          if we don't find a unicode encoding
-        - use the glyph bbox to calculate the glyph bitmaps for rendering
-          with FT1 rather than the global ascender/descender.  This helps
-          with fonts that have broken metrics.
-       - fix calculation of descender for FT2, it was calculating the
-         minimum decent rather than the maximum for the characters in 
-         the string
-       - didn't set default for bounding_box() utf8 parameter (caused a
-         warning when calling bounding_box() on a FT2 font with no utf8
-         parameter)
-       - Added lib/Imager/Draw.pod documentation of primitives.
-       - Added lib/Imager/Transformations.pod, some docs of simple transforms.
-       - Added lib/Imager/ImageTypes.pod, draft of ImageType pod.
-       - Added lib/Imager/Filters.pod, draft of Filters pod.
-       - Added lib/Imager/Engines.pod, draft of Engines pod.
-        - added getpixel() and setpixel() methods
-        - added Artur's OSX dlload() emulation, with minor changes
-        - modified _color() to work around a 5.6.0 bug
-        - replaced old gif options with tags
-        - we now log which memory block is being freed before giving 
-          an error on it being re-freed
-        - fixed stupid bug in deleting tags
-       - fixed minor pod errors involving &gt;
-
-0.40pre2
-        - make t1log optional, defaulting to off.  You can enable the log
-          with Imager::init(t1log=>1) (Ticket #369)
-        - quote a few hash key strings to prevent warnings on 5.004
-        - modify quantization code to handle 1 channel images 
-          correctly (Ticket #365)
-        - make channel pointer to i_gsamp() const int * so we can pass
-          const arrays
-        - handle the presence of the default broken giflib better,
-          by giving them some more prose about the problem, and skipping
-          all but the first test that fails with the broken giflib
-        - i_box_cfill() went into an infinite loop on fountain fills
-          or fills on images with more than 8-bits/sample
-        - hide more of our Darwin dlload emulation to prevent runtime
-          symbol conflicts
-        - use INT2PTR() and PTR2IV() macros instead of direct casts to
-          prevent pointer vs int size warnings on 64-bit builds of perl.
-        - add our own INT2PTR and PTR2IV definitions when perl doesn't
-          supply them
-        - difference() method
-        - hide (with static) or rename many symbols that could possibly
-          cause conflicts with other libraries or perl
-        - Fix runaway cache problem for freetype1 font cache.
-        - Added version logging when log is started.
-
-0.40
-        - difference() wasn't setting an alpha channel when the input
-          image didn't have one
-        - improve crop() documentation, see
-          http://perlmonks.org/index.pl?lastnode_id=155767&node_id=155428
-        - handle the first "buggy giflib" test more portably.  Previously
-          it used fork() which caused problems on systems that didn't have
-          a real fork().
-
-0.41
-        - skip() in testtools should be skipn() and it should use the 
-          loop variable for the test number
-
-0.42
-        - quote the 'min' parameter to scale in Imager::Transformations
-          and at least mention it in the docs beyond the examples
-        - document the values for the read() and write() method type 
-          parameter
-        - support UTF8 text with Freetype 1.x 
-        - second parameter to SvPV() must be of type STRLEN
-        - Doc pathces from cogent.
-        - Fixed out of bounds access on bitmap for flood fills.
-        - some char * vs unsigned char * casts missing on OSF1 v4.0
-        - some enums had , on the last item in datatypes.h, which OSF1
-          didn't like
-        - Compaq C 6.4 (OSF1) claims to be C99 but doesn't provide 
-          stdint.h, don't try to use it under OSF
-        - fix missing initialization in tags.c
-        - Change i_draw to i_line and have it use Bresenham's line
-          drawing algorithm.
-        - support has_chars() method for Freetype 1.x
-        - fixed log message for i_ft2_has_chars()
-        - fixed some broken checking for UTF8 in FT2 code
-        - handle UTF8 strings passed to T1 low-level functions
-        - handle flags for underline, strikethrough and overline for T1
-          low-level output functions
-        - OO interfaces to UTF8 and flags, for now leaving the flags as
-          specific to Imager::Font::Type1
-        - mc_web_map was storing colors with an alpha of 0
-        - update the URLs for libpng and zlib
-        - Fixed empty string handling for tt font driver.
-        - Fixed tiff handling of images all contained in a 
-          single strip (rowsperstrip = -1) and added a hack
-          for images missing the rowsperstrip tag.
-        - Fixed default parameters for crop()
-        - Added Preliminary specialized scaling code.
-        - Added image type detection.
-        - added smoke test for win32 font bounding_box() method, and
-          fixed the problem reported in ticket #1748.
-        - update t37w32font.t to use i_line() instead of i_draw()
-        - replaced non-portable call to rint() with (int)(dy+0.5) (so we
-          can build on Win32)
-        - the default tifflib warning handler was crashing on Win32
-          under ActivePerl, when an unrecognized tag was read from the 
-          file.  For now we'll just drop the warnings in the bit bucket.
-          (Ticket #1513)
-        - the code to read multiple tiffs didn't handle files with more
-          than five images correctly, causing a memory overrun.
-        - fix some minor test code hiccups
-        - implemented i_t1_has_chars(), tests for same
-        - added ExistenceTest.{pfb,afm,ttf} for testing $font->has_chars
-        - tests for Imager::Font::Type1::has_chars();
-        - tests for Imager::Font::Truetype::has_chars();
-        - internal and external bounding box calculations now use
-          the same hint flags as text output for Freetype 2.x
-        - made the i_foo_bbox() interface more expandable by using
-          symbolic constants for the sizes and array offsets
-        - added a / character to the ExistenceTest.foo fonts that 
-          overlaps the right side of the character cell, to test the 
-          advance width reporting.
-        - added advance width to the i_foo_bbox() interface, and 
-          implemented it for FT2, FT1 and Type 1
-        - Imager::Font::bounding_box() now returns an Imager::Font::BBox
-          object in scalar context.
-        - implemented $font->align() text output method, for simple output
-          of aligned text
-        - created Imager::Font::Wrap::wrap_text to perform simple text 
-          wrapping
-        - FT1, FT2 and T1 fonts now support the face_name method
-        - FT1, FT2 and T1 now support the glyph_names() method
-        - Debian woody supplied FT2.0.9, which didn't support 
-          FT_Has_PS_Names(), so we use the FT_HAS_GLYPH_NAMES() macro 
-          instead.
-        - some older FT1 don't define TT_MS_LANGID_ENGLISH_GENERAL,
-          which we use, define it if freetype doesn't.
-        - Added extra options to rubthrough() so only a subpart of
-          source image is used.
-        - the image fills didn't handle filling with source images of
-          less than four channels correctly
-        - added comment support the postfix transform2() expression
-          parser
-        - transform2() can now produce images with other than 3 channels.
-        - added a correct T_AVREF input mapping to the typemap to 
-          simplify parameter lists
-       - shut off one of the align subtests in the ft2 test.  The triggering
-         is likely an ft2 bug.
-        - removed some half written scaling optimization code.
-       - added /sw/lib and /sw/include to the Makefile.PL code for osX.
-       - removed all references to the www.eecs.umich.edu page and changed
-         them to imager.perl.org ones.
-
-0.43
-       - added log() and exp() functions to transform2()
-       - change the getpN() functions in transform2() to set a 
-         reasonable alpha if the input image has no alpha
-       - document the constants that transform2() defines
-       - skip the right number of tests when FT2 isn't available
-       - This version pushed to CPAN because of skip problem in FT2 test.
-
-0.43_01 Fri 8 Oct 2004
-       - only call FT_Get_Postscript_Name() on FT 2.0.6 and later
-       - put the IM_LIBPATH and IM_INCPATH values first in the search
-         path so the builder gets their local versions if desired rather
-         than the system versions they might be trying to avoid
-       - document the exp() and log() transform2() functions
-       - document the constants normally set by transform2().
-       - refer the user to appropriate documents in the example in 
-         Imager.pm
-       - change the list of documents in Imager.pm to move the document 
-         names out of the =item lines so we can make them into links
-       - the scale() method now produces a warning when called in
-         void context.
-       - font.c now only uses the defined T1Lib error codes
-       - update ppport.h and remove the duplicate definitions from
-         Imager.xs.  Had to mangle ppport.h to prevent duplicate global
-         function definitions.
-       - newer versions of tifflib require that all of the function
-         pointers passed to TIFFClientOpen be non-NULL, the mmap() and
-         munmap() pointers were always NULL and the sizeproc was
-         sometimes NULL.
-        - there would be a link or load time error on m_init_log() if
-          Imager was built with IM_NOLOG, fixed by renamed init_log()
-          to m_init_log() in log.c (thanks to Takumi Yamani)
-        - moved some variable definitions to the right place
-        - the Win32 font driver bounding box function now returns the 
-          right number of values (both thanks to Takumi Yamani)
-        - the Win32 font driver now uses DEFAULT_CHARSET rather than
-          ANSI_CHARSET are the lfCharSet value for the LOGFONT,
-          as suggested by Takumi Yamani.
-        - fontfiles/ExistenceTest.{pfb,ttf} weren't marked as
-          binary in the CVS repository (caused test failures if you
-          built from CVS on Win32)
-        - Makefile.PL should now handle INCLUDE or LIB with spaces in them
-          correctly on Win32.
-        - the pnm reader read maxval for ppm/pgm files and then ignored it,
-          it's now validated (0 < maxval < 65536) and used to scale
-          samples.  Note that binary ppm/pgm files (P6/P5) with maxval >
-          255 result in an error, since I didn't want to add new features
-          just yet, just get the code that's there working correctly.
-          Thanks to Elthek on rhizo for reporting this and help in 
-          tracking it down.
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=7465
-        - added a bunch of tests for reading pnm files.
-        - previously, if you supplied to_paletted and empty color map
-          and set make_colors to 'none', quant_translate() would segfault.
-          This was because it was making the reasonable assumption that
-          you'd have colors to map to.  quant_translate() now checks there
-          is at least one color and return NULL if there isn't.
-        - i_img_to_pal() now does error checking of the value returned by
-          quant_translate().
-        - Imager::to_paletted() now checks for success/failure of 
-          i_img_to_pal() correctly and does appropriate error handling.
-        - i_writegif_low() did no error checking on the result of
-          quant_translate(), it now does
-        - we now test that trying to write a GIF image with no palette
-          allowable by the quant options is a failure.
-        - Imager::write() was doing nothing with the result of the call 
-          to i_writegif_gen(), in particular it wasn't returning () on 
-          failure.
-        - added tests for paletted image handling and the methods
-          specific to those images
-        - the XS for i_setcolors() was missing the OUTPUT clause for
-          RETVAL, and hence wasn't returning failure on failure.
-        - supplying a sufficiently small scaling value could make the
-          scale() method return an image with zero height or width.
-          Several of the above together resolve 
-          https://rt.cpan.org/Ticket/Display.html?id=7467
-        - the void context warning for scale() now includes the callers
-          filename/line (instead of the default of Imager.pm line 15xx)
-        - Imager->new will now return undef if the dimensions or number of
-          channels specified for an image are out of range.  An error
-          message can be retrieved with Imager->errstr.
-        - added the C<builtin> color specifier and the 
-          Imager::Color::Table class which defines those colors.
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=2593
-        - added the equals() method to Imager::Color.
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=2238
-        - prevent a test warning introduced by the above
-        - the rotate() and matrix_transform() methods now accept a 'back'
-          parameter specifying a background color.  This is only used
-          where there is no source data (think of the corners around an
-          image rotated 45 degrees) and it not combined with transparent
-          pixels from the source image.
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=6140
-        - removed a warning generated by the new matrix_transform() test
-        - added a method index to Imager.pm
-        - corrected "flood fill" to "flood_fill" in Imager/Draw.pod
-        - removed compose() method from Imager/Transformations.pod since
-          it isn't implemented yet
-        - the image resulting from a crop is now the same type as the
-          source image (paletted vs direct, bits/sample)
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=7578
-        - the parameters to crop() weren't handled correctly in most 
-          cases other than supplying left,top,right,bottom.
-        - clarified the documentation for crop() providing more detail
-          and more examples
-        - the edges of the cropped area are now cropped against the 
-          edges of the source image
-        - cropping to zero width/height is treated as an error (no
-          image is returned and $src->errstr has a message)
-          Resolves https://rt.cpan.org/Ticket/Display.html?id=7581
-        - built 0.43_01 for testing
-
-0.43_02 Mon 26 Oct 2004
-
-- the changes to scale() had some problems with integer vs floating point
-  calculations (only caught in tests under perl 5.8.5 <sigh>)
-- the FT2 glyph_names() method didn't do correct error handling
-  when the string parameter wasn't supplied
-- i_ft2_glyph_name() accepted only an unsigned char as the
-  character code to get the name for, which meant it
-  didn't work for unicode characters \x{100} or above
-- the XS for i_ft2_glyph_name() had a similar problem
-- added NameTest.ttf to be used in checking unicode glyph
-  names
-- added reliable_only optional parameter to the glyph_names()
-  method so you can ignore theresult of FT_Has_PS_Glyph_Names()
-- handle errors given by i_ft2_glyph_name() a bit more
-  correctly
-- the FT1 glyph_names() method didn't do correct error handling 
-  when the string parameter wasn't supplied
-- some memory allocated when creating a callback IO object (io_new_cb)
-  wasn't being released (detected with valgrind)
-- the testtools.pl match[nx]() functions escapes the test string on 
-  test failure a bit better
-- the XS code for i_tt_glyph_name() used unsigned char to store a 
-  unicode character when it should have used unsigned long.
-- the XS code for i_t1_glyph_name() used unsigned char to store a 
-  unicode character when it should have used unsigned long.
-- resolves https://rt.cpan.org/Ticket/Display.html?id=7949
-- the type 1 glyph_names() method didn't do correct error handling 
-  when the string parameter wasn't supplied
-- renamed io.h to imio.h to prevent problems building under cygwin.
-  resolve https://rt.cpan.org/Ticket/Display.html?id=7948
-- i_writegif_low() wasn't setting the returned global palette, which
-  meant a rubbish palette was returned to the user (detected with valgrind)
-- built 0.43_02 for testing
-
-0.43_03 Wed 8 Dec 2004
-
-- change the "double-include" protection macro that imio.h uses.
-- updated download locations for the various libraries that Imager 
-  depends on.  Added some advice for cygwin.
-- more information on gif library versions in README and Makefile.PL
-- creating an image where the size of the allocated image buffer would
-  overflow an integer would cause too small a buffer to be allocated.
-  This could potentially be a security hole.
-  partly resolves https://rt.cpan.org/Ticket/Display.html?id=8213
-- set i_format to jpeg for jpeg files and test for it
-- set i_format to png when reading png files and test for it
-- i_yres was being set to the xres when reading a png file
-- added many bad BMP files to test various code paths in bmp.c, and 
-  made many minor fixes to bmp.c to make them work:
-  - it was possible for various types of read failures to SEGV, both
-    as NULL pointer dereferences and buffer overflows
-  - some errors, like palettes being too large for the number of bits
-    per pixel, were not being caught
-  - failing to read all of a packed data structure would not cause
-    a read failure
-  - invalid compression types were not always caught
-  - error messages are more consistent (still not always great messages,
-    but one step at a time)
-- added bmp_compression_name, bmp_used_colors, bmp_filesize, bmp_bit_count 
-  tags on reading a BMP file
-- added tools/imager to the distribution.  This is still very 
-  experimental and untested.  Patches welcome, if you write tests to go
-  with them.
-- the BMP reader now validates the bfOffBits value from the BMP header
-  and skips to that offset before reading image data.  Previously this
-  value was read but otherwise ignored.
-- added --palette action to tools/imager
-- i_img_pal_new() now releases the image object memory if creation
-  fails.
-- set i_format to gif when reading gif files and test for it
-- set i_format to pnm when reading pnm files and test for it
-- set i_format to tga when reading tga files and test for it
-- handle image creation failures when reading tga files
-- set i_format to tiff when reading tiff images and test for it
-- handle image creation failures when reading tiff files
-- test t/t35ttfont.t no longer requires TTFONTTEST to be set (and 
-  hasn't for a long time,) removed that requirement from README
-- updated home page URLs throughout the .pods
-- added information on reporting bugs to the SUPPORT section of Imager.pm
-- regops.perl now sorts the dumped data structure to produce minimal diffs
-- quant.c now checks for integer overflow allocating its image data
-- i_readraw_wiol() now checks for image creation failure
-- i_readrgb_wiol() now checks for image creation failure
-- i_writergb_wiol() was an empty stub, it now pushes an error message
-  and explicitly returns failure.
-- i_readrgb_wiol() now sets i_format to rgb.
-- set i_format to raw when reading tga files and test for it
-- document i_format tag
-- some tests were using $Config{ivsize} when they should have been 
-  using $Config{intsize}
-  Resolves: https://rt.cpan.org/Ticket/Display.html?id=8645
-- tools/imager has been removed from the MANIFEST, it's way too late
-  to test/debug for 0.44.
-- image.h had no prototype for i_ft2_bbox_r() and it was being called
-  from Imager.xs
-- giflib 4.1.3 still doesn't have all the bugs fixed, update the notes
-  in README and in the buggy_giflib.txt file that t105gif.t produces
-- make the inclusion of NO_META dependent on the version of EU::MM.
-  I was going to include a META.yml but EU::MM's generation is too 
-  simplistic (and misses the leading document header too).  For now
-  I'll leave it out.
-- built 0.43_03 for testing
-
-0.44 Wed 15 Dec 2004
-- modify the default include directories list to include the location
-  FreeBSD keeps freetype1 headers after the freetype2 locations.
-  This ensures that the -I options are generated with freetype2
-  locations first, so that those directories are searched before
-  the freetype1 directories.  This prevents problems compiling
-  font.c on FreeBSD.
-  Resolves: http://rt-cpan.fsck.com/Ticket/Display.html?id=1723
-- finish off a sentence in the "Producing an image from a CGI script"
-  example in Imager::Files
-- method index didn't include errstr()
-- document that you don't want the FT2 freetype.h in the include path
-
-0.44_01 Tue 24 May 2005
-- the plugins Makefile has long produced an error after all tests were
-  complete on Win32, finally tracked down why
-- Makefile.PL now checks the directories specified by $Config{locincpth}
-  and $Config{loclibpth} for includes and libraries respectively.
-  Resolves: https://rt.cpan.org/Ticket/Display.html?id=2942
-- we were undefing the wrong macro (used as an include guard) when
-  building the error code translation function for freetype 2.  This
-  meant most errors came out as numbers.
-- add a note to the README on how to get font suitcases and dfont files
-  working on OS X.
-- add dfont to the list of extensions supported by ft2
-- document Imager::Font->new()'s index parameter
-- added concept index to Imager.pm's POD
-- the gradgen filter now does the same color value conversion that
-  Imager's drawing functions do.
-- added trivial multiple master support via the FT2 driver
-- added .pcf and .pcf.gz to the list of extensions supported by ft2
-- the tiff reader now puts warning messages produced during reading into
-  the i_warning tag.
-  Resolves: https://rt.cpan.org/Ticket/Display.html?id=8722
-- the i_xres and i_yres tags are now stored in a resolution similar
-  to their source.
-  Resolves: https://rt.cpan.org/Ticket/Display.html?id=8520
-- added tiff_resolutionunit_name tag when reading tiff files
-- Makefile.PL now attempts to use freetype-config to configure freetype 2
-  and pkg-config to configure libpng.
-- avoid complaining about include/lib directories we pull from 
-  perl's config or we have built-in
-- Makefile.PL now builds imconfig.h with #defines for libraries
-  present (and for the GIF library version) rather than putting them
-  into CFLAGS
-- scanning for required include files is now down by directory rather
-  than by file, using -e to check for the existence for a file rather than
-  doing an eq against every filename in the directory.
-- previously we only checked a candidate include directory for freetype.h
-  to consider it a valid FT1.x include directory.  We now check if it
-  contains fterrors.h too, if it does, then it's from a FT2 installation
-  and we ignore it.
-- Makefile.PL now accepts command-line options to set include and library
-  directories and to enable/disable drivers.
-- added simple examples to most of the filters documented in 
-  Imager::Filters
-- explicitly document there are no PNG specific tags.
-- more examples in Imager::Draw
-- minor cleanup of Imager::Fill
-- eliminate unused variables and static functions
-- simplify some XS code by adding another typemap entry
-- the right-side bearing used to adjust the final width wasn't being
-  calculated correctly, this would cause the bounding_box() function for 
-  freetype 2.x to return a larger than expected text width.
-  http://rt.cpan.org/NoAuth/Bug.html?id=11291
-- add scaleX/scaleY to the method index and gives them some examples
-  http://rt.cpan.org/NoAuth/Bug.html?id=11328
-- call read() instead of open() in the example code in Imager.pm,
-  and mention that open() is an alias for read().
-  http://rt.cpan.org/NoAuth/Bug.html?id=11431
-- added reference list of crop() parameters.
-  http://rt.cpan.org/NoAuth/Bug.html?id=11430
-- reading a tga image with an idstring of 128 or more bytes would result 
-  in an allocation error, if the platform char type was signed
-- tests now check that tga tags are set
-- calling the read() method for a format not included in the Imager build,
-  for example, JPEG with no libjpeg installed, would crash with an 
-  undefined function error (modified by DynaLoaders dependence on 
-  AutoLoader.)
-  http://rt.cpan.org/NoAuth/Bug.html?id=9618
-- some test scripts have been modified to use Test::More, which is now
-  included under the t directory.  Eventually all will be modified to use
-  Test::More and the duplicates in t/testtools.pl will be removed
-- the convert, crop, rotate, copy, matrix_transform, to_paletted, to_rgb8, 
-  scaleX and scaleY methods now warn when called in void context.
-  http://rt.cpan.org/NoAuth/Bug.html?id=9672
-- correct email addresses in the README file, and include bug reporting
-  information there too
-- added README for samples directory, describes interleave.pl and 
-  anaglyph.pl to start.
-- the XS for the internal i_glin() function wasn't copying the pixel
-  values across to the returned color objects.
-  http://rt.cpan.org/NoAuth/Bug.html?id=11860 
-- Imager::Cookbook wasn't included in the MANIFEST
-- added samp-form.cgi and samp-image.cgi to the samples directory to 
-  demonstrate displaying a generated image on a HTML page.
-- Makefile.PL now adds rules to generate a suitable META.yml to the
-  generated Makefile.
-- added sample code for handling images uploaded via a HTML form.
-- saving a GIMP gradiant file with Imager::Fountain->save has always been
-  broken.  Fixed it and added tests.
-- newer versions of GIMP add a line to gradient files before the
-  segment count giving a descriptive name of the gradient.  
-  Imager::Fountain can now read and write such gradient files.  The
-  interface is a bit indirect, but I'd like to preserve
-  Imager::Fountain as a blessed array ref for now.
-- the segments parameter supplied to the fountain filter and the
-  fountain fill contructor now accepts color names or other 
-  descriptions as other functions do.
-- fix a few compiler warnings
-- document the Imager::Font::BBox advance_width() method
-- Imager::Font::BBox advance_width() method was falling back to
-  the wrong value when the font driver's low level function
-  didn't return the advance width.
-- the FT 1.x was comparing versus an uninitialized variable when
-  checking the end of string when calculating the right side bearing
-  used to adjust pos_width for glyphs that overlap the right side of the
-  advance width.
-- Imager::Font::BBox objects now have right_bearing() and display_width()
-  methods.  Hopefully this and the advance_width() method fills out
-  the Imager bounding box interface to a useful state.
-  Implemented for all four font drivers.
-- Win32 font bounding_box() method now supports the advance width
-  and right bearing values.
-- Imager::Matrix2d->rotate() would only rotate around the supplied 
-  centre point if both 'x' and 'y' were non-zero.
-- the internal i_tags_get_string() function now acts correctly for
-  integer only tags.
-- the FT1.x driver now supports the align parameter correctly.
-  Tests were added to each driver to check correct handling of the align
-  parameter.
-- the Win32 font driver bounding_box() method now puts accurate values
-  in the ascent and descent values, previously they were set to the 
-  font ascent/descent rather than the values specific to the string.
-- supplying align=>0 to the win32 font driver string() function 
-  now aligns in the same way as the other drivers.
-- removed the bug reporting email address to prevent spammers stripping
-  it.  The URL is still there and if someone knows how rt.cpan.org works
-  they can still figure out the email.
-- the internal function used to probe file formats if the type
-  parameter wasn't passed to the read() method would produce
-  diagnostics on stdout, precluding use in web applications.  Silenced
-  it.
-- the setcolors() had a fencepost error making it impossible to 
-  use it to set the last color in the palette.
-  http://rt.cpan.org/NoAuth/Bug.html?id=12676
-- fix the filter examples in Imager::Filter so they don't indicate that 
-  a new image is returned (the filter() method works in-place)
-- add examples for the fountain filter
-- prevent warnings from Makefile.PL when there's no libraries found
-- Imager no longer assumes that MSVC is the only native Win32 
-  compiler, MinGW can be used to build Imager.
-- fixed an inverted condition checking the giflib version, and 
-  replaced a manual test skip in t/t105gif.t
-- add tests to exercise hatch fills for floating images.  This code is
-  mis-generated with the gcc 4.0 that ships with OS X 10.4
-- work around junk that pkg-config sends to stderr on FreeBSD 4.10
-- testimg/base.jpg was missing from the MANIFEST, causing test failures
-- use a temp file to avoid messing with echo on Win32 when building
-  META.yml
-- add some Mac OS X notes to the README
-
-0.45 Mon 30 May 2005
-- t/t105gif.t wasn't handling buggy giflibs correctly
-
-0.45_01 Mon 12 Dec 2005
-- give the colorcount() and maxcolors() methods their own entries and
-  add them to the method index.
-- added tiff_bitspersample and tiff_photometric tags to tiff images
-  when read
-- loading filter DLLs/DSOs had an off-by-one error allocating a buffer
-  for the filename of the library (does anyone use this functionality?)
-- remove old #if 0 code from Imager.xs
-- convert t/t15color.t to Test::More
-- prevent warnings when looking up a GIMP color with no palette
-  parameter and $ENV{HOME} not set.
-  Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=13143
-- added VERSION numbers to most .pms
-- convert t/t104ppm.t to Test::More
-- convert t/t107bmp.t to Test::More
-- convert t/t108tga.t to Test::More
-- error messages generated reading JPEG or PNG images are now
-  available via errstr()
-- implement/test/document set_file_limits()/get_file_limits() methods,
-  which allow limits on the size of image files read.
-- new example for convert() method based on Leolo's query
-- implement getscanline(), setscanline() and getsamples() methods.
-  These are low level methods for fast access to image data, based on
-  existing C functions that Imager uses internally.
-- limit limits.c to C89
-- the gif tests weren't skipping enough when there was no gif support
-- move include t1lib out of image.h to font.c, since nothing it 
-  provides is needed elsewhere.
-- minor POD fixes
-- added a brief tutorial
-- Imager::Font->new() for the tt (Freetype 1.x) driver now correctly
-  handles errors from i_tt_new(), and passed error messages now 
-  generated by i_tt_new().
-  Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=14804
-- renamed lib/Imager/Cookbook.pm to lib/Imager/Cookbook.pod - CPANTS
-  complains about it not having 'use strict;'
-- add samples/replace_color.pl
-- you can now supply a page parameter to read() to read a given page
-  from a TIFF file.
-- added samples/border.pl, and notes on adding a border in 
-  Imager::Cookbook.
-- added sampled/slant_text.pl, and notes on shearing/rotating text in
-  Imager::Cookbook.
-- INCOMPATIBLE CHANGE:
-  reading a gif file will now read the first image from the file rather 
-  than the a consolidated image.  If you want the old behaviour supply
-  C<< gif_consolidate=>1 >> to the read() method.  Older versions of 
-  Imager will accept this parameter and produce the same result.
-- you can now supply a page parameter to read() to read a given page
-  from a GIF file.
-- reading a multi-image GIF was leaking memory (a line buffer per file)
-- maxcolors now must be at least 1 when creating a paletted image.
-- converted t/t022double.t to use Test::More
-- t1 library re-initialization modified to support T1Lib 5.1.0
-- setmask() now returns true on success and reports a missing mask
-  parameter.
-- double per sample images were ignoring the channel mask.
-- converted t/t021sixteen.t to use Test::More
-- 16-bit per sample images were ignoring the channel mask
-- added t/t91pod.t
-- expand Imager::ImageTypes:
-  - make all methods into =items
-  - document parameters
-  - more examples
-  - add AUTHOR/REVISION/SEE ALSO
-- add samples/tk-photo.pl
-- fixes to verbose mode in Makefile.PL, also added a -v switch so you 
-  can enable it via the command-line
-  Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=16094
-- arc(..., fill=> ...) wasn't handling concave areas correctly
-- arc(..., color=>...) wasn't properly filling it's area
-- added experimental antialiased support to arc()
-- the order of the returned values for Imager::Font's align() method
-  was incorrect.
-- check the correct directory when adding the cygwin Win32 API include
-  path (Makefile.PL).  This was a later response to #16094
-  Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=16094
-- add --nolog command-line switch to Makefile.PL to disable logging
-- filled polygons using a complex fill with combine != 0 (none) didn't
-  correctly handle polygons that crossed a given scanline more than once.
-- the straight edges of filled arcs weren't being drawn correctly, 
-  causing minor artifacts at the inner and external corners
-- implemented valign=>'end' for Imager::Font->align
-- added $img->align_string() as a way to call Imager::Font->align
-- added samples/align-string.pl
-- improved missing argument handling a little for the string() method
-- linkify Imager.pm a bit more
-- expand Imager::Draw:
-  - make all methods items
-  - document parameters
-  - more examples
-  - add AUTHOR, REVISION.
-- add smoke test for nearest_color filter
-- added integer overflow checks to many memory allocation calls
-- added experimental EXIF decoding when reading JPEG files.
-- read/write i_xres, i_yres, i_aspect only tage with JPEG files,
-  and read/write jpeg_density_unit (+_name) tag
-- save the jpeg_comment tag when writing
-- the has_chars() method now checks the font objects utf8 flag as well 
-  as the utf8 parameter.
-- clean up Imager::Font documentation:
-   - string now documented in Imager::Draw
-   - add parameter list documentation
-- document the utf8 parameter for bounding_box(), has_chars()
-  Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=13508
-- decode the EXIF GPS IFD as well
-- minor documentation touchups
-- bump version 0.45_01
-
-0.45_02 Mon 12 Dec 2005
-- some test scripts weren't fixing @INC correctly
-- t/t101jpeg.t wasn't skipping enough when there was no jpeg support
-- bump version to 0.45_02
-
-0.46 Tue 20 Dec 2005
-- change the use in t/t91.pod to require version 1.00 of Test::Pod  
-- minor changes to Imager::Transformations
-- bump version to 0.46
-
-0.46_01 Fri 30 Dec 2005
-- switched to subversion - changed $VERSION that was based on Revision
-  tag to be manually handled.
-- outputting a single space using the Freetype 1.x driver (type=>'tt')
-  was producing a divide by zero error.
-- bump to 0.46_01 for testing
-
-0.47 Fri 30 Dec 2005
-- bump to 0.47
-
-0.47_01
-- set the locale to "C" properly when testing ft1.x error messages
-- don't destroy image before creating it in error handling in bmp.c
-- extra concept index entries
-- Imager::Draw - align_string()'s valign parameter was invalid in the 
-  synopsis
-- start of external Imager API access:
-  - rename headers to avoid conflicts:
-    - image.h to imager.h
-    - imagei.h to imageri.h
-    - datatypes.h to imdatatypes.h
-    - config.h to imconfig.h (created by Makefile.PL)
-  - moved all public types defined in imager.h to imdatatypes.h
-  - supply the PM parameter to WriteMakefile(), to install headers 
-    under Imager/include, and the Imager typemap in Imager/typemap.
-    We scan the MANIFEST for files to add to PM.
-  - add "i_" prefix on some functions useful as public at the C level.
-  - moved the typedefs that support the typemap from Imager.xs to 
-    imperl.h
-  - set the global callbacks hook in the Imager.xs BOOT section
-  - API cleanup:
-    - define i_tags_set(), i_tags_setn() - we might not allow multiple 
-      values for a tag in the future
-    - i_copy() now returns a new image instead of doing horrible inplace
-      things to an existing image
-    - provide actual functions for all of the macros we define in imager.h
-      so we can put them in the global callbacks structure
-  - define global functions structure (imexttypes.h)
-    and initialize it (imext.c)
-  - add API include header with macros to setup the define and
-    initialize the local callbacks pointer, and macros to call the API
-    functions.
-  - build Imager::APIRef from C sources, including updating the sources
-    to include documentation for each API function.
-  - convert dyntest and mandelbrot dynfilts into XS modules (too easy)
-  - simple Imager::CountColor example
-- support Inline::C :
-  - typemap changes to accept Imager or Imager::ImgRaw objects as 
-    image parameters
-  - define Imager output type for trivial cases of returning an i_img as
-    a full Imager object
-  - Inline WITH hook to filter Imager XS types into types Inline::C can
-    accept, supply appropriate headers and initialization.
-  - test script t/t82inline.t
-- try to use XSLoader instead of DynaLoader (but fallback if necessary)
-- paste() can now paste a subset of the source image.
-- paste() now has better tests
-- paste() should now be faster for larger pastes
-- added sample files missing from MANIFEST
-- added t/t92samples.t to check samples/README against MANIFEST
-- added inline_replace_color.pl to samples
-- constify the Imager API
-- document Imager::Filter::Mandelbrot
-- convert dynfilt/flines.c to Imager::Filter::Flines
-- minor changes for older perl/ExtUtils::MM
-- deal with freetype-config --cflags returning the directories
-  in the wrong order (Freetype 2.1.4 and earlier)
-  Thanks to David Wheeler for his help in tracking this down.
-- reword and provide an example for non-proportionally scaling an
-  image.  Wording from Simon Cozens.
-- error messages when writing TIFF images were always 
-  'Could not write to buffer', more useful messages are now reported.
-- error messages when writing PNM images were always
-  'unable to write pnm image', more useful messages are now reported.
-- convert t/t103raw.t to Test::More
-- reading a raw image no longer exits on a short read or read error,
-  and returns an appropriate error message in $im->errstr
-- write failures when writing a raw image now return a useful
-  message in $im->errstr
-- added typemap type names to types in Imager::API.
-- make skip when Inline::C not available less verbose
-- convert t/t07iolayer.t to Test::More
-- handle the possibility of strerror() returning NULL.
-- supply C<imager> parameter to filters so we can register filters
-  implemented in perl.
-- document register_filter() and add test for it
-- add example to SYNOPSIS of samples/inline_replace_color.pl
-- minor POD fix in Imager::Color::Table
-- eliminate many -Wall warnings
-- update README to match unbuggy giflib
-- document index parameter of Imager::Font->new()
-- change faxable output to use a more fax natural PHOTOMETRIC_MINISWHITE, 
-  since T.4 normally works that way, and MINISBLACK confuses some readers.
-- clean up scale() method for readability
-- make scale() fail if an invalid type is supplied (previously
-  documented as undefined behaviour)
-- add error handling tests for scale()
-- smarter warning removal
-- handle effects of byte ordering when testing tiff error messages
-
-=================================================================
-
-        For latest versions check the Imager-devel pages:
-        http://imager.perl.org/
-
-=================================================================
+Imager release history.  Older releases can be found in Changes.old
+
+Imager 0.64 - unreleased
+===========
+
+Bug fixes:
+
+ - check that the result of fileno($fh) is defined rather than simply
+   true when read() or write() is supplied with an fh parameter.
+   http://rt.cpan.org/Ticket/Display.html?id=35139
+
+ - i_scale_axis() wasn't checking the result of i_img_new_ch()
+   resulting in a SIGSEGV when attempting to scale an image to a size
+   too large to fit in memory.  This is a NULL pointer access issue,
+   not a buffer overflow.
+   Added a check for the failure.
+   scale_calculate() (and hence scale()) will now fail if any of the
+   scale size parameters are a reference.
+   http://rt.cpan.org/Ticket/Display.html?id=35172
+
+Imager 0.63 - 7 April 2008
+===========
+
+This release primarily contains changes to improve ease of use -
+rather than you having to convert images to the appropriate number of
+channels, Imager handles it internally.  How to handle drawing colors
+and the default combine mode is a thornier problem left for some other
+release.
+
+ - the font libraries are now only initialized when needed.
+   http://rt.cpan.org/Ticket/Display.html?id=28825
+
+ - moved the imtoc.perl code into Imager::Preprocess
+
+ - paste() and rubthrough() now adapt the source image data to the
+   destination, so you can now safely paste/rubthrough from greyscale
+   images to color images or back, or from alpha channel images to
+   noalpha channels or back.
+   https://rt.cpan.org/Ticket/Display.html?id=30908
+
+ - rubthrough() now falls back to pasting when the source doesn't have
+   an alpha channel.  This effectively treats the source as having a
+   max alpha channel, the right thing to do.
+   http://rt.cpan.org/Ticket/Display.html?id=29944
+
+ - re-worked most of the area filling code to use a common set of
+   functions when filling.
+   Corrected normal combine mode.
+   Rewrote most of the combine modes to match the way the SVG draft
+   defines them with respect to a translucent source and destination.
+   Added tests for translucent source and destination.
+   Added tests to check 8-bit/sample and double/sample combines work
+   similarly.
+   https://rt.cpan.org/Ticket/Display.html?id=29879
 
+ - writing a 2 or 4 channel image to a JPEG file will now write that
+   image as if composited against a background, black by default,
+   overridable with the i_background tag/parameter.
+   https://rt.cpan.org/Ticket/Display.html?id=29876
+
+ - writing a 2 or 4 channel image to a PGM/PPM file will now write
+   that image as if composited against a background, black by default,
+   overridable with the i_background tag/parameter.
+   http://rt.cpan.org/Ticket/Display.html?id=30074
+
+ - writing a 2 or 4 channel image to a BMP file will now write that
+   image as if composited against a background, black by default,
+   overridable with the i_background tag/parameter.
+   http://rt.cpan.org/Ticket/Display.html?id=30075
+
+Bug fixes:
+
+ - Imager::Matrix2d->translate() now only requires one of the x or y
+   parameters.
+   http://rt.cpan.org/Ticket/Display.html?id=29937
+
+ - mixing qtype scaling now sets all channels of a pixel to zero if
+   the pixel has zero coverage (zero alpha).  This should produce more
+   compressible output files.
+   http://rt.cpan.org/Ticket/Display.html?id=32324
+
+ - removed the pointless #! line from lib/Imager/Font/Wrap.pm
+   Noticed when I saw:
+   https://bugzilla.redhat.com/show_bug.cgi?id=166254
+   I'm not changing the #! lines of the sample code, since it's sample
+   code, not intended for installation.
+   http://rt.cpan.org/Ticket/Display.html?id=33408
+
+ - some TGA images weren't being detected correctly as TGA images
+   https://rt.cpan.org/Ticket/Display.html?id=32925
+
+ - handling of the left-over bit for 16-bit/pixel TGA images has been
+   changed to match the behaviour of the GIMP.  Previously the bit
+   being set was treated as an opaque pixel, but one user reported a
+   problem with loading such an image.  I haven't been able to find any
+   tools beyond the GIMP that handle alpha-channel 16-bit TGAs, so
+   I'll match it's behaviour.  See issue 114913 in the GIMP's
+   bugzilla.
+   http://rt.cpan.org/Ticket/Display.html?id=32926
+
+Imager 0.62 - 10 December 2007
+===========
+
+ - Makefile.PL now expands ~/path supplied to --incpath or --libpath
+   to /path under your home directory.
+   http://rt.cpan.org/Ticket/Display.html?id=29484
+
+ - the old dynaload code used Mach API functions to load dynamic
+   libraries on Mac OS X.  These APIs have been deprecated in OS X
+   10.5 and were causing some build problems.
+   So henceforth Imager uses the dlopen() family of functions, and you 
+   will need version 10.3 or later of OS X.
+
+ - added the det() function to the transform2() engine.
+   added the sample quad_to_square.pl
+   Courtesy Richard Fairhurst.
+   http://rt.cpan.org/Ticket/Display.html?id=31244
+
+Bug fixes:
+
+ - samples/gifscale.pl sourced the base value for gif_top from
+   gif_left.
+   Thanks to Eleneldil G. Arilou for pointing this out.
+
+ - t/t82inline.t no longer loads B at runtime, to work around a bug
+   in some 5.005_0[45] installations.
+   http://rt.cpan.org/Ticket/Display.html?id=30508
+
+ - work around Module::Depends::Intrusive bug #21229
+   http://rt.cpan.org/Ticket/Display.html?id=30520
+
+ - the hardinvert filter no-longer inverts the alpha channel.
+   http://rt.cpan.org/Ticket/Display.html?id=30002
+
+ - the hardinvert filter now supports large samples
+
+Imager 0.61_02 - 28 November 2007
+==============
+
+ - major TIFF support re-work
+   http://rt.cpan.org/Ticket/Display.html?id=20329
+
+ - added a C level image interface for accessing samples from 1-32
+   bits, exposed this at the perl level in getsamples()
+
+ - the conv filter now works at floating point precision for high bit
+   images
+
+ - added is_bilevel method to test whether an image should be written as
+   a bilevel image if the image format supports it.
+
+ - added -log-stderr as an Imager import list option
+
+ - added some important types to Imager::APIRef
+
+ - added test_image_double() to Imager::Test
+
+Bug fixes:
+
+ - Imager::Fountain couldn't read GIMP gradient files with 10 or more
+   segments
+
+ - the scale() method with qtype mixing now handles images with an
+   alpha channel correctly.
+
+ - fixed a broken link from the "animated GIF" entry in the concept index.
+   Thanks to Slaven Rezic.
+   http://rt.cpan.org/Ticket/Display.html?id=30889
+
+ - on some perl's the infix expression parser test would fail due to
+   actions in the grammar returning false.  Made sure all actions return
+   a true value.
+   Thanks to Richard Fairhurst for spending a lot of time in tracking
+   down this problem.
+   http://rt.cpan.org/Public/Bug/Display.html?id=29562
+
+Imager 0.61 - 5 November 2007
+===========
+
+ - added samples/gifscale.pl, which adjusts the screen size/position tags
+   when scaling an animated gif
+   http://rt.cpan.org/Ticket/Display.html?id=27591
+
+Bug fixes:
+
+ - correct handling of sz in matrix_transform() - this should allow
+   perspective type transformations to work now.
+   http://rt.cpan.org/Ticket/Display.html?id=29936
+
+ - prevent a cast to integer warning on x64 builds in datatypes.c
+   also fixed some other type warnings
+   https://rt.cpan.org/Ticket/Display.html?id=30204
+
+ - some sub-directory tests depended on files produced by the parent
+   directory tests
+   http://rt.cpan.org/Ticket/Display.html?id=30203
+
+ - Imager::Font::Wrap doesn't correctly set savepos
+   thanks to Nikita Dedik and Eleneldil G. Arilou for reporting this.
+   http://rt.cpan.org/Ticket/Display.html?id=29771
+
+ - test 171 in t/t01introvert.t was failing on perls configured to
+   use long double.
+   http://rt.cpan.org/Ticket/Display.html?id=29413
+
+ - the code for the transform2() uminus operator was missing a break.
+   Added tests for better code coverage of the ops.
+   http://rt.cpan.org/Ticket/Display.html?id=29296
+
+ - the SGI RLE compression code could overflow its compression buffer
+   http://rt.cpan.org/Ticket/Display.html?id=30334
+
+ - the 32-bit output function used by the SGI code only handled values
+   under 0x10000.  This was most noticable when writing large RLE images.
+   http://rt.cpan.org/Ticket/Display.html?id=30335
+
+ - validate chan_count for chans == NULL for each of the i_gsamp()
+   implementations.
+   http://rt.cpan.org/Ticket/Display.html?id=28985
+
+ - attempt to work around the test failure at 
+   http://www.nntp.perl.org/group/perl.cpan.testers/2007/09/msg650810.html
+   http://rt.cpan.org/Ticket/Display.html?id=29562
+
+ - improve the error messages produced when attempting to read or write
+   an unknown image file format.
+   http://rt.cpan.org/Ticket/Display.html?id=30103
+
+ - improve the transform2() documentation
+   http://rt.cpan.org/Ticket/Display.html?id=29267
+
+ - correctly generate the author key in META.yml
+   http://rt.cpan.org/Ticket/Display.html?id=30377
+
+ - correctly blend a rotated (or matrix_transformed()) image when
+   performing interpolation in the presence of an alpha channel.
+   Also corrected the centring of the rotated image on the output
+   image.
+
+Imager 0.60 - 30 August 2007
+===========
+
+ - Finished/rewrote Arnar's old SGI RGB file format support, so Imager
+   now has full SGI RGB image format, including RLE and 16-bit/sample
+   images.
+   https://rt.cpan.org/Ticket/Display.html?id=8666
+
+ - logging functions are now available in the API
+
+ - applied Gabriel Vasseur's patch
+   added documentation, further tests, and support for greyscale images
+   Obviously problems are my fault :)
+   https://rt.cpan.org/Ticket/Display.html?id=28142
+
+ - the mask for ICO/CUR images is now applied as an alpha channel to
+   the returned image.  For the old behaviour, supply ico_masked => 0
+   to read() or read_multi().  This should be less confusing when
+   using Imager as a general image processor.
+   https://rt.cpan.org/Ticket/Display.html?id=29001
+
+Bug fixes:
+
+ - in some cases it's possible for giflib/libungif to return color 
+   indexes outside the range of colors defined by the image's palette.
+   We now expand the palette to match the indexes used.
+   Thanks to Gabriel Vasseur for reporting this.
+
+ - fixed various memory leaks that could occur when failing to read png,
+   jpeg, bmp or tga files.
+
+ - to avoid confusion, channels not present in the image are returned as
+   zero by getscanline().  This has no effect on the C level i_glin()
+   and i_glinf() API functions which continue to not set the unused
+   channels.
+
+ - the convert() method now returns an image of the same sample size as
+   the source image.
+   https://rt.cpan.org/Ticket/Display.html?id=28492
+
+ - remove repeated text in Imager::Files
+   http://rt.cpan.org/Ticket/Display.html?id=27589
+
+ - be even more explicit that scale() and friends don't modify the source
+   image, but return a new image.
+   http://rt.cpan.org/Ticket/Display.html?id=28570
+
+ - improve the error message from errstr() when you try to load a font
+   for which the driver hasn't been built in Imager.
+   http://rt.cpan.org/Ticket/Display.html?id=27571
+
+ - transparency is now enabled by default when writing GIF images
+   http://rt.cpan.org/Ticket/Display.html?id=27615
+
+ - Imager would not load on Windows 98
+   http://rt.cpan.org/Ticket/Display.html?id=27653
+
+Imager 0.59 - 14 June 2007
+===========
+
+Bug fixes:
+
+ - fixes a regression introduced by the fixes for RT 11972
+   http://rt.cpan.org/Ticket/Display.html?id=27546
+
+ - cropping outside the image would return an Imager object with
+   no low-level image object, instead of returning false.
+   Fixed by: Philip Gwyn (Leolo)
+   http://rt.cpan.org/Ticket/Display.html?id=27509
+
+Imager 0.58 - 16 May 2007
+===========
+
+No significant changes from 0.57_01.
+
+Imager 0.57_01 - 11 May 2007
+==============
+
+ - added to_rgb16 to produce a 16-bit/sample version of an image
+
+ - improve freetype 1.x text output efficiency
+
+Bug fixes:
+
+ - search another place for rgb.txt, and check all the places 
+   Imager::Color checks when deciding whether to skip testing it
+   http://rt.cpan.org/Ticket/Display.html?id=26064
+
+ - use a convolution kernel size based on the stddev rather than a
+   fixed size when performing a gaussian blur
+   http://rt.cpan.org/Ticket/Display.html?id=25645
+
+ - document the difference() method's mindist parameter, and debug it.
+
+ - put the Imager release number in the Inline::C generated code to
+   regenerate Inline code when a new release of Imager is installed.
+   http://rt.cpan.org/Ticket/Display.html?id=26278
+
+ - fix rendering on alpha channel images for the FreeType 1.x driver.
+   http://rt.cpan.org/Ticket/Display.html?id=11972
+
+ - fix rendering on alpha channel images for the T1lib driver.
+   http://rt.cpan.org/Ticket/Display.html?id=11972
+
+ - reworked library probing, we can now set more than one probe
+   function for a library.  Disabled the default (non-freetype-config)
+   library probe and added an extra probe function that searches for
+   both ft2build.h and whatever it includes, and adds -I as needed.
+   Hopefully this will fix build problems like
+   http://www.nntp.perl.org/group/perl.cpan.testers/2007/05/msg472281.html
+   http://rt.cpan.org/Ticket/Display.html?id=26086
+
+Imager 0.57 - 30 Apr 2007
+===========
+
+This is a maintenence release fixing a security issue in Imager.
+
+ - CRITICAL: a specially crafted compressed BMP file can cause a buffer
+   overflow in malloced memory.  There will be further discussion of
+   this issue in the ticket below.
+   http://rt.cpan.org/Ticket/Display.html?id=26811
+   CVE-2007-2459  CVE-2007-2413
+   The descriptions at cve.mitre.org varied in quality, please see the
+   ticket at rt.cpan.org for a more accurate description of the issue.
+
+Imager 0.56 - 1 Apr 2007
+===========
+
+ - added support for reading 16-bit/sample PGM/PPM images
+
+ - added support for writing 16-bit/sample PGM/PPM images
+
+ - improved performance of reading PBM/PGM/PPM images
+
+ - added support for writing PBM images if the image is paletted and
+   contains only black and white
+
+ - added a new make_colors value - "mono"
+
+ - switched from the svn log Changes to a manual Changes to reduce
+   noise
+
+ - new sample code - samples/flasher.pl
+
+Bug fixes:
+
+ - CRITICAL: the "Imager" typemap entry (not used by Imager itself)
+   was returning an image object with an extra reference, this
+   resulted in a memory leak.
+   http://rt.cpan.org/Ticket/Display.html?id=24992
+
+ - fix rendering on alpha channel images for the FreeType 2.x driver
+   http://rt.cpan.org/Ticket/Display.html?id=11972
+
+ - reading bmp files now consitently handles short reads.  You can now
+   supply a parameter to treat a short read as successful and set
+   i_incomplete
+   http://rt.cpan.org/Ticket/Display.html?id=8426
+
+ - previously, reading ASCII PBM files required spaces between samples,
+   even though the format doesn't require that
+
+ - improved documentation of the unsharpmask filter (I hope)
+   http://rt.cpan.org/Ticket/Display.html?id=25531
+
+ - force flushing of the output from i_tt_dump_names() and test output
+   in t/t35ttfont.t to prevent output from being mixed up.
+   https://rt.cpan.org/Ticket/Display.html?id=24859
+
+ - rewrite a conditional expression as an if() to hopefully work around
+   a bug in the pre-4.0 GCC Apple shipped with OS X 10.4.
+   https://rt.cpan.org/Ticket/Display.html?id=25561
+
+ - avoid Data::Dumper in regops.perl to support older releases of perl
+   https://rt.cpan.org/Ticket/Display.html?id=24391
+
+Imager 0.55 - 16 Dec 2006
+===========
+
+This is primarily a bug fix release.
+
+Note: Test::More is now a pre-requisite for Imager and is no longer bundled.
+
+There is one new feature:
+
+ - the Win32 font driver now supports UTF8 (RT 22166)
+   http://www.cpanforum.com/threads/3276
+   http://rt.cpan.org/Ticket/Display.html?id=22166
+
+Several bugs were fixed:
+
+ - the string() method would not output the string "0"
+   http://rt.cpan.org/Public/Bug/Display.html?id=21770
+
+ - fills.c was failing to compile on Solaris 10 (compiler unknown)
+   http://rt.cpan.org/Public/Bug/Display.html?id=21944
+
+ - the gif_disposal and gif_user_input tags weren't being read from
+   the file correctly
+   http://rt.cpan.org/Public/Bug/Display.html?id=22192
+
+ - gif.c was failing to build under MSVC
+   http://rt.cpan.org/Ticket/Display.html?id=23922
+
+ - in some cases strings passed to the string() method were treated as
+   terminated by NUL (chr 0)
+   http://rt.cpan.org/Public/Bug/Display.html?id=21770
+
+ - on "MSWin32" perl builds we now link to -lzlib instead of -lz since
+   that's the default build name for zlib on Win32.
+   http://rt.cpan.org/Ticket/Display.html?id=23064
+
+ - search $Config{incpath} for headers too, which we should have been
+   doing all along.
+
+Win32 font driver fixes:
+
+ - the global descent value from bounding box was the wrong sign
+   http://www.cpanforum.com/threads/3276
+
+ - if the first or last glyph overflowed the left or right side of the
+   advance width they would be clipped
+
+
+Imager 0.54 - 14 Sep 2006
+===========
+
+This is primarily a feature release:
+
+ - a new qtype value 'mixing' has been added to the scale()
+   method. This is faster than 'normal', slower than 'preview'. This
+   is based on the method used by pnmscale, and seems to produce less
+   blurry results than normal.
+   http://rt.cpan.org/Public/Bug/Display.html?id=20677
+
+ - the rubthrough() method can now render onto images with an alpha
+   channel.
+   http://rt.cpan.org/Ticket/Display.html?id=20678
+
+ - the read_multi() method now falls back to calling doing a single
+   image read via the read() method and write_multi() will now fall
+   back to calling write() if a single image is supplied. This means
+   you can simply call the read_multi() or write_multi() functions
+   without having to check if the type is formatted by that method.
+   http://rt.cpan.org/Ticket/Display.html?id=19457
+   http://rt.cpan.org/Ticket/Display.html?id=19458
+
+ - the GIF loop extension can now be written. If you don't have
+   libungif/giflib 4.1.4 (or some distribution's bugfixed equivalent) you
+   should upgrade.
+   http://rt.cpan.org/Ticket/Display.html?id=21185
+
+ - getscanline() and setscanline() can now read/write palette index
+   based data from/to the image for paletted images, by setting type to
+   'index'.
+   http://rt.cpan.org/Ticket/Display.html?id=20338
+
+ - we no longer hassle you to disable GIF support
+   http://rt.cpan.org/Ticket/Display.html?id=20687
+
+ - minor documentation fixes
+
+
+Imager 0.53 - 26 Jul 2006
+===========
+
+This is a bugfix release.
+
+Some test code was left in a code path not covered by the test
+suite. A test was added to cover this code path and the test code was
+removed.
+http://rt.cpan.org/Public/Bug/Display.html?id=20705
+
+
+Imager 0.52 - 25 Jul 2006
+===========
+
+This is primarily a feature release, but contains a fair few bug
+fixes, new features:
+
+ - ability to read and write MS Windows ICO and CUR files
+
+ - you can now add file format plugins to support new file formats
+
+ - add POD coverage tests
+
+ - setcolors() and addcolors() now accept color names and so on
+   instead of requiring Imager::Color objects.
+   http://rt.cpan.org/Ticket/Display.html?id=20056
+
+ - flood_fill() can now fill to a specified border color instead of
+   just to the area the same color as the seed.
+   http://rt.cpan.org/Ticket/Display.html?id=19618
+
+
+Bug fixes:
+
+ - bounding_box for the T1 driver wasn't converting UTF8 to ascii when
+   calculating the advance width.
+   http://rt.cpan.org/Public/Bug/Display.html?id=20554
+
+ - bounding_box for the T1 driver wasn't including leading and
+   trailing spaces in the bounding box as the other drivers did, it also
+   produced strange results for empty strings or strings containing only
+   spaces
+
+ - when reading CMYK jpeg images they were being transferred to the
+   image object as is, producing a four channel image. It only looked ok
+   due to an old still unfixed Photoshop bug. We now convert from the
+   inverted CMYK that photoshop (and Corel for example) produce into RGB.
+   http://rt.cpan.org/Ticket/Display.html?id=20416
+
+ - reading a CYMK TIFF would result in a 4 channel image, reading any
+   image with more than 4 channels (eg. RGB with 2 alpha channels) would
+   result in an error.
+   http://rt.cpan.org/Ticket/Display.html?id=20415
+
+ - added /usr/local/include to the default include search path, since
+   we were already searching /usr/local/lib for libraries.
+
+And various minor fixes and documentation updates.
+
+
+Imager 0.51 - 23 Apr 2006
+===========
+
+ - fix a validation bug when processing JPEG EXIF data that can cause
+   a crash
+   http://rt.cpan.org/Public/Bug/Display.html?id=18496
+
+ - fix mis-processing of the src_maxx and src_maxy parameters of the
+   paste() method
+   http://rt.cpan.org/Public/Bug/Display.html?id=18712
+
+ - fix a problem in Imager's "smart" handling of the color parameter
+   to various methods.
+   http://rt.cpan.org/Public/Bug/Display.html?id=18561
+
+
+Imager 0.50 - 29 Mar 2006
+===========
+
+ - CRITICAL: fixes a segmentation fault from attempting to write a 2
+   or 4 channel image to jpeg or a 2 channel image to tga where the
+   output is an in-memeory buffer.
+   http://rt.cpan.org/Public/Bug/Display.html?id=18397
+
+ - fixes an incorrect pointer parameter in the PNG code
+   http://rt.cpan.org/Public/Bug/Display.html?id=18051
+
+ - skip Inline::C tests when building in a directory with spaces
+   http://rt.cpan.org/Public/Bug/Display.html?id=18049
\ No newline at end of file