- - 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
-
-~~~~~~~~~~~~~^ ^ ^~~~~~~~~~~~~~
-
-
-0.40 TODO list
- iolayer:
- - Add scalar/mmap to iolayer
- - Add close() code to iolayer
- - Merge callback interface into iolayer
- - Add interface for writing to all formats but tiff
- - Add interface for reading for png (started),
- gif (merge with cb patch), ppm and raw
- - Add make new tests once all formats support io_layer
- - Implment the maxread threshold (Indicates how far
- a library can read before it indicates that it's done).
-
- MultiImage & metadata support:
- - Figure what interface should be between C and perl?
- - How to store data in the C interface for tags/metadata?
-
- Good stuff:
- - matrix based colour transformations, for RGB to grayscale
- and simple linear other conversions, see design/colmatrix.txt
- - image colour transformations based on input images, see
- design/cmyktorgb.txt for Addi's description
- - eventually support tiff's madness
-
- Old sins:
- - Make sure everything is doable with the OO interface
- - Split the other classes into seperate files
- - Compile with memory debugging enabled and fix leaks
- - dynaload.c is strongly tied to perl
-
- - should i_readgif returned colormap be an arrayref of
- Imager::Color objects? Note that this will break
- compatibility with previous releases.
-
- - should Imager::Font be split into a base class whose
- new chooses a base class (ttf, t1 or win32?) to
- instantiate. Currently Imager::Font uses if() statements to
- select between each type of font. It should.
-
- - should we overload <=> or cmp for Imager::Color objects?
- too many worms, leave it out
-
- Documentation:
- - Add to the documentation
- - Write a tutorial?
- - Write a guide to installing the helper libraries
- - Go through the entire project and add comments in pod
- so doco.perl can be used to read them.
-
- - should the interlace option for reading raw images have
- symbolic names in the OO interface?
-
-===================================================
+ - 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
+
+=================================================================