From: Tony Cook Date: Tue, 7 Mar 2006 11:54:01 +0000 (+0000) Subject: New changes will be listed most recent first, and is generated from X-Git-Tag: Imager-0.51_01~43 X-Git-Url: http://git.imager.perl.org/imager.git/commitdiff_plain/ef99ecfc458e33b713494bd1ea5d5cb8d593fd34 New changes will be listed most recent first, and is generated from svn log. Changes for older revisions of Imager can be found in Changes.old. --- diff --git a/Changes b/Changes deleted file mode 100644 index 34ab762e..00000000 --- a/Changes +++ /dev/null @@ -1,1404 +0,0 @@ -Revision history for Perl extension Imager. - -0.01 Thu May 6 15:25:03 1999 - - original version; created by h2xs 1.18 - -0.02 Mon May 10 20:20:20 1999 - - Added PPM writer, and a new return type to - be used to return undef() from a function returning - (int)0. - -0.03 Thu May 20 23:23:23 1999 - - Added Pseudo image handling thingies, now - you can use your own get and put pixel routines. - -0.04 Mon May 24 22:14:55 1999 - - Rewrote parts of jpeg support. - -0.05 Tue May 25 23:40:01 1999 - - Added png support with libpng - fixed error reporting and return types from - some format routines. - -0.06 Wed May 26 19:05:39 1999 - - Fixed Data::Dumper being used when it shouldn't have - added feature checking to see at run time if - certain formats are avaliable. - removed some ancient C++ style comments that hadn't - been properly removed, some out of bounds errors in ppm.c - fixed tests so missing features are skipped. - -0.07 Thu May 27 03:15:00 1999 - - Fixed the typemap for i_img and i_color so that you can pass - a null pointer to them without getting a warning when warnings - are enabled. Maybe this is counter perl but it greatly increases - the usability of the functions. - -0.08 Fri May 28 14:13:21 1999 - - Added support for gif via, giflib or libungif. - gif is so ridden with patent issues but the user - can decide which library to use since they have the same - include files and calling interface. - -0.09 Mon May 31 17:52:32 1999 - - Added image scaling per axis - faster than doing both - axes at the same time. The current method uses lancoz - kernel and filtering. But more types should be added - - including: nearest neighbor, linear, and bicubic. - -0.10 Mon Jun 7 03:25:54 1999 - - Added T1 postscript font handling. It's very primitive - at the moment but creative people can do nice stuff - with it. Currently it is not possible to have it - generate an image of the correct size for a given string - but that is on the way. - -0.11 Mon Jun 7 14:43:35 1999 - - Added T1 features for direct to image rendering in - a single color. fixed some debug messages going to - stderr instead of a log file. - -0.12 Tue Jun 8 02:58:43 1999 - - Fixed bugs in jpeg.c when loading images. Also specified - prototype behaviour to on in the Imager.xs file. The - Makefile.PL step doesn't complain anymore so that is - hopefully fixed. - -0.13 Wed Jun 9 06:55:58 1999 - - Fixed Imager.xs for init_log call. Minor fixes here - and there. - -0.14 Thu Jun 10 14:11:22 1999 - - Rewrote most of the logging stuff so that it is now - possible to remove all logging from the XS part of the - module. Also some primitive check of memory usage was - added. Claes Jacobsson sent in some filters, inverter, - contrast and a noise filter. - -0.15 Mon Jun 14 08:13:29 1999 - - Wrote minor enhancement on the calling syntax list. - Started on the object interface - added better support - for quering avaliable filetypes. Fixed memory leaks in - most loaders. New filters from Claes in this version - are bumpmap, postlevels and mosaic. - -0.16 Wed Jun 16 20:54:33 1999 - - Added fixes to the BEGIN and END parts, added writer - function for the OO interface. Also added basic IPTC - reading support for jpegs. Also a few filters have been - added to the OO interface. - -0.17 Thu Jun 24 11:09:15 1999 - - Added dynamic loading stuff - It's still missing a nice - global symbol table. This will be fixed in next release. - also calling the plugins is not all to easy at the moment. - - -0.18 Mon Jun 28 12:31:33 1999 - - Added global symbol table - plugins now need a symbol - table pointer in them. When the module is loaded it is - set to point at the global symbol table. Also some barebones - Makefile.PL has been made in the dynfilt directory - it works - on my system - I hope it does on yours. - - -0.19 Fri Jul 1 15:00:03 1999 - - Added a way new scaling method for creating easy previews. - It only uses nearest neighbor, so it's doesn't look very nice - but it may be better for applications like remote sensing. - -0.20 Mon Jul 5 10:15:37 1999 - - Added and rewrote documentation. - -0.21 Mon Jul 6 19:15:37 1999 - - Fixed a bug in the scaling routine - it wasn't - handling 0< cases. - -0.22 Sat Oct 9 07:04:14 1999 - - Added a new method to write gif images - now - it is possible to have a part of a palette fixed. - this is very usefull if one needs to make sure that - some color like white is in the pallete. This method - also allows some ditherding and gives better colormap - than the mediancut from the gif libraries. It does - need much more cpu power though. Hopefully later versions - will be faster. - -0.23 **************** Internal release only - - Fixed the %instances bug - caused ALL memory to be leaked. - Added real noise function - need feedback on how it should - be used. Also box(), and polyline are now in place. Polygon - is missing but antialiased line drawing with integer endpoints are - done but should be replaced with a version that can have - floating point endvalues. Two noise filters addded. - -0.24 **************** Internal release only - - Converted i_color into an object from a reference, so now it's - giving an object instead of a void ptr or an integer or something. - -0.25 **************** Internal release only - - Added basic Truetype functionality - still needs a rewrite - to be decent. Currently it's a port of a demo program that - uses an awful amount of global variables and there is much IO since - no caching of glyphs is done. - -0.26 Tue Nov 23 03:57:00 1999 > Development release < - - Added transformations so that an image can be wrapped. - To achive decent speed a C based stackmachine is included. As a result - transformations need to be specified in rpn (postfix) notation. It - also can use the Affix::Infix2Postfix class to do the conversion for it. - -0.27 Tue Dec 28 03:57:00 1999 > CPAN release < - - This is a bugfix version mostly, thanks to claes for pointing - out the problems - fixed palette saving wasn't working correctly after - version 0.24 - rather surprised this didn't crash everything. - Also fixed that for t1 fonts the bounding box wasn't being reported - unless the font had been used before. This is either a bug in t1lib - or a mistake in it's documentation. Another lingering bug since 0.24 - what that $img->box() wasn't creating it's default color properly. - Added i_tt_text() method and more debuging to the truetype routines. - truetype testcase fixed and old debug rubish removed. - -0.28 Tue Jan 4 05:25:58 2000 > CPAN release < - - Only fixes to truetype test and transformation tests. - Thanks to schinder of cpan testers for testing and reporting. - -0.29 Tue Jan 4 21:49:57 2000 > CPAN release < - - fixes to get rid of warnings under pre 5.005, - Fixed broken preproccessor directives to work on non gnu - compilers. Fixed DSO test on HPUX - both code errors and - HPUX creates .sl instead of .so so the tests were failing. - -0.30 Sun Jan 7 05:00:06 2000 > Bunch of Alpha releases < - - An attempt to automate installation. - -0.31 Sat Jan 15 03:58:29 2000 > Fixes fixes fixes < - - Fixed a bug pointed out by Leolo where loading gifs - skips the first line of the imageload() has been - by read() - for now load is an alias for read. It will - be removed in the future. Also, fixes dynamic loading on - systems that prepend an underscore to symbols. At the present - the only system that I know of that needs this is OpenBSD. - BUT YOU MUST RECOMPILE ALL OF YOUR OLD MODULES AGAINST THIS BUILD. - Added getchannels() method ( How did I manage to delay this - untill now ). Some document changes but nothing substantial. - Also fixed the png read/write routines to handle all colorspaces - and images with alpha information. Also now it's possible to - have Imager guess the format of the files to load or save - when passing files to read or save from the filename. - Also all of the tests except dynamic loading now pass on OS/2. - -0.32 Tue Feb 29 17:26:00 2000 CPAN RELEASE - - Added the getcolorcount method. Fixed interlace handling - on png images. Fixed the missing channel count in crop() - method. Rewrote most of t1lib database stuff - created color - and font classes. T1 stuff is mostly done - TT things were - rewritten too and now include most of what is needed for - pixmap caching. Added documentation for fonts. Comments have - been added to some of the relevant c-routines. Added a copy() - function in Imager.xs and a corresponding method name. - Changed the underlying data type for the raw XS images from - pointers to objects - this will hopefully catch the most - basic errors and keep the segfaulting down. This means that - all of the underlying XS calls for readjpeg, readgif, readpng - and readraw do not take the first parameter any more. - Made fixes to keep it not spewing warning on 5.004 perl. - - **** If you had any code that didn't use the OO interface **** - **** It will probably not work any longer **** - -0.33 Beta -- No final - - Fixed the end message from Imager 0.32. Destroy called - on an empty image. Did some work on the polygon method. - Some clean up in the Makefile.PL script. Fixed a buffer - overrun in the t_transform in Imager.XS. Fixed the - error handling in the jpeg loader. It now correctly - returns undef if a load on an image fails. It also - sends the error messages to the log file. Added errstr() - method to the image object. Added a new way to read() - objects from scalars. So far this is only implemented for - jpeg, png and gif. ppm and raw soon - as always if someone - wants to do an overhaul on the ppm stuff feel free. It seems - like such a basic format that interfacing with a library is more - work than implementing all of the needed routines instead. - -0.34 Beta -- No final - - Bunch of documentation fixes, backed out ppm code. - Put in TonyC's giant transform2 patch. Fixed the patch - to make it ansi compliant. Fixed a bunch of bugs in the - Freetype code with regard to vertical and horizontal - positioning and bounding boxes. Cleaned up a lot of the - code so it runs under -Wall. Code that is still in - development such as the polygon converter do not compile - cleanly. Fixed the non antialiased versions of truetype - dump to image routines. Also removed the FIXME for the - hardcoding of antialias in the Imager string method. - Fixed sign error and a missing cache of the bounding box - calculation for the rasterize function. Removed some - debugging code I forgot to remove. Added iolayer.h - and iolayer.c but they don't do anything for now. - -0.35 pre2 -- No time yet - - Fixed some compile warnings for various files under -Wall. - Added functionality for jpeg reading of seekable files, it's not - really working yet. This version is pretty much *not* working. - Do not install unless you intend to do a lot of development. - Repeat - it doesn't even pass tests (but it compiles). Ok now reading - jpegs works from scalars, my guess is that it also works from non - seeking sources such as sockets or pipes. - -0.35 pre3 - No time yet - - Added the *right* patch from Tony which combines - the common code from i_readgif and i_readgif_scalar into - i_readgif_low. Added tiff reading support through iolayer. - -0.35 pre4 - No time yet - - Added tiff writing (no options) support through - iolayer. Also made some small fixes for the iolayer reading - (was always doing two reads when one was needed). Patched the - Imager::read() call so that it now uses a mixture of old and new - functions. - -0.35 pre5 - No time yet - - Fixed various gnu'isms in the c code (some bugs in the link list - implmentation). Fixed missing #skip codes when gif format is not - present in any form. Added fixes for 5.004_04 in the transform2 function. - Made sure it compiles cleanly with sun's cc. Switched from a .jpeg - for transform2 check to a .ppm file so it runs when jpeg is not - present. Added a test for tiff files in t10formats.t. - - -0.35 pre6 - No time yet - - Fixes to Makefile.PL. Should find freetype includes on more - distributions now. Ran tests on Solaris and Hpux, minor fixes. - Compiles with some warnings on with both hpux and solaris' cc. - Made some minor changes to the documentation. Fixes to tiff.c log - code. - -0.35 pre7 - No time yet - - Fixes 64 bit bug on freebsd. While libtiff mirrors the effects of - lseek it's toff_t is a uint32, while lseek uses off_t which can be a 64 - bit quantity. Added the IM_LFLAGS environment variable to help - people with broken libgifs (that want to link with X). - -0.35 Sun Jan 28 19:42:59 EST 2001 - - More makefile fixes, fixed a few signedness warnings. - Checked to see if it compiled cleanly on Solaris and HPUX. - Fixed a 5.004_04 warning and added more ENV flags for makefile. - -0.36 Mon Jan 29 09:36:11 EST 2001 - - String as 0 or "" caused an error in $img->string(). Fixed a - documentation error invoving string() method syntax. Merged a patch - for non antialised truetype fonts. Fixed an error in the Makefile.PL - which caused a makefile to be generated that bombed with sgi's make. - -0.37 Mon Tue 30 09:36:11 EST 2001 - - Several documentation fixes. Pod documentation for almost every - function in image.c. Added sys/types.h include in iolayer which was - causing problems on various linux systems. - -0.38 pre1 - No time yet - - Fixed a braindamaged fix on the Makefile.PL file. Moved the - code for Imager::Color into lib/Imager/Color.pm. Wrote some pod - about how it works. Made the names of Imager::Color XS routines - all begin with ICL_ and used the prefix rules of XS to get nice names - in perl. Found a bug (not fixed) in how XS handles - returning an object to an object it had as a parameter (double - free). - -0.38 pre2 - No time yet - - Fixes lots of for documentation, patch for freetype bounding - box handling. Split put code for Imager::Font into Font.pm and added - more documentation for Font.pm. Added string local ascender and - descender for tt fonts. Note that this needs to be added to t1 fonts - before 0.38 final. - -0.38 pre3 - No time yet - - Fixed an in consistency in the bounding box functions for t1 - fonts. Now both versions get the 6 argument bounding_box method - described in Imager::Font. Started converting the comments in - font.c so that they are viewable by doco.perl. Added two examples - of filters. Need to make them more usefull and then add more - notes than are in compile.txt. - - -0.38 pre4 - No time yet - - Completed adding pod comments to font.c, tiff.c and iolayer.c. - Those along with image.c should now have every single function - described in pod format. - -0.38 pre5 - No time yet - - Replaced ppm.c with pnm.c which adds support for pbm/pgm/ppm - files ascii and binary formats. Added patches for the gif routines. - Patched some of the color quantizing routines (Leolo and TonyC). - There is one bomb and one warning in this test, and frankly I don't - see why they are suddenly there. - -0.38 pre6 - No time yet - - Patch from Tony that fixes infix when Parse::RecDescent is present. - Checked some cases where malloc/free were used instead of mymalloc/myfree. - Added bufchain iolayer code. You can now write to a chain of buffers and - later slurp it all into a single perl scalar. Found some oddity of t/t10 - test not giving the right return value when malloc debugging was enabled. - Fixed some of the logging code and the malloc debugging options. Added - more tests for tiffs. - -0.38 pre7 - No time yet - - Added i_gradgen code and put it into the filters hash. Think a - seperate pod for filters would be a good idea. Also removed some of the - debugging code from the iolayer. Added pod comments to filters.c and - looked over the code. - -0.38 pre8 - No time yet - - limited Win32 support, Imager installs and builds using VC++, - but there's no image/font format support yet. - -0.38 pre9 - No time yet - - Added lots of color quantization code from Tony with benchmarks. - Also fixes ugly stack overrun in old version. Added fixes for the lmfixed - problem. Four of them, let's see which is fastest. This version adds - some voronoi partitioning - it's dog slow but it's a reference implementation - to check if faster algorithms are doing the right thing [tm]. Added a check - for giflib 3. - - Win32 support for libpng - - fixed set_internal creating 2 refs to one object - - Win32 support for jpeg - - Win32 support for tiff - - base level error reporting code added, I still need to modify - older code to use it - - fix translate=>'giflib' handling of single-colour images. - Previously a single colour image would cause an error in - MakeMapObject(). - - fix t/t10formats.t tests against giflib3 - - added test for transparent gifs - - minor doc fixes for transparent gifs - - make it less error-prone to write transparent gifs - - documented the options for reading raw images - - Changes switched to use spaces for formatting - - switch gif.c to new error reporting with related changes to - Imager.xs, Imager.pm - - each of the image formats now have their own test file, - extracted from t10formats.t, usually with som extra tests - - Added flip() and docs to Imager.pm and i_flipxy to image.c. - Added testcases too. - - Fixed an overflow bug in png.c - - added the colors parameter to Imager::read() which receives - the arrayref of colours that i_readgif(_scalar) returns - - fixed a problem in makemap_addi in quant.c where only the first - image was compared against the palette when the palette was being - refined. I screwed up on this originally (TC). This is the other - half of a fix for Leolo's lmfixed problem . - - 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 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 ) -- 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 parameter to filters so we can register filters - implemented in perl. -- document register_filter() and add test for it -- add example to SYNOPSIS of samples/inline_replace_color.pl -- minor POD fix in Imager::Color::Table -- eliminate many -Wall warnings -- update README to match unbuggy giflib -- document index parameter of Imager::Font->new() -- change faxable output to use a more fax natural PHOTOMETRIC_MINISWHITE, - since T.4 normally works that way, and MINISBLACK confuses some readers. -- clean up scale() method for readability -- make scale() fail if an invalid type is supplied (previously - documented as undefined behaviour) -- add error handling tests for scale() -- smarter warning removal -- handle effects of byte ordering when testing tiff error messages -- scale() can now expect an Image::Math::Constrain object as a scaling - constraint via the constrain parameter. -- added tests for the various ways we can specify scaling size -- documented scale()'s scalefactor parameter -- sick of $opts{scalefactor} in scale(), give it a scalar to call it's - own. -- check $Config{ldflags} and $Config{ccflags} for places to search for - headers and libraries. This deals with the way the fink build of perl - puts -L/sw/lib in ldflags rather than using loclibpth -- eliminate some of the duplication of -I and -L options in LIBS and INC -- Makefile.PL now uses strict. -- the search for freetype1.x headers is now smarter -- add tests for scaleX()/scaleY() -- expand documentation of scaleX()/scaleY() -- rotate()s back parameter now accepts color names like other methods -- convert t/t69rubthru.t to Test::More -- minor clean up of rubthrough() method -- error handling tests for rubthrough() -- expand Imager::Transformations: - - document parameters more explicitly - - document return values - - add examples - - add AUTHOR, SEE ALSO, REVISION -- eliminate sign warning from image.c -- make TIFF detection stricter -- more memory allocation integer overflow auditing -- IM_DEBUG_MALLOC wasn't interacting well with the API -- make win32.c const happy -- make raw.c C89 compliant -- added version/level to the API function table structure -- fix/simplify META.yml generation - we now generate META.yml at - Makefile.PL time, since trying to work with EU::MM to generate a - custom META.yml was a waste. -- bump to 0.47_01 - -0.48 Fri 3 Mar 2006 -- removed unused hashinfo() function from Imager.xs -- added =items for various methods, so Pod::Coverage will pick them up - (Pod::Coverage tests to be added in 0.49) -- bump to 0.48 - -0.49 -- handle short EXIF user_comment fields correctly, previously Imager - would read (and potentially) write beyond the end of an allocated block, - or through a NULL pointer if the EXIF user_comment field was less - than 8 bytes long. - https://rt.cpan.org/Ticket/Display.html?id=17981 -- tifflib 3.8.0 with MDI (Microsoft(tm) TIFF) support produces a - different error when it reads a file with a bad magic number. - Update the test to handle the possible messages. -- some jpeg.c logging calls didn't include parameters enough to match - the supplied format string. (detected by valgrind) -- in some cases memory wasn't being freed during error handling when - reading jpeg images (detected by valgrind) -- free the TIFF object correctly when reading a TIFF image and the - page number is out of range. (detected by valgrind) -- i_gsampf() (used to implement getsamples() for floating point samples) - was leaking memory. (detected by valgrind) -- writing to a PNG file was leaking one memory block - (detected by valgrind) -- some error paths when reading GIF images weren't closing the GIF - read object. (detected by valgrind) -- bump to 0.49 (to get #17981 fix out) - -================================================================= - - For latest versions check the Imager-devel pages: - http://imager.perl.org/ - -================================================================= - diff --git a/Changes.old b/Changes.old new file mode 100644 index 00000000..34ab762e --- /dev/null +++ b/Changes.old @@ -0,0 +1,1404 @@ +Revision history for Perl extension Imager. + +0.01 Thu May 6 15:25:03 1999 + - original version; created by h2xs 1.18 + +0.02 Mon May 10 20:20:20 1999 + - Added PPM writer, and a new return type to + be used to return undef() from a function returning + (int)0. + +0.03 Thu May 20 23:23:23 1999 + - Added Pseudo image handling thingies, now + you can use your own get and put pixel routines. + +0.04 Mon May 24 22:14:55 1999 + - Rewrote parts of jpeg support. + +0.05 Tue May 25 23:40:01 1999 + - Added png support with libpng + fixed error reporting and return types from + some format routines. + +0.06 Wed May 26 19:05:39 1999 + - Fixed Data::Dumper being used when it shouldn't have + added feature checking to see at run time if + certain formats are avaliable. + removed some ancient C++ style comments that hadn't + been properly removed, some out of bounds errors in ppm.c + fixed tests so missing features are skipped. + +0.07 Thu May 27 03:15:00 1999 + - Fixed the typemap for i_img and i_color so that you can pass + a null pointer to them without getting a warning when warnings + are enabled. Maybe this is counter perl but it greatly increases + the usability of the functions. + +0.08 Fri May 28 14:13:21 1999 + - Added support for gif via, giflib or libungif. + gif is so ridden with patent issues but the user + can decide which library to use since they have the same + include files and calling interface. + +0.09 Mon May 31 17:52:32 1999 + - Added image scaling per axis - faster than doing both + axes at the same time. The current method uses lancoz + kernel and filtering. But more types should be added - + including: nearest neighbor, linear, and bicubic. + +0.10 Mon Jun 7 03:25:54 1999 + - Added T1 postscript font handling. It's very primitive + at the moment but creative people can do nice stuff + with it. Currently it is not possible to have it + generate an image of the correct size for a given string + but that is on the way. + +0.11 Mon Jun 7 14:43:35 1999 + - Added T1 features for direct to image rendering in + a single color. fixed some debug messages going to + stderr instead of a log file. + +0.12 Tue Jun 8 02:58:43 1999 + - Fixed bugs in jpeg.c when loading images. Also specified + prototype behaviour to on in the Imager.xs file. The + Makefile.PL step doesn't complain anymore so that is + hopefully fixed. + +0.13 Wed Jun 9 06:55:58 1999 + - Fixed Imager.xs for init_log call. Minor fixes here + and there. + +0.14 Thu Jun 10 14:11:22 1999 + - Rewrote most of the logging stuff so that it is now + possible to remove all logging from the XS part of the + module. Also some primitive check of memory usage was + added. Claes Jacobsson sent in some filters, inverter, + contrast and a noise filter. + +0.15 Mon Jun 14 08:13:29 1999 + - Wrote minor enhancement on the calling syntax list. + Started on the object interface - added better support + for quering avaliable filetypes. Fixed memory leaks in + most loaders. New filters from Claes in this version + are bumpmap, postlevels and mosaic. + +0.16 Wed Jun 16 20:54:33 1999 + - Added fixes to the BEGIN and END parts, added writer + function for the OO interface. Also added basic IPTC + reading support for jpegs. Also a few filters have been + added to the OO interface. + +0.17 Thu Jun 24 11:09:15 1999 + - Added dynamic loading stuff - It's still missing a nice + global symbol table. This will be fixed in next release. + also calling the plugins is not all to easy at the moment. + + +0.18 Mon Jun 28 12:31:33 1999 + - Added global symbol table - plugins now need a symbol + table pointer in them. When the module is loaded it is + set to point at the global symbol table. Also some barebones + Makefile.PL has been made in the dynfilt directory - it works + on my system - I hope it does on yours. + + +0.19 Fri Jul 1 15:00:03 1999 + - Added a way new scaling method for creating easy previews. + It only uses nearest neighbor, so it's doesn't look very nice + but it may be better for applications like remote sensing. + +0.20 Mon Jul 5 10:15:37 1999 + - Added and rewrote documentation. + +0.21 Mon Jul 6 19:15:37 1999 + - Fixed a bug in the scaling routine - it wasn't + handling 0< cases. + +0.22 Sat Oct 9 07:04:14 1999 + - Added a new method to write gif images - now + it is possible to have a part of a palette fixed. + this is very usefull if one needs to make sure that + some color like white is in the pallete. This method + also allows some ditherding and gives better colormap + than the mediancut from the gif libraries. It does + need much more cpu power though. Hopefully later versions + will be faster. + +0.23 **************** Internal release only + - Fixed the %instances bug - caused ALL memory to be leaked. + Added real noise function - need feedback on how it should + be used. Also box(), and polyline are now in place. Polygon + is missing but antialiased line drawing with integer endpoints are + done but should be replaced with a version that can have + floating point endvalues. Two noise filters addded. + +0.24 **************** Internal release only + - Converted i_color into an object from a reference, so now it's + giving an object instead of a void ptr or an integer or something. + +0.25 **************** Internal release only + - Added basic Truetype functionality - still needs a rewrite + to be decent. Currently it's a port of a demo program that + uses an awful amount of global variables and there is much IO since + no caching of glyphs is done. + +0.26 Tue Nov 23 03:57:00 1999 > Development release < + - Added transformations so that an image can be wrapped. + To achive decent speed a C based stackmachine is included. As a result + transformations need to be specified in rpn (postfix) notation. It + also can use the Affix::Infix2Postfix class to do the conversion for it. + +0.27 Tue Dec 28 03:57:00 1999 > CPAN release < + - This is a bugfix version mostly, thanks to claes for pointing + out the problems - fixed palette saving wasn't working correctly after + version 0.24 - rather surprised this didn't crash everything. + Also fixed that for t1 fonts the bounding box wasn't being reported + unless the font had been used before. This is either a bug in t1lib + or a mistake in it's documentation. Another lingering bug since 0.24 + what that $img->box() wasn't creating it's default color properly. + Added i_tt_text() method and more debuging to the truetype routines. + truetype testcase fixed and old debug rubish removed. + +0.28 Tue Jan 4 05:25:58 2000 > CPAN release < + - Only fixes to truetype test and transformation tests. + Thanks to schinder of cpan testers for testing and reporting. + +0.29 Tue Jan 4 21:49:57 2000 > CPAN release < + - fixes to get rid of warnings under pre 5.005, + Fixed broken preproccessor directives to work on non gnu + compilers. Fixed DSO test on HPUX - both code errors and + HPUX creates .sl instead of .so so the tests were failing. + +0.30 Sun Jan 7 05:00:06 2000 > Bunch of Alpha releases < + - An attempt to automate installation. + +0.31 Sat Jan 15 03:58:29 2000 > Fixes fixes fixes < + - Fixed a bug pointed out by Leolo where loading gifs + skips the first line of the imageload() has been + by read() - for now load is an alias for read. It will + be removed in the future. Also, fixes dynamic loading on + systems that prepend an underscore to symbols. At the present + the only system that I know of that needs this is OpenBSD. + BUT YOU MUST RECOMPILE ALL OF YOUR OLD MODULES AGAINST THIS BUILD. + Added getchannels() method ( How did I manage to delay this + untill now ). Some document changes but nothing substantial. + Also fixed the png read/write routines to handle all colorspaces + and images with alpha information. Also now it's possible to + have Imager guess the format of the files to load or save + when passing files to read or save from the filename. + Also all of the tests except dynamic loading now pass on OS/2. + +0.32 Tue Feb 29 17:26:00 2000 CPAN RELEASE + - Added the getcolorcount method. Fixed interlace handling + on png images. Fixed the missing channel count in crop() + method. Rewrote most of t1lib database stuff - created color + and font classes. T1 stuff is mostly done - TT things were + rewritten too and now include most of what is needed for + pixmap caching. Added documentation for fonts. Comments have + been added to some of the relevant c-routines. Added a copy() + function in Imager.xs and a corresponding method name. + Changed the underlying data type for the raw XS images from + pointers to objects - this will hopefully catch the most + basic errors and keep the segfaulting down. This means that + all of the underlying XS calls for readjpeg, readgif, readpng + and readraw do not take the first parameter any more. + Made fixes to keep it not spewing warning on 5.004 perl. + + **** If you had any code that didn't use the OO interface **** + **** It will probably not work any longer **** + +0.33 Beta -- No final + - Fixed the end message from Imager 0.32. Destroy called + on an empty image. Did some work on the polygon method. + Some clean up in the Makefile.PL script. Fixed a buffer + overrun in the t_transform in Imager.XS. Fixed the + error handling in the jpeg loader. It now correctly + returns undef if a load on an image fails. It also + sends the error messages to the log file. Added errstr() + method to the image object. Added a new way to read() + objects from scalars. So far this is only implemented for + jpeg, png and gif. ppm and raw soon - as always if someone + wants to do an overhaul on the ppm stuff feel free. It seems + like such a basic format that interfacing with a library is more + work than implementing all of the needed routines instead. + +0.34 Beta -- No final + - Bunch of documentation fixes, backed out ppm code. + Put in TonyC's giant transform2 patch. Fixed the patch + to make it ansi compliant. Fixed a bunch of bugs in the + Freetype code with regard to vertical and horizontal + positioning and bounding boxes. Cleaned up a lot of the + code so it runs under -Wall. Code that is still in + development such as the polygon converter do not compile + cleanly. Fixed the non antialiased versions of truetype + dump to image routines. Also removed the FIXME for the + hardcoding of antialias in the Imager string method. + Fixed sign error and a missing cache of the bounding box + calculation for the rasterize function. Removed some + debugging code I forgot to remove. Added iolayer.h + and iolayer.c but they don't do anything for now. + +0.35 pre2 -- No time yet + - Fixed some compile warnings for various files under -Wall. + Added functionality for jpeg reading of seekable files, it's not + really working yet. This version is pretty much *not* working. + Do not install unless you intend to do a lot of development. + Repeat - it doesn't even pass tests (but it compiles). Ok now reading + jpegs works from scalars, my guess is that it also works from non + seeking sources such as sockets or pipes. + +0.35 pre3 - No time yet + - Added the *right* patch from Tony which combines + the common code from i_readgif and i_readgif_scalar into + i_readgif_low. Added tiff reading support through iolayer. + +0.35 pre4 - No time yet + - Added tiff writing (no options) support through + iolayer. Also made some small fixes for the iolayer reading + (was always doing two reads when one was needed). Patched the + Imager::read() call so that it now uses a mixture of old and new + functions. + +0.35 pre5 - No time yet + - Fixed various gnu'isms in the c code (some bugs in the link list + implmentation). Fixed missing #skip codes when gif format is not + present in any form. Added fixes for 5.004_04 in the transform2 function. + Made sure it compiles cleanly with sun's cc. Switched from a .jpeg + for transform2 check to a .ppm file so it runs when jpeg is not + present. Added a test for tiff files in t10formats.t. + + +0.35 pre6 - No time yet + - Fixes to Makefile.PL. Should find freetype includes on more + distributions now. Ran tests on Solaris and Hpux, minor fixes. + Compiles with some warnings on with both hpux and solaris' cc. + Made some minor changes to the documentation. Fixes to tiff.c log + code. + +0.35 pre7 - No time yet + - Fixes 64 bit bug on freebsd. While libtiff mirrors the effects of + lseek it's toff_t is a uint32, while lseek uses off_t which can be a 64 + bit quantity. Added the IM_LFLAGS environment variable to help + people with broken libgifs (that want to link with X). + +0.35 Sun Jan 28 19:42:59 EST 2001 + - More makefile fixes, fixed a few signedness warnings. + Checked to see if it compiled cleanly on Solaris and HPUX. + Fixed a 5.004_04 warning and added more ENV flags for makefile. + +0.36 Mon Jan 29 09:36:11 EST 2001 + - String as 0 or "" caused an error in $img->string(). Fixed a + documentation error invoving string() method syntax. Merged a patch + for non antialised truetype fonts. Fixed an error in the Makefile.PL + which caused a makefile to be generated that bombed with sgi's make. + +0.37 Mon Tue 30 09:36:11 EST 2001 + - Several documentation fixes. Pod documentation for almost every + function in image.c. Added sys/types.h include in iolayer which was + causing problems on various linux systems. + +0.38 pre1 - No time yet + - Fixed a braindamaged fix on the Makefile.PL file. Moved the + code for Imager::Color into lib/Imager/Color.pm. Wrote some pod + about how it works. Made the names of Imager::Color XS routines + all begin with ICL_ and used the prefix rules of XS to get nice names + in perl. Found a bug (not fixed) in how XS handles + returning an object to an object it had as a parameter (double + free). + +0.38 pre2 - No time yet + - Fixes lots of for documentation, patch for freetype bounding + box handling. Split put code for Imager::Font into Font.pm and added + more documentation for Font.pm. Added string local ascender and + descender for tt fonts. Note that this needs to be added to t1 fonts + before 0.38 final. + +0.38 pre3 - No time yet + - Fixed an in consistency in the bounding box functions for t1 + fonts. Now both versions get the 6 argument bounding_box method + described in Imager::Font. Started converting the comments in + font.c so that they are viewable by doco.perl. Added two examples + of filters. Need to make them more usefull and then add more + notes than are in compile.txt. + + +0.38 pre4 - No time yet + - Completed adding pod comments to font.c, tiff.c and iolayer.c. + Those along with image.c should now have every single function + described in pod format. + +0.38 pre5 - No time yet + - Replaced ppm.c with pnm.c which adds support for pbm/pgm/ppm + files ascii and binary formats. Added patches for the gif routines. + Patched some of the color quantizing routines (Leolo and TonyC). + There is one bomb and one warning in this test, and frankly I don't + see why they are suddenly there. + +0.38 pre6 - No time yet + - Patch from Tony that fixes infix when Parse::RecDescent is present. + Checked some cases where malloc/free were used instead of mymalloc/myfree. + Added bufchain iolayer code. You can now write to a chain of buffers and + later slurp it all into a single perl scalar. Found some oddity of t/t10 + test not giving the right return value when malloc debugging was enabled. + Fixed some of the logging code and the malloc debugging options. Added + more tests for tiffs. + +0.38 pre7 - No time yet + - Added i_gradgen code and put it into the filters hash. Think a + seperate pod for filters would be a good idea. Also removed some of the + debugging code from the iolayer. Added pod comments to filters.c and + looked over the code. + +0.38 pre8 - No time yet + - limited Win32 support, Imager installs and builds using VC++, + but there's no image/font format support yet. + +0.38 pre9 - No time yet + - Added lots of color quantization code from Tony with benchmarks. + Also fixes ugly stack overrun in old version. Added fixes for the lmfixed + problem. Four of them, let's see which is fastest. This version adds + some voronoi partitioning - it's dog slow but it's a reference implementation + to check if faster algorithms are doing the right thing [tm]. Added a check + for giflib 3. + - Win32 support for libpng + - fixed set_internal creating 2 refs to one object + - Win32 support for jpeg + - Win32 support for tiff + - base level error reporting code added, I still need to modify + older code to use it + - fix translate=>'giflib' handling of single-colour images. + Previously a single colour image would cause an error in + MakeMapObject(). + - fix t/t10formats.t tests against giflib3 + - added test for transparent gifs + - minor doc fixes for transparent gifs + - make it less error-prone to write transparent gifs + - documented the options for reading raw images + - Changes switched to use spaces for formatting + - switch gif.c to new error reporting with related changes to + Imager.xs, Imager.pm + - each of the image formats now have their own test file, + extracted from t10formats.t, usually with som extra tests + - Added flip() and docs to Imager.pm and i_flipxy to image.c. + Added testcases too. + - Fixed an overflow bug in png.c + - added the colors parameter to Imager::read() which receives + the arrayref of colours that i_readgif(_scalar) returns + - fixed a problem in makemap_addi in quant.c where only the first + image was compared against the palette when the palette was being + refined. I screwed up on this originally (TC). This is the other + half of a fix for Leolo's lmfixed problem . + - 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 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 ) +- 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 parameter to filters so we can register filters + implemented in perl. +- document register_filter() and add test for it +- add example to SYNOPSIS of samples/inline_replace_color.pl +- minor POD fix in Imager::Color::Table +- eliminate many -Wall warnings +- update README to match unbuggy giflib +- document index parameter of Imager::Font->new() +- change faxable output to use a more fax natural PHOTOMETRIC_MINISWHITE, + since T.4 normally works that way, and MINISBLACK confuses some readers. +- clean up scale() method for readability +- make scale() fail if an invalid type is supplied (previously + documented as undefined behaviour) +- add error handling tests for scale() +- smarter warning removal +- handle effects of byte ordering when testing tiff error messages +- scale() can now expect an Image::Math::Constrain object as a scaling + constraint via the constrain parameter. +- added tests for the various ways we can specify scaling size +- documented scale()'s scalefactor parameter +- sick of $opts{scalefactor} in scale(), give it a scalar to call it's + own. +- check $Config{ldflags} and $Config{ccflags} for places to search for + headers and libraries. This deals with the way the fink build of perl + puts -L/sw/lib in ldflags rather than using loclibpth +- eliminate some of the duplication of -I and -L options in LIBS and INC +- Makefile.PL now uses strict. +- the search for freetype1.x headers is now smarter +- add tests for scaleX()/scaleY() +- expand documentation of scaleX()/scaleY() +- rotate()s back parameter now accepts color names like other methods +- convert t/t69rubthru.t to Test::More +- minor clean up of rubthrough() method +- error handling tests for rubthrough() +- expand Imager::Transformations: + - document parameters more explicitly + - document return values + - add examples + - add AUTHOR, SEE ALSO, REVISION +- eliminate sign warning from image.c +- make TIFF detection stricter +- more memory allocation integer overflow auditing +- IM_DEBUG_MALLOC wasn't interacting well with the API +- make win32.c const happy +- make raw.c C89 compliant +- added version/level to the API function table structure +- fix/simplify META.yml generation - we now generate META.yml at + Makefile.PL time, since trying to work with EU::MM to generate a + custom META.yml was a waste. +- bump to 0.47_01 + +0.48 Fri 3 Mar 2006 +- removed unused hashinfo() function from Imager.xs +- added =items for various methods, so Pod::Coverage will pick them up + (Pod::Coverage tests to be added in 0.49) +- bump to 0.48 + +0.49 +- handle short EXIF user_comment fields correctly, previously Imager + would read (and potentially) write beyond the end of an allocated block, + or through a NULL pointer if the EXIF user_comment field was less + than 8 bytes long. + https://rt.cpan.org/Ticket/Display.html?id=17981 +- tifflib 3.8.0 with MDI (Microsoft(tm) TIFF) support produces a + different error when it reads a file with a bad magic number. + Update the test to handle the possible messages. +- some jpeg.c logging calls didn't include parameters enough to match + the supplied format string. (detected by valgrind) +- in some cases memory wasn't being freed during error handling when + reading jpeg images (detected by valgrind) +- free the TIFF object correctly when reading a TIFF image and the + page number is out of range. (detected by valgrind) +- i_gsampf() (used to implement getsamples() for floating point samples) + was leaking memory. (detected by valgrind) +- writing to a PNG file was leaking one memory block + (detected by valgrind) +- some error paths when reading GIF images weren't closing the GIF + read object. (detected by valgrind) +- bump to 0.49 (to get #17981 fix out) + +================================================================= + + For latest versions check the Imager-devel pages: + http://imager.perl.org/ + +================================================================= + diff --git a/MANIFEST b/MANIFEST index 7973c02c..35ca0ec0 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,4 +1,5 @@ Changes +Changes.old Old changes CountColor/CountColor.pm sample XS access to API CountColor/CountColor.xs CountColor/Makefile.PL diff --git a/Makefile.PL b/Makefile.PL index 5aace310..024072bb 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -82,6 +82,7 @@ my @libs; # all the places to look for libraries init(); # initialize global data pathcheck(); # Check if directories exist +distcheck(); # for building dists if (exists $ENV{IM_ENABLE}) { my %en = map { $_, 1 } split ' ', $ENV{IM_ENABLE}; @@ -866,3 +867,32 @@ YAML close META; } } + +# this is intended to only be running on the development +# machines +sub distcheck { + if (-e '.svn') { + # update Changes if needed + my $write_changes; + # get the last revision from Changes + if (open CHANGES, "< Changes") { + ; + my ($changes_rev) = =~ /^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'; + } + } +}