svn log.
Changes for older revisions of Imager can be found in Changes.old.
+++ /dev/null
-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 >
-
-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/
-
-=================================================================
-
--- /dev/null
+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 >
+
+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/
+
+=================================================================
+
Changes
+Changes.old Old changes
CountColor/CountColor.pm sample XS access to API
CountColor/CountColor.xs
CountColor/Makefile.PL
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};
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';
+ }
+ }
+}