New changes will be listed most recent first, and is generated from
authorTony Cook <tony@develop=help.com>
Tue, 7 Mar 2006 11:54:01 +0000 (11:54 +0000)
committerTony Cook <tony@develop=help.com>
Tue, 7 Mar 2006 11:54:01 +0000 (11:54 +0000)
svn log.

Changes for older revisions of Imager can be found in Changes.old.

Changes [deleted file]
Changes.old [new file with mode: 0644]
MANIFEST
Makefile.PL

diff --git a/Changes b/Changes
deleted file mode 100644 (file)
index 34ab762..0000000
--- a/Changes
+++ /dev/null
@@ -1,1404 +0,0 @@
-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 Tue 21 Feb 2006
-- 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
-- scale() can now expect an Image::Math::Constrain object as a scaling
-  constraint via the constrain parameter.
-- added tests for the various ways we can specify scaling size
-- documented scale()'s scalefactor parameter
-- sick of $opts{scalefactor} in scale(), give it a scalar to call it's
-  own.
-- check $Config{ldflags} and $Config{ccflags} for places to search for
-  headers and libraries.  This deals with the way the fink build of perl
-  puts -L/sw/lib in ldflags rather than using loclibpth
-- eliminate some of the duplication of -I and -L options in LIBS and INC
-- Makefile.PL now uses strict.
-- the search for freetype1.x headers is now smarter
-- add tests for scaleX()/scaleY()
-- expand documentation of scaleX()/scaleY()
-- rotate()s back parameter now accepts color names like other methods
-- convert t/t69rubthru.t to Test::More
-- minor clean up of rubthrough() method
-- error handling tests for rubthrough()
-- expand Imager::Transformations:
-  - document parameters more explicitly
-  - document return values
-  - add examples
-  - add AUTHOR, SEE ALSO, REVISION
-- eliminate sign warning from image.c
-- make TIFF detection stricter
-- more memory allocation integer overflow auditing
-- IM_DEBUG_MALLOC wasn't interacting well with the API
-- make win32.c const happy
-- make raw.c C89 compliant
-- added version/level to the API function table structure
-- fix/simplify META.yml generation - we now generate META.yml at
-  Makefile.PL time, since trying to work with EU::MM to generate a 
-  custom META.yml was a waste.
-- bump to 0.47_01
-
-0.48 Fri 3 Mar 2006
-- removed unused hashinfo() function from Imager.xs
-- added =items for various methods, so Pod::Coverage will pick them up
-  (Pod::Coverage tests to be added in 0.49)
-- bump to 0.48
-
-0.49
-- handle short EXIF user_comment fields correctly, previously Imager
-  would read (and potentially) write beyond the end of an allocated block,
-  or through a NULL pointer if the EXIF user_comment field was less
-  than 8 bytes long.
-  https://rt.cpan.org/Ticket/Display.html?id=17981
-- tifflib 3.8.0 with MDI (Microsoft(tm) TIFF) support produces a 
-  different error when it reads a file with a bad magic number.
-  Update the test to handle the possible messages.
-- some jpeg.c logging calls didn't include parameters enough to match
-  the supplied format string. (detected by valgrind)
-- in some cases memory wasn't being freed during error handling when
-  reading jpeg images (detected by valgrind)
-- free the TIFF object correctly when reading a TIFF image and the 
-  page number is out of range. (detected by valgrind)
-- i_gsampf() (used to implement getsamples() for floating point samples)
-  was leaking memory. (detected by valgrind)
-- writing to a PNG file was leaking one memory block
-  (detected by valgrind)
-- some error paths when reading GIF images weren't closing the GIF
-  read object. (detected by valgrind)
-- bump to 0.49 (to get #17981 fix out)
-
-=================================================================
-
-        For latest versions check the Imager-devel pages:
-        http://imager.perl.org/
-
-=================================================================
-
diff --git a/Changes.old b/Changes.old
new file mode 100644 (file)
index 0000000..34ab762
--- /dev/null
@@ -0,0 +1,1404 @@
+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 Tue 21 Feb 2006
+- 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
+- scale() can now expect an Image::Math::Constrain object as a scaling
+  constraint via the constrain parameter.
+- added tests for the various ways we can specify scaling size
+- documented scale()'s scalefactor parameter
+- sick of $opts{scalefactor} in scale(), give it a scalar to call it's
+  own.
+- check $Config{ldflags} and $Config{ccflags} for places to search for
+  headers and libraries.  This deals with the way the fink build of perl
+  puts -L/sw/lib in ldflags rather than using loclibpth
+- eliminate some of the duplication of -I and -L options in LIBS and INC
+- Makefile.PL now uses strict.
+- the search for freetype1.x headers is now smarter
+- add tests for scaleX()/scaleY()
+- expand documentation of scaleX()/scaleY()
+- rotate()s back parameter now accepts color names like other methods
+- convert t/t69rubthru.t to Test::More
+- minor clean up of rubthrough() method
+- error handling tests for rubthrough()
+- expand Imager::Transformations:
+  - document parameters more explicitly
+  - document return values
+  - add examples
+  - add AUTHOR, SEE ALSO, REVISION
+- eliminate sign warning from image.c
+- make TIFF detection stricter
+- more memory allocation integer overflow auditing
+- IM_DEBUG_MALLOC wasn't interacting well with the API
+- make win32.c const happy
+- make raw.c C89 compliant
+- added version/level to the API function table structure
+- fix/simplify META.yml generation - we now generate META.yml at
+  Makefile.PL time, since trying to work with EU::MM to generate a 
+  custom META.yml was a waste.
+- bump to 0.47_01
+
+0.48 Fri 3 Mar 2006
+- removed unused hashinfo() function from Imager.xs
+- added =items for various methods, so Pod::Coverage will pick them up
+  (Pod::Coverage tests to be added in 0.49)
+- bump to 0.48
+
+0.49
+- handle short EXIF user_comment fields correctly, previously Imager
+  would read (and potentially) write beyond the end of an allocated block,
+  or through a NULL pointer if the EXIF user_comment field was less
+  than 8 bytes long.
+  https://rt.cpan.org/Ticket/Display.html?id=17981
+- tifflib 3.8.0 with MDI (Microsoft(tm) TIFF) support produces a 
+  different error when it reads a file with a bad magic number.
+  Update the test to handle the possible messages.
+- some jpeg.c logging calls didn't include parameters enough to match
+  the supplied format string. (detected by valgrind)
+- in some cases memory wasn't being freed during error handling when
+  reading jpeg images (detected by valgrind)
+- free the TIFF object correctly when reading a TIFF image and the 
+  page number is out of range. (detected by valgrind)
+- i_gsampf() (used to implement getsamples() for floating point samples)
+  was leaking memory. (detected by valgrind)
+- writing to a PNG file was leaking one memory block
+  (detected by valgrind)
+- some error paths when reading GIF images weren't closing the GIF
+  read object. (detected by valgrind)
+- bump to 0.49 (to get #17981 fix out)
+
+=================================================================
+
+        For latest versions check the Imager-devel pages:
+        http://imager.perl.org/
+
+=================================================================
+
index 7973c02..35ca0ec 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,5 @@
 Changes
+Changes.old                    Old changes
 CountColor/CountColor.pm        sample XS access to API
 CountColor/CountColor.xs
 CountColor/Makefile.PL
index 5aace31..024072b 100644 (file)
@@ -82,6 +82,7 @@ my @libs; # all the places to look for libraries
 
 init();       # initialize global data
 pathcheck();  # Check if directories exist
+distcheck();  # for building dists
 
 if (exists $ENV{IM_ENABLE}) {
   my %en = map { $_, 1 } split ' ', $ENV{IM_ENABLE};
@@ -866,3 +867,32 @@ YAML
     close META;
   }
 }
+
+# this is intended to only be running on the development
+# machines
+sub distcheck {
+  if (-e '.svn') {
+    # update Changes if needed
+    my $write_changes;
+    # get the last revision from Changes
+    if (open CHANGES, "< Changes") {
+      <CHANGES>;
+      my ($changes_rev) = <CHANGES> =~ /^r(\d+)/
+       or die "Could not get revision from Changes";
+
+      my ($revision) = grep s/^Revision: //, `svn info`
+       or die "Could not get Revision line";
+      chomp $revision;
+
+      $write_changes = $changes_rev != $revision-1;
+      close CHANGES;
+    }
+    else {
+      ++$write_changes;
+    }
+    if ($write_changes) {
+      print "Updating Changes file\n";
+      system 'svn log -v -r 942:HEAD >Changes';
+    }
+  }
+}