(none) imager-devel
/ help / lists / applications / search /

Future of Imager

From: Tony Cook (
Date: Wed 15 Sep 2004 - 04:41:13 GMT

Right now I'm waiting for Arnar to mark me maintainer or co-maintainer
for Imager on PAUSE, once that's done I'll probably release 0.43_01
immediately, and 0.44 not too long after that, here's a list of
changes vs 0.43:

        - refer the user to appropriate documents in the example in
        - 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
        - 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
        - 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
        - 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

Tony Cook