1 Revision history for Perl extension Imager.
3 0.01 Thu May 6 15:25:03 1999
4 - original version; created by h2xs 1.18
6 0.02 Mon May 10 20:20:20 1999
7 - Added PPM writer, and a new return type to
8 be used to return undef() from a function returning
11 0.03 Thu May 20 23:23:23 1999
12 - Added Pseudo image handling thingies, now
13 you can use your own get and put pixel routines.
15 0.04 Mon May 24 22:14:55 1999
16 - Rewrote parts of jpeg support.
18 0.05 Tue May 25 23:40:01 1999
19 - Added png support with libpng
20 fixed error reporting and return types from
23 0.06 Wed May 26 19:05:39 1999
24 - Fixed Data::Dumper being used when it shouldn't have
25 added feature checking to see at run time if
26 certain formats are avaliable.
27 removed some ancient C++ style comments that hadn't
28 been properly removed, some out of bounds errors in ppm.c
29 fixed tests so missing features are skipped.
31 0.07 Thu May 27 03:15:00 1999
32 - Fixed the typemap for i_img and i_color so that you can pass
33 a null pointer to them without getting a warning when warnings
34 are enabled. Maybe this is counter perl but it greatly increases
35 the usability of the functions.
37 0.08 Fri May 28 14:13:21 1999
38 - Added support for gif via, giflib or libungif.
39 gif is so ridden with patent issues but the user
40 can decide which library to use since they have the same
41 include files and calling interface.
43 0.09 Mon May 31 17:52:32 1999
44 - Added image scaling per axis - faster than doing both
45 axes at the same time. The current method uses lancoz
46 kernel and filtering. But more types should be added -
47 including: nearest neighbor, linear, and bicubic.
49 0.10 Mon Jun 7 03:25:54 1999
50 - Added T1 postscript font handling. It's very primitive
51 at the moment but creative people can do nice stuff
52 with it. Currently it is not possible to have it
53 generate an image of the correct size for a given string
54 but that is on the way.
56 0.11 Mon Jun 7 14:43:35 1999
57 - Added T1 features for direct to image rendering in
58 a single color. fixed some debug messages going to
59 stderr instead of a log file.
61 0.12 Tue Jun 8 02:58:43 1999
62 - Fixed bugs in jpeg.c when loading images. Also specified
63 prototype behaviour to on in the Imager.xs file. The
64 Makefile.PL step doesn't complain anymore so that is
67 0.13 Wed Jun 9 06:55:58 1999
68 - Fixed Imager.xs for init_log call. Minor fixes here
71 0.14 Thu Jun 10 14:11:22 1999
72 - Rewrote most of the logging stuff so that it is now
73 possible to remove all logging from the XS part of the
74 module. Also some primitive check of memory usage was
75 added. Claes Jacobsson sent in some filters, inverter,
76 contrast and a noise filter.
78 0.15 Mon Jun 14 08:13:29 1999
79 - Wrote minor enhancement on the calling syntax list.
80 Started on the object interface - added better support
81 for quering avaliable filetypes. Fixed memory leaks in
82 most loaders. New filters from Claes in this version
83 are bumpmap, postlevels and mosaic.
85 0.16 Wed Jun 16 20:54:33 1999
86 - Added fixes to the BEGIN and END parts, added writer
87 function for the OO interface. Also added basic IPTC
88 reading support for jpegs. Also a few filters have been
89 added to the OO interface.
91 0.17 Thu Jun 24 11:09:15 1999
92 - Added dynamic loading stuff - It's still missing a nice
93 global symbol table. This will be fixed in next release.
94 also calling the plugins is not all to easy at the moment.
97 0.18 Mon Jun 28 12:31:33 1999
98 - Added global symbol table - plugins now need a symbol
99 table pointer in them. When the module is loaded it is
100 set to point at the global symbol table. Also some barebones
101 Makefile.PL has been made in the dynfilt directory - it works
102 on my system - I hope it does on yours.
105 0.19 Fri Jul 1 15:00:03 1999
106 - Added a way new scaling method for creating easy previews.
107 It only uses nearest neighbor, so it's doesn't look very nice
108 but it may be better for applications like remote sensing.
110 0.20 Mon Jul 5 10:15:37 1999
111 - Added and rewrote documentation.
113 0.21 Mon Jul 6 19:15:37 1999
114 - Fixed a bug in the scaling routine - it wasn't
117 0.22 Sat Oct 9 07:04:14 1999
118 - Added a new method to write gif images - now
119 it is possible to have a part of a palette fixed.
120 this is very usefull if one needs to make sure that
121 some color like white is in the pallete. This method
122 also allows some ditherding and gives better colormap
123 than the mediancut from the gif libraries. It does
124 need much more cpu power though. Hopefully later versions
127 0.23 **************** Internal release only
128 - Fixed the %instances bug - caused ALL memory to be leaked.
129 Added real noise function - need feedback on how it should
130 be used. Also box(), and polyline are now in place. Polygon
131 is missing but antialiased line drawing with integer endpoints are
132 done but should be replaced with a version that can have
133 floating point endvalues. Two noise filters addded.
135 0.24 **************** Internal release only
136 - Converted i_color into an object from a reference, so now it's
137 giving an object instead of a void ptr or an integer or something.
139 0.25 **************** Internal release only
140 - Added basic Truetype functionality - still needs a rewrite
141 to be decent. Currently it's a port of a demo program that
142 uses an awful amount of global variables and there is much IO since
143 no caching of glyphs is done.
145 0.26 Tue Nov 23 03:57:00 1999 > Development release <
146 - Added transformations so that an image can be wrapped.
147 To achive decent speed a C based stackmachine is included. As a result
148 transformations need to be specified in rpn (postfix) notation. It
149 also can use the Affix::Infix2Postfix class to do the conversion for it.
151 0.27 Tue Dec 28 03:57:00 1999 > CPAN release <
152 - This is a bugfix version mostly, thanks to claes for pointing
153 out the problems - fixed palette saving wasn't working correctly after
154 version 0.24 - rather surprised this didn't crash everything.
155 Also fixed that for t1 fonts the bounding box wasn't being reported
156 unless the font had been used before. This is either a bug in t1lib
157 or a mistake in it's documentation. Another lingering bug since 0.24
158 what that $img->box() wasn't creating it's default color properly.
159 Added i_tt_text() method and more debuging to the truetype routines.
160 truetype testcase fixed and old debug rubish removed.
162 0.28 Tue Jan 4 05:25:58 2000 > CPAN release <
163 - Only fixes to truetype test and transformation tests.
164 Thanks to schinder of cpan testers for testing and reporting.
166 0.29 Tue Jan 4 21:49:57 2000 > CPAN release <
167 - fixes to get rid of warnings under pre 5.005,
168 Fixed broken preproccessor directives to work on non gnu
169 compilers. Fixed DSO test on HPUX - both code errors and
170 HPUX creates .sl instead of .so so the tests were failing.
172 0.30 Sun Jan 7 05:00:06 2000 > Bunch of Alpha releases <
173 - An attempt to automate installation.
175 0.31 Sat Jan 15 03:58:29 2000 > Fixes fixes fixes <
176 - Fixed a bug pointed out by Leolo where loading gifs
177 skips the first line of the imageload() has been
178 by read() - for now load is an alias for read. It will
179 be removed in the future. Also, fixes dynamic loading on
180 systems that prepend an underscore to symbols. At the present
181 the only system that I know of that needs this is OpenBSD.
182 BUT YOU MUST RECOMPILE ALL OF YOUR OLD MODULES AGAINST THIS BUILD.
183 Added getchannels() method ( How did I manage to delay this
184 untill now ). Some document changes but nothing substantial.
185 Also fixed the png read/write routines to handle all colorspaces
186 and images with alpha information. Also now it's possible to
187 have Imager guess the format of the files to load or save
188 when passing files to read or save from the filename.
189 Also all of the tests except dynamic loading now pass on OS/2.
191 0.32 Tue Feb 29 17:26:00 2000 CPAN RELEASE
192 - Added the getcolorcount method. Fixed interlace handling
193 on png images. Fixed the missing channel count in crop()
194 method. Rewrote most of t1lib database stuff - created color
195 and font classes. T1 stuff is mostly done - TT things were
196 rewritten too and now include most of what is needed for
197 pixmap caching. Added documentation for fonts. Comments have
198 been added to some of the relevant c-routines. Added a copy()
199 function in Imager.xs and a corresponding method name.
200 Changed the underlying data type for the raw XS images from
201 pointers to objects - this will hopefully catch the most
202 basic errors and keep the segfaulting down. This means that
203 all of the underlying XS calls for readjpeg, readgif, readpng
204 and readraw do not take the first parameter any more.
205 Made fixes to keep it not spewing warning on 5.004 perl.
207 **** If you had any code that didn't use the OO interface ****
208 **** It will probably not work any longer ****
210 0.33 Beta -- No final
211 - Fixed the end message from Imager 0.32. Destroy called
212 on an empty image. Did some work on the polygon method.
213 Some clean up in the Makefile.PL script. Fixed a buffer
214 overrun in the t_transform in Imager.XS. Fixed the
215 error handling in the jpeg loader. It now correctly
216 returns undef if a load on an image fails. It also
217 sends the error messages to the log file. Added errstr()
218 method to the image object. Added a new way to read()
219 objects from scalars. So far this is only implemented for
220 jpeg, png and gif. ppm and raw soon - as always if someone
221 wants to do an overhaul on the ppm stuff feel free. It seems
222 like such a basic format that interfacing with a library is more
223 work than implementing all of the needed routines instead.
225 0.34 Beta -- No final
226 - Bunch of documentation fixes, backed out ppm code.
227 Put in TonyC's giant transform2 patch. Fixed the patch
228 to make it ansi compliant. Fixed a bunch of bugs in the
229 Freetype code with regard to vertical and horizontal
230 positioning and bounding boxes. Cleaned up a lot of the
231 code so it runs under -Wall. Code that is still in
232 development such as the polygon converter do not compile
233 cleanly. Fixed the non antialiased versions of truetype
234 dump to image routines. Also removed the FIXME for the
235 hardcoding of antialias in the Imager string method.
236 Fixed sign error and a missing cache of the bounding box
237 calculation for the rasterize function. Removed some
238 debugging code I forgot to remove. Added iolayer.h
239 and iolayer.c but they don't do anything for now.
241 0.35 pre2 -- No time yet
242 - Fixed some compile warnings for various files under -Wall.
243 Added functionality for jpeg reading of seekable files, it's not
244 really working yet. This version is pretty much *not* working.
245 Do not install unless you intend to do a lot of development.
246 Repeat - it doesn't even pass tests (but it compiles). Ok now reading
247 jpegs works from scalars, my guess is that it also works from non
248 seeking sources such as sockets or pipes.
250 0.35 pre3 - No time yet
251 - Added the *right* patch from Tony which combines
252 the common code from i_readgif and i_readgif_scalar into
253 i_readgif_low. Added tiff reading support through iolayer.
255 0.35 pre4 - No time yet
256 - Added tiff writing (no options) support through
257 iolayer. Also made some small fixes for the iolayer reading
258 (was always doing two reads when one was needed). Patched the
259 Imager::read() call so that it now uses a mixture of old and new
262 0.35 pre5 - No time yet
263 - Fixed various gnu'isms in the c code (some bugs in the link list
264 implmentation). Fixed missing #skip codes when gif format is not
265 present in any form. Added fixes for 5.004_04 in the transform2 function.
266 Made sure it compiles cleanly with sun's cc. Switched from a .jpeg
267 for transform2 check to a .ppm file so it runs when jpeg is not
268 present. Added a test for tiff files in t10formats.t.
271 0.35 pre6 - No time yet
272 - Fixes to Makefile.PL. Should find freetype includes on more
273 distributions now. Ran tests on Solaris and Hpux, minor fixes.
274 Compiles with some warnings on with both hpux and solaris' cc.
275 Made some minor changes to the documentation. Fixes to tiff.c log
278 0.35 pre7 - No time yet
279 - Fixes 64 bit bug on freebsd. While libtiff mirrors the effects of
280 lseek it's toff_t is a uint32, while lseek uses off_t which can be a 64
281 bit quantity. Added the IM_LFLAGS environment variable to help
282 people with broken libgifs (that want to link with X).
284 0.35 Sun Jan 28 19:42:59 EST 2001
285 - More makefile fixes, fixed a few signedness warnings.
286 Checked to see if it compiled cleanly on Solaris and HPUX.
287 Fixed a 5.004_04 warning and added more ENV flags for makefile.
289 0.36 Mon Jan 29 09:36:11 EST 2001
290 - String as 0 or "" caused an error in $img->string(). Fixed a
291 documentation error invoving string() method syntax. Merged a patch
292 for non antialised truetype fonts. Fixed an error in the Makefile.PL
293 which caused a makefile to be generated that bombed with sgi's make.
295 0.37 Mon Tue 30 09:36:11 EST 2001
296 - Several documentation fixes. Pod documentation for almost every
297 function in image.c. Added sys/types.h include in iolayer which was
298 causing problems on various linux systems.
300 0.38 pre1 - No time yet
301 - Fixed a braindamaged fix on the Makefile.PL file. Moved the
302 code for Imager::Color into lib/Imager/Color.pm. Wrote some pod
303 about how it works. Made the names of Imager::Color XS routines
304 all begin with ICL_ and used the prefix rules of XS to get nice names
305 in perl. Found a bug (not fixed) in how XS handles
306 returning an object to an object it had as a parameter (double
309 0.38 pre2 - No time yet
310 - Fixes lots of for documentation, patch for freetype bounding
311 box handling. Split put code for Imager::Font into Font.pm and added
312 more documentation for Font.pm. Added string local ascender and
313 descender for tt fonts. Note that this needs to be added to t1 fonts
316 0.38 pre3 - No time yet
317 - Fixed an in consistency in the bounding box functions for t1
318 fonts. Now both versions get the 6 argument bounding_box method
319 described in Imager::Font. Started converting the comments in
320 font.c so that they are viewable by doco.perl. Added two examples
321 of filters. Need to make them more usefull and then add more
322 notes than are in compile.txt.
325 0.38 pre4 - No time yet
326 - Completed adding pod comments to font.c, tiff.c and iolayer.c.
327 Those along with image.c should now have every single function
328 described in pod format.
330 0.38 pre5 - No time yet
331 - Replaced ppm.c with pnm.c which adds support for pbm/pgm/ppm
332 files ascii and binary formats. Added patches for the gif routines.
333 Patched some of the color quantizing routines (Leolo and TonyC).
334 There is one bomb and one warning in this test, and frankly I don't
335 see why they are suddenly there.
337 0.38 pre6 - No time yet
338 - Patch from Tony that fixes infix when Parse::RecDescent is present.
339 Checked some cases where malloc/free were used instead of mymalloc/myfree.
340 Added bufchain iolayer code. You can now write to a chain of buffers and
341 later slurp it all into a single perl scalar. Found some oddity of t/t10
342 test not giving the right return value when malloc debugging was enabled.
343 Fixed some of the logging code and the malloc debugging options. Added
344 more tests for tiffs.
346 0.38 pre7 - No time yet
347 - Added i_gradgen code and put it into the filters hash. Think a
348 seperate pod for filters would be a good idea. Also removed some of the
349 debugging code from the iolayer. Added pod comments to filters.c and
350 looked over the code.
352 0.38 pre8 - No time yet
353 - limited Win32 support, Imager installs and builds using VC++,
354 but there's no image/font format support yet.
356 0.38 pre9 - No time yet
357 - Added lots of color quantization code from Tony with benchmarks.
358 Also fixes ugly stack overrun in old version. Added fixes for the lmfixed
359 problem. Four of them, let's see which is fastest. This version adds
360 some voronoi partitioning - it's dog slow but it's a reference implementation
361 to check if faster algorithms are doing the right thing [tm]. Added a check
363 - Win32 support for libpng
364 - fixed set_internal creating 2 refs to one object
365 - Win32 support for jpeg
366 - Win32 support for tiff
367 - base level error reporting code added, I still need to modify
369 - fix translate=>'giflib' handling of single-colour images.
370 Previously a single colour image would cause an error in
372 - fix t/t10formats.t tests against giflib3
373 - added test for transparent gifs
374 - minor doc fixes for transparent gifs
375 - make it less error-prone to write transparent gifs
376 - documented the options for reading raw images
377 - Changes switched to use spaces for formatting
378 - switch gif.c to new error reporting with related changes to
380 - each of the image formats now have their own test file,
381 extracted from t10formats.t, usually with som extra tests
382 - Added flip() and docs to Imager.pm and i_flipxy to image.c.
384 - Fixed an overflow bug in png.c
385 - added the colors parameter to Imager::read() which receives
386 the arrayref of colours that i_readgif(_scalar) returns
387 - fixed a problem in makemap_addi in quant.c where only the first
388 image was compared against the palette when the palette was being
389 refined. I screwed up on this originally (TC). This is the other
390 half of a fix for Leolo's lmfixed problem <sigh>.
391 - makemap_addi() now only puts colours into the palette that it
392 found while optimizing the palette (so we don't get 256 colour
393 palettes for 2 colour images :)
394 - initial implementation of a row-based interface to low-level
395 images (for performance)
396 - changed Imager::read() for GIF so that the arrayref pointed to
397 by the ref supplied in colors contains Imager::Color objects
398 instead of more arrayrefs, keep this interface stable until we
399 can make an informed choice about i_readgif()
400 - incorporated Micksa's faxable tiff support, treating as a type
401 of tiff rather than a separate format
402 - t/t70newgif.t now checks for gif support
403 - added the convert() method
404 - Added support for transparent to alpha conversion during loading
405 of png files. Note that libpng 1.0.1 is broken in handling this,
406 we know that 1.0.5 works.
407 - support for writing PGM (portable gray map) files
408 - Fix for i_gifread_low() for images with only a local and no global
409 colormap and an abort if no colormap is present (which is legal
411 - several fixes to i_readgif_low()
412 - Fixed crop() method so that it is consistent with documentation.
413 - make clean now removes the testout directory
414 - added tests for the OO interface for tiff, added an option to
415 choose the resolution for fax tiffs, removed some unused code,
416 fixed minor problems with Imager::write() handling of image types
417 - changed README note on libgif bug to refer to t105gif.t instead
421 - split Imager::Font into a base, *::Type1 and *::Truetype
422 - writing faxable tiff now allows 2 and 4 channel images
423 - virtual image interface - 8-bit/sample images
425 - 16-bit/sample images
427 - writing non-8bit images to raw
428 - writing '' '' to tiff
429 - i_convert support for high-bit images and paletted images
430 - i_copy for high-bit and paletted images
432 - rubthru can now rub a 2 channel image over a 1 or 3 channel
434 - rubthru for high-bit images
435 - i_readgif_multi functions, which return all the frames from a
436 GIF file, along with a bunch of meta-information as tag
437 - OO interface to tags
438 - OO interface read_multi() to read multi-image files (just GIF
440 - documentation for the multi-image GIF reading and tags
441 - rotate() method with rotate by steps of 90 degrees (and docs)
442 - fixed a bug in i_img_pal_new_low()
443 - added gaussian to the filters list
444 - documented the individual filters
445 - fixed the right-hand side of bounding boxes for TT fonts
446 where the last character overlaps the advance width (eg.
448 - added rotation by exact amounts in degrees or radians,
449 implemented using the matrix idea from Addi. The procedural
450 matrix transformer is exposed, but still needs testing (as XS)
451 and needs an OO interface, hopefully with some helper tools,
452 like the preset interface with ->convert().
453 - MY::postamble() in Makefile.PL included a broken rule
454 (Makefile.PL 1.13.2.5)
455 - support for GDI fonts under Win32
456 - made that work for cygwin too (needs the w32api package)
457 - freetype1 support under Win32
458 - t1lib support under Win32
459 - fixed a minor bug in font.c (invalid font files caused a SEGV)
460 - checked cygwin for both t1lib and freetype1
462 - exposed the matrix_transform() function to the OO interface
463 - added Imager::Matrix2d convenience class
464 - support for setting the resolution when writing to PNG
465 - retrieve physical resolution to tags when reading from PNG
466 - found an XS bug in the interface to i_tags_add()
467 - fixed handling of writing text to a channel with freetype2
468 (sometimes the edge of a character would damage the edge of the
470 - some utf8 support for freetype2
471 - some vertical layout support for freetype2
472 - named parameters for specifying colors, with quite a few options.
473 - glyph size issues for freetyp2
474 - minor problem in handling of canon option
475 - low-level bmp writing (moving it to laptop)
476 - Windows BMP reading and writing
477 - added OO interfaces for the mosaic, bumpmap, postlevels and
479 - added t/t61filters.t to test the filters
480 - fixed some problems in jpeg handling from the exp_represent merge
481 - fixed buffer flushing for wiol jpeg code
482 - added some tests that will hopefully catch it in the future
483 - added the OO interfaces to the mosaic, bumpmap, postlevels and
484 watermark filters, and documented them
485 - fixed a sample size conversion problem in i_gpixf_d() etc.
486 - added simple color representation conversion functions (used
488 - added the fountain filter:
489 - creates gradients similar to paint software
490 - 90% support for GIMP gradient files
491 - OO interface and documentation
492 - Imager::Fountain for building/loading fill definitions
493 - named value translation for filters
494 - added a generic fill mechanism
495 - created versions of i_box() and i_arc() that can fill using
497 - solid generic fills (with alpha blending if asked for)
498 - hatched generic fills (with some options)
499 - fountain generic fills
500 - sample code to generate an examples page
501 - improved the scale* hatches a bit
502 - add the flood_fill() method (using the existing i_flood_fill)
503 - implement i_flood_cfill() based on i_flood_fill, and
504 add general fills to the flood_fill() method
505 - generalize the combine parameter to get different ways of
506 combining the fill with the target
507 - the tt driver (freetype 1) didn't handle the first character
508 hanging off the left of the character cell
509 - the tt driver produces some artifacts when characters
511 - error handling for writing jpeg images
512 - writing paletted images to GIF now uses the image palette
514 - $img->arc() now calls i_circle_aa() if a complete circle is
515 being drawn in a plain color
518 - make i_conv() clamp the bottom end of the samples range too
519 (makes it useful for sharpening)
520 - adjust ascender/descender values for FT1.x to avoid losing
521 descenders (specifically the bottom of "g" in ImUgly.ttf or
522 arial.ttf at 14pixels)
523 - added tga.c to read targa images
524 - added i_bumpmap_complex to do more accurate bumpmapping
525 - added an image type with doubles as samples
526 - change i_copy() and i_sametype() to handle double/sample images
527 - added basic POD to trans2.c
528 - transform2 now uses the error interface
529 - myrealloc() is implemented for malloc debug mode
530 - now buffer chains are freed when destructor for Imager::IO
532 - adjusted the Lanczos window width for the scaling code and
533 added code to normalize the filter generated to preserve
535 - constant edge extension for scaling operations
536 - better error checking of automatic fill conversions
537 - fix some range checking for the fountain fill segment type
540 - A few scattered mymalloc/free fixes
541 - io_buffer implemented as a source for io layer and
542 XS and perl OO code added.
543 - Test for iolayer t/t07iolayer.t implemented.
544 - Fixed known memory leaks.
545 - gif screen was wasn't being calculated correctly
547 0.39 Released: Nov 2 2001.
550 - anti-aliased polygon fill
551 - add general fill to polygon fill
552 - make color values smarter for the drawing functions
553 - implemented reading and writing the TIFF text tags
554 - added prototypes for some of the derivative tags functions
555 - read paletted tiff images into Imager paletted images
556 - on partial tiff image reads, set the i_incomplete tag
557 - tiff reading now uses the error stack
558 - use the error stack value from reading bmp files
559 - fix an error message in bmp.c
560 - added has_chars() method to Imager::Font::FreeType2
561 - freetype 2 bounding box function didn't know UTF8 (doh!)
562 - write paletted images as paletted to tiff
563 - initialize counter for packing 4 bit data
564 - don't allocate hashboxes as locals since it overflows the
565 stack by default in Darwin
566 - applied T1 afm patch from Claes Jacobsson
567 - split IM_INCPATH and IM_LIBPATH with $Config{path_sep}, so they
569 - Added memory pools for easy cleanup of temp buffers
570 - Added read support for sgi .rgb files.
571 - io_new_fd() now creates a FDSEEK io object
572 - implemented i_readgif_wiol()
573 - Imager->read() now uses i_readgif_wiol();
574 - extend callback iolayers at C and Perl levels
575 - implemented i_writegif_wiol()
576 - split out Perl iolayer initialization into private methods
577 - add tests for each type of iolayer in t50basicoo.t
578 - read/write multi-image tiff files
579 - tests in t50basicoo.t for multi-image/file
580 - ASCII PBM files were reading white as dark gray (255 vs 1)
581 - modify the Freetype2 font code to pick it's own encoding
582 rather than using whatever strange translation FT2 happens to
584 - modify the FT1 font code to use the first encoding as a default
585 if we don't find a unicode encoding
586 - use the glyph bbox to calculate the glyph bitmaps for rendering
587 with FT1 rather than the global ascender/descender. This helps
588 with fonts that have broken metrics.
589 - fix calculation of descender for FT2, it was calculating the
590 minimum decent rather than the maximum for the characters in
592 - didn't set default for bounding_box() utf8 parameter (caused a
593 warning when calling bounding_box() on a FT2 font with no utf8
595 - Added lib/Imager/Draw.pod documentation of primitives.
596 - Added lib/Imager/Transformations.pod, some docs of simple transforms.
597 - Added lib/Imager/ImageTypes.pod, draft of ImageType pod.
598 - Added lib/Imager/Filters.pod, draft of Filters pod.
599 - Added lib/Imager/Engines.pod, draft of Engines pod.
600 - added getpixel() and setpixel() methods
601 - added Artur's OSX dlload() emulation, with minor changes
602 - modified _color() to work around a 5.6.0 bug
603 - replaced old gif options with tags
604 - we now log which memory block is being freed before giving
605 an error on it being re-freed
606 - fixed stupid bug in deleting tags
607 - fixed minor pod errors involving >
610 - make t1log optional, defaulting to off. You can enable the log
611 with Imager::init(t1log=>1) (Ticket #369)
612 - quote a few hash key strings to prevent warnings on 5.004
613 - modify quantization code to handle 1 channel images
614 correctly (Ticket #365)
615 - make channel pointer to i_gsamp() const int * so we can pass
617 - handle the presence of the default broken giflib better,
618 by giving them some more prose about the problem, and skipping
619 all but the first test that fails with the broken giflib
620 - i_box_cfill() went into an infinite loop on fountain fills
621 or fills on images with more than 8-bits/sample
622 - hide more of our Darwin dlload emulation to prevent runtime
624 - use INT2PTR() and PTR2IV() macros instead of direct casts to
625 prevent pointer vs int size warnings on 64-bit builds of perl.
626 - add our own INT2PTR and PTR2IV definitions when perl doesn't
628 - difference() method
629 - hide (with static) or rename many symbols that could possibly
630 cause conflicts with other libraries or perl
631 - Fix runaway cache problem for freetype1 font cache.
632 - Added version logging when log is started.
635 - difference() wasn't setting an alpha channel when the input
636 image didn't have one
637 - improve crop() documentation, see
638 http://perlmonks.org/index.pl?lastnode_id=155767&node_id=155428
639 - handle the first "buggy giflib" test more portably. Previously
640 it used fork() which caused problems on systems that didn't have
644 - skip() in testtools should be skipn() and it should use the
645 loop variable for the test number
648 - quote the 'min' parameter to scale in Imager::Transformations
649 and at least mention it in the docs beyond the examples
650 - document the values for the read() and write() method type
652 - support UTF8 text with Freetype 1.x
653 - second parameter to SvPV() must be of type STRLEN
654 - Doc pathces from cogent.
655 - Fixed out of bounds access on bitmap for flood fills.
656 - some char * vs unsigned char * casts missing on OSF1 v4.0
657 - some enums had , on the last item in datatypes.h, which OSF1
659 - Compaq C 6.4 (OSF1) claims to be C99 but doesn't provide
660 stdint.h, don't try to use it under OSF
661 - fix missing initialization in tags.c
662 - Change i_draw to i_line and have it use Bresenham's line
664 - support has_chars() method for Freetype 1.x
665 - fixed log message for i_ft2_has_chars()
666 - fixed some broken checking for UTF8 in FT2 code
667 - handle UTF8 strings passed to T1 low-level functions
668 - handle flags for underline, strikethrough and overline for T1
669 low-level output functions
670 - OO interfaces to UTF8 and flags, for now leaving the flags as
671 specific to Imager::Font::Type1
672 - mc_web_map was storing colors with an alpha of 0
673 - update the URLs for libpng and zlib
674 - Fixed empty string handling for tt font driver.
675 - Fixed tiff handling of images all contained in a
676 single strip (rowsperstrip = -1) and added a hack
677 for images missing the rowsperstrip tag.
678 - Fixed default parameters for crop()
679 - Added Preliminary specialized scaling code.
680 - Added image type detection.
681 - added smoke test for win32 font bounding_box() method, and
682 fixed the problem reported in ticket #1748.
683 - update t37w32font.t to use i_line() instead of i_draw()
684 - replaced non-portable call to rint() with (int)(dy+0.5) (so we
686 - the default tifflib warning handler was crashing on Win32
687 under ActivePerl, when an unrecognized tag was read from the
688 file. For now we'll just drop the warnings in the bit bucket.
690 - the code to read multiple tiffs didn't handle files with more
691 than five images correctly, causing a memory overrun.
692 - fix some minor test code hiccups
693 - implemented i_t1_has_chars(), tests for same
694 - added ExistenceTest.{pfb,afm,ttf} for testing $font->has_chars
695 - tests for Imager::Font::Type1::has_chars();
696 - tests for Imager::Font::Truetype::has_chars();
697 - internal and external bounding box calculations now use
698 the same hint flags as text output for Freetype 2.x
699 - made the i_foo_bbox() interface more expandable by using
700 symbolic constants for the sizes and array offsets
701 - added a / character to the ExistenceTest.foo fonts that
702 overlaps the right side of the character cell, to test the
703 advance width reporting.
704 - added advance width to the i_foo_bbox() interface, and
705 implemented it for FT2, FT1 and Type 1
706 - Imager::Font::bounding_box() now returns an Imager::Font::BBox
707 object in scalar context.
708 - implemented $font->align() text output method, for simple output
710 - created Imager::Font::Wrap::wrap_text to perform simple text
712 - FT1, FT2 and T1 fonts now support the face_name method
713 - FT1, FT2 and T1 now support the glyph_names() method
714 - Debian woody supplied FT2.0.9, which didn't support
715 FT_Has_PS_Names(), so we use the FT_HAS_GLYPH_NAMES() macro
717 - some older FT1 don't define TT_MS_LANGID_ENGLISH_GENERAL,
718 which we use, define it if freetype doesn't.
719 - Added extra options to rubthrough() so only a subpart of
720 source image is used.
721 - the image fills didn't handle filling with source images of
722 less than four channels correctly
723 - added comment support the postfix transform2() expression
725 - transform2() can now produce images with other than 3 channels.
726 - added a correct T_AVREF input mapping to the typemap to
727 simplify parameter lists
728 - shut off one of the align subtests in the ft2 test. The triggering
729 is likely an ft2 bug.
730 - removed some half written scaling optimization code.
731 - added /sw/lib and /sw/include to the Makefile.PL code for osX.
732 - removed all references to the www.eecs.umich.edu page and changed
733 them to imager.perl.org ones.
736 - added log() and exp() functions to transform2()
737 - change the getpN() functions in transform2() to set a
738 reasonable alpha if the input image has no alpha
739 - document the constants that transform2() defines
740 - skip the right number of tests when FT2 isn't available
741 - This version pushed to CPAN because of skip problem in FT2 test.
743 0.43_01 Fri 8 Oct 2004
744 - only call FT_Get_Postscript_Name() on FT 2.0.6 and later
745 - put the IM_LIBPATH and IM_INCPATH values first in the search
746 path so the builder gets their local versions if desired rather
747 than the system versions they might be trying to avoid
748 - document the exp() and log() transform2() functions
749 - document the constants normally set by transform2().
750 - refer the user to appropriate documents in the example in
752 - change the list of documents in Imager.pm to move the document
753 names out of the =item lines so we can make them into links
754 - the scale() method now produces a warning when called in
756 - font.c now only uses the defined T1Lib error codes
757 - update ppport.h and remove the duplicate definitions from
758 Imager.xs. Had to mangle ppport.h to prevent duplicate global
759 function definitions.
760 - newer versions of tifflib require that all of the function
761 pointers passed to TIFFClientOpen be non-NULL, the mmap() and
762 munmap() pointers were always NULL and the sizeproc was
764 - there would be a link or load time error on m_init_log() if
765 Imager was built with IM_NOLOG, fixed by renamed init_log()
766 to m_init_log() in log.c (thanks to Takumi Yamani)
767 - moved some variable definitions to the right place
768 - the Win32 font driver bounding box function now returns the
769 right number of values (both thanks to Takumi Yamani)
770 - the Win32 font driver now uses DEFAULT_CHARSET rather than
771 ANSI_CHARSET are the lfCharSet value for the LOGFONT,
772 as suggested by Takumi Yamani.
773 - fontfiles/ExistenceTest.{pfb,ttf} weren't marked as
774 binary in the CVS repository (caused test failures if you
775 built from CVS on Win32)
776 - Makefile.PL should now handle INCLUDE or LIB with spaces in them
778 - the pnm reader read maxval for ppm/pgm files and then ignored it,
779 it's now validated (0 < maxval < 65536) and used to scale
780 samples. Note that binary ppm/pgm files (P6/P5) with maxval >
781 255 result in an error, since I didn't want to add new features
782 just yet, just get the code that's there working correctly.
783 Thanks to Elthek on rhizo for reporting this and help in
785 Resolves https://rt.cpan.org/Ticket/Display.html?id=7465
786 - added a bunch of tests for reading pnm files.
787 - previously, if you supplied to_paletted and empty color map
788 and set make_colors to 'none', quant_translate() would segfault.
789 This was because it was making the reasonable assumption that
790 you'd have colors to map to. quant_translate() now checks there
791 is at least one color and return NULL if there isn't.
792 - i_img_to_pal() now does error checking of the value returned by
794 - Imager::to_paletted() now checks for success/failure of
795 i_img_to_pal() correctly and does appropriate error handling.
796 - i_writegif_low() did no error checking on the result of
797 quant_translate(), it now does
798 - we now test that trying to write a GIF image with no palette
799 allowable by the quant options is a failure.
800 - Imager::write() was doing nothing with the result of the call
801 to i_writegif_gen(), in particular it wasn't returning () on
803 - added tests for paletted image handling and the methods
804 specific to those images
805 - the XS for i_setcolors() was missing the OUTPUT clause for
806 RETVAL, and hence wasn't returning failure on failure.
807 - supplying a sufficiently small scaling value could make the
808 scale() method return an image with zero height or width.
809 Several of the above together resolve
810 https://rt.cpan.org/Ticket/Display.html?id=7467
811 - the void context warning for scale() now includes the callers
812 filename/line (instead of the default of Imager.pm line 15xx)
813 - Imager->new will now return undef if the dimensions or number of
814 channels specified for an image are out of range. An error
815 message can be retrieved with Imager->errstr.
816 - added the C<builtin> color specifier and the
817 Imager::Color::Table class which defines those colors.
818 Resolves https://rt.cpan.org/Ticket/Display.html?id=2593
819 - added the equals() method to Imager::Color.
820 Resolves https://rt.cpan.org/Ticket/Display.html?id=2238
821 - prevent a test warning introduced by the above
822 - the rotate() and matrix_transform() methods now accept a 'back'
823 parameter specifying a background color. This is only used
824 where there is no source data (think of the corners around an
825 image rotated 45 degrees) and it not combined with transparent
826 pixels from the source image.
827 Resolves https://rt.cpan.org/Ticket/Display.html?id=6140
828 - removed a warning generated by the new matrix_transform() test
829 - added a method index to Imager.pm
830 - corrected "flood fill" to "flood_fill" in Imager/Draw.pod
831 - removed compose() method from Imager/Transformations.pod since
832 it isn't implemented yet
833 - the image resulting from a crop is now the same type as the
834 source image (paletted vs direct, bits/sample)
835 Resolves https://rt.cpan.org/Ticket/Display.html?id=7578
836 - the parameters to crop() weren't handled correctly in most
837 cases other than supplying left,top,right,bottom.
838 - clarified the documentation for crop() providing more detail
840 - the edges of the cropped area are now cropped against the
841 edges of the source image
842 - cropping to zero width/height is treated as an error (no
843 image is returned and $src->errstr has a message)
844 Resolves https://rt.cpan.org/Ticket/Display.html?id=7581
845 - built 0.43_01 for testing
847 0.43_02 Mon 26 Oct 2004
849 - the changes to scale() had some problems with integer vs floating point
850 calculations (only caught in tests under perl 5.8.5 <sigh>)
851 - the FT2 glyph_names() method didn't do correct error handling
852 when the string parameter wasn't supplied
853 - i_ft2_glyph_name() accepted only an unsigned char as the
854 character code to get the name for, which meant it
855 didn't work for unicode characters \x{100} or above
856 - the XS for i_ft2_glyph_name() had a similar problem
857 - added NameTest.ttf to be used in checking unicode glyph
859 - added reliable_only optional parameter to the glyph_names()
860 method so you can ignore theresult of FT_Has_PS_Glyph_Names()
861 - handle errors given by i_ft2_glyph_name() a bit more
863 - the FT1 glyph_names() method didn't do correct error handling
864 when the string parameter wasn't supplied
865 - some memory allocated when creating a callback IO object (io_new_cb)
866 wasn't being released (detected with valgrind)
867 - the testtools.pl match[nx]() functions escapes the test string on
868 test failure a bit better
869 - the XS code for i_tt_glyph_name() used unsigned char to store a
870 unicode character when it should have used unsigned long.
871 - the XS code for i_t1_glyph_name() used unsigned char to store a
872 unicode character when it should have used unsigned long.
873 - resolves https://rt.cpan.org/Ticket/Display.html?id=7949
874 - the type 1 glyph_names() method didn't do correct error handling
875 when the string parameter wasn't supplied
876 - renamed io.h to imio.h to prevent problems building under cygwin.
877 resolve https://rt.cpan.org/Ticket/Display.html?id=7948
878 - i_writegif_low() wasn't setting the returned global palette, which
879 meant a rubbish palette was returned to the user (detected with valgrind)
880 - built 0.43_02 for testing
882 0.43_03 Wed 8 Dec 2004
884 - change the "double-include" protection macro that imio.h uses.
885 - updated download locations for the various libraries that Imager
886 depends on. Added some advice for cygwin.
887 - more information on gif library versions in README and Makefile.PL
888 - creating an image where the size of the allocated image buffer would
889 overflow an integer would cause too small a buffer to be allocated.
890 This could potentially be a security hole.
891 partly resolves https://rt.cpan.org/Ticket/Display.html?id=8213
892 - set i_format to jpeg for jpeg files and test for it
893 - set i_format to png when reading png files and test for it
894 - i_yres was being set to the xres when reading a png file
895 - added many bad BMP files to test various code paths in bmp.c, and
896 made many minor fixes to bmp.c to make them work:
897 - it was possible for various types of read failures to SEGV, both
898 as NULL pointer dereferences and buffer overflows
899 - some errors, like palettes being too large for the number of bits
900 per pixel, were not being caught
901 - failing to read all of a packed data structure would not cause
903 - invalid compression types were not always caught
904 - error messages are more consistent (still not always great messages,
905 but one step at a time)
906 - added bmp_compression_name, bmp_used_colors, bmp_filesize, bmp_bit_count
907 tags on reading a BMP file
908 - added tools/imager to the distribution. This is still very
909 experimental and untested. Patches welcome, if you write tests to go
911 - the BMP reader now validates the bfOffBits value from the BMP header
912 and skips to that offset before reading image data. Previously this
913 value was read but otherwise ignored.
914 - added --palette action to tools/imager
915 - i_img_pal_new() now releases the image object memory if creation
917 - set i_format to gif when reading gif files and test for it
918 - set i_format to pnm when reading pnm files and test for it
919 - set i_format to tga when reading tga files and test for it
920 - handle image creation failures when reading tga files
921 - set i_format to tiff when reading tiff images and test for it
922 - handle image creation failures when reading tiff files
923 - test t/t35ttfont.t no longer requires TTFONTTEST to be set (and
924 hasn't for a long time,) removed that requirement from README
925 - updated home page URLs throughout the .pods
926 - added information on reporting bugs to the SUPPORT section of Imager.pm
927 - regops.perl now sorts the dumped data structure to produce minimal diffs
928 - quant.c now checks for integer overflow allocating its image data
929 - i_readraw_wiol() now checks for image creation failure
930 - i_readrgb_wiol() now checks for image creation failure
931 - i_writergb_wiol() was an empty stub, it now pushes an error message
932 and explicitly returns failure.
933 - i_readrgb_wiol() now sets i_format to rgb.
934 - set i_format to raw when reading tga files and test for it
935 - document i_format tag
936 - some tests were using $Config{ivsize} when they should have been
937 using $Config{intsize}
938 Resolves: https://rt.cpan.org/Ticket/Display.html?id=8645
939 - tools/imager has been removed from the MANIFEST, it's way too late
940 to test/debug for 0.44.
941 - image.h had no prototype for i_ft2_bbox_r() and it was being called
943 - giflib 4.1.3 still doesn't have all the bugs fixed, update the notes
944 in README and in the buggy_giflib.txt file that t105gif.t produces
945 - make the inclusion of NO_META dependent on the version of EU::MM.
946 I was going to include a META.yml but EU::MM's generation is too
947 simplistic (and misses the leading document header too). For now
949 - built 0.43_03 for testing
952 - modify the default include directories list to include the location
953 FreeBSD keeps freetype1 headers after the freetype2 locations.
954 This ensures that the -I options are generated with freetype2
955 locations first, so that those directories are searched before
956 the freetype1 directories. This prevents problems compiling
958 Resolves: http://rt-cpan.fsck.com/Ticket/Display.html?id=1723
959 - finish off a sentence in the "Producing an image from a CGI script"
960 example in Imager::Files
961 - method index didn't include errstr()
962 - document that you don't want the FT2 freetype.h in the include path
964 0.44_01 Tue 24 May 2005
965 - the plugins Makefile has long produced an error after all tests were
966 complete on Win32, finally tracked down why
967 - Makefile.PL now checks the directories specified by $Config{locincpth}
968 and $Config{loclibpth} for includes and libraries respectively.
969 Resolves: https://rt.cpan.org/Ticket/Display.html?id=2942
970 - we were undefing the wrong macro (used as an include guard) when
971 building the error code translation function for freetype 2. This
972 meant most errors came out as numbers.
973 - add a note to the README on how to get font suitcases and dfont files
975 - add dfont to the list of extensions supported by ft2
976 - document Imager::Font->new()'s index parameter
977 - added concept index to Imager.pm's POD
978 - the gradgen filter now does the same color value conversion that
979 Imager's drawing functions do.
980 - added trivial multiple master support via the FT2 driver
981 - added .pcf and .pcf.gz to the list of extensions supported by ft2
982 - the tiff reader now puts warning messages produced during reading into
984 Resolves: https://rt.cpan.org/Ticket/Display.html?id=8722
985 - the i_xres and i_yres tags are now stored in a resolution similar
987 Resolves: https://rt.cpan.org/Ticket/Display.html?id=8520
988 - added tiff_resolutionunit_name tag when reading tiff files
989 - Makefile.PL now attempts to use freetype-config to configure freetype 2
990 and pkg-config to configure libpng.
991 - avoid complaining about include/lib directories we pull from
992 perl's config or we have built-in
993 - Makefile.PL now builds imconfig.h with #defines for libraries
994 present (and for the GIF library version) rather than putting them
996 - scanning for required include files is now down by directory rather
997 than by file, using -e to check for the existence for a file rather than
998 doing an eq against every filename in the directory.
999 - previously we only checked a candidate include directory for freetype.h
1000 to consider it a valid FT1.x include directory. We now check if it
1001 contains fterrors.h too, if it does, then it's from a FT2 installation
1003 - Makefile.PL now accepts command-line options to set include and library
1004 directories and to enable/disable drivers.
1005 - added simple examples to most of the filters documented in
1007 - explicitly document there are no PNG specific tags.
1008 - more examples in Imager::Draw
1009 - minor cleanup of Imager::Fill
1010 - eliminate unused variables and static functions
1011 - simplify some XS code by adding another typemap entry
1012 - the right-side bearing used to adjust the final width wasn't being
1013 calculated correctly, this would cause the bounding_box() function for
1014 freetype 2.x to return a larger than expected text width.
1015 http://rt.cpan.org/NoAuth/Bug.html?id=11291
1016 - add scaleX/scaleY to the method index and gives them some examples
1017 http://rt.cpan.org/NoAuth/Bug.html?id=11328
1018 - call read() instead of open() in the example code in Imager.pm,
1019 and mention that open() is an alias for read().
1020 http://rt.cpan.org/NoAuth/Bug.html?id=11431
1021 - added reference list of crop() parameters.
1022 http://rt.cpan.org/NoAuth/Bug.html?id=11430
1023 - reading a tga image with an idstring of 128 or more bytes would result
1024 in an allocation error, if the platform char type was signed
1025 - tests now check that tga tags are set
1026 - calling the read() method for a format not included in the Imager build,
1027 for example, JPEG with no libjpeg installed, would crash with an
1028 undefined function error (modified by DynaLoaders dependence on
1030 http://rt.cpan.org/NoAuth/Bug.html?id=9618
1031 - some test scripts have been modified to use Test::More, which is now
1032 included under the t directory. Eventually all will be modified to use
1033 Test::More and the duplicates in t/testtools.pl will be removed
1034 - the convert, crop, rotate, copy, matrix_transform, to_paletted, to_rgb8,
1035 scaleX and scaleY methods now warn when called in void context.
1036 http://rt.cpan.org/NoAuth/Bug.html?id=9672
1037 - correct email addresses in the README file, and include bug reporting
1038 information there too
1039 - added README for samples directory, describes interleave.pl and
1040 anaglyph.pl to start.
1041 - the XS for the internal i_glin() function wasn't copying the pixel
1042 values across to the returned color objects.
1043 http://rt.cpan.org/NoAuth/Bug.html?id=11860
1044 - Imager::Cookbook wasn't included in the MANIFEST
1045 - added samp-form.cgi and samp-image.cgi to the samples directory to
1046 demonstrate displaying a generated image on a HTML page.
1047 - Makefile.PL now adds rules to generate a suitable META.yml to the
1049 - added sample code for handling images uploaded via a HTML form.
1050 - saving a GIMP gradiant file with Imager::Fountain->save has always been
1051 broken. Fixed it and added tests.
1052 - newer versions of GIMP add a line to gradient files before the
1053 segment count giving a descriptive name of the gradient.
1054 Imager::Fountain can now read and write such gradient files. The
1055 interface is a bit indirect, but I'd like to preserve
1056 Imager::Fountain as a blessed array ref for now.
1057 - the segments parameter supplied to the fountain filter and the
1058 fountain fill contructor now accepts color names or other
1059 descriptions as other functions do.
1060 - fix a few compiler warnings
1061 - document the Imager::Font::BBox advance_width() method
1062 - Imager::Font::BBox advance_width() method was falling back to
1063 the wrong value when the font driver's low level function
1064 didn't return the advance width.
1065 - the FT 1.x was comparing versus an uninitialized variable when
1066 checking the end of string when calculating the right side bearing
1067 used to adjust pos_width for glyphs that overlap the right side of the
1069 - Imager::Font::BBox objects now have right_bearing() and display_width()
1070 methods. Hopefully this and the advance_width() method fills out
1071 the Imager bounding box interface to a useful state.
1072 Implemented for all four font drivers.
1073 - Win32 font bounding_box() method now supports the advance width
1074 and right bearing values.
1075 - Imager::Matrix2d->rotate() would only rotate around the supplied
1076 centre point if both 'x' and 'y' were non-zero.
1077 - the internal i_tags_get_string() function now acts correctly for
1079 - the FT1.x driver now supports the align parameter correctly.
1080 Tests were added to each driver to check correct handling of the align
1082 - the Win32 font driver bounding_box() method now puts accurate values
1083 in the ascent and descent values, previously they were set to the
1084 font ascent/descent rather than the values specific to the string.
1085 - supplying align=>0 to the win32 font driver string() function
1086 now aligns in the same way as the other drivers.
1087 - removed the bug reporting email address to prevent spammers stripping
1088 it. The URL is still there and if someone knows how rt.cpan.org works
1089 they can still figure out the email.
1090 - the internal function used to probe file formats if the type
1091 parameter wasn't passed to the read() method would produce
1092 diagnostics on stdout, precluding use in web applications. Silenced
1094 - the setcolors() had a fencepost error making it impossible to
1095 use it to set the last color in the palette.
1096 http://rt.cpan.org/NoAuth/Bug.html?id=12676
1097 - fix the filter examples in Imager::Filter so they don't indicate that
1098 a new image is returned (the filter() method works in-place)
1099 - add examples for the fountain filter
1100 - prevent warnings from Makefile.PL when there's no libraries found
1101 - Imager no longer assumes that MSVC is the only native Win32
1102 compiler, MinGW can be used to build Imager.
1103 - fixed an inverted condition checking the giflib version, and
1104 replaced a manual test skip in t/t105gif.t
1105 - add tests to exercise hatch fills for floating images. This code is
1106 mis-generated with the gcc 4.0 that ships with OS X 10.4
1107 - work around junk that pkg-config sends to stderr on FreeBSD 4.10
1108 - testimg/base.jpg was missing from the MANIFEST, causing test failures
1109 - use a temp file to avoid messing with echo on Win32 when building
1111 - add some Mac OS X notes to the README
1113 0.45 Mon 30 May 2005
1114 - t/t105gif.t wasn't handling buggy giflibs correctly
1116 0.45_01 Mon 12 Dec 2005
1117 - give the colorcount() and maxcolors() methods their own entries and
1118 add them to the method index.
1119 - added tiff_bitspersample and tiff_photometric tags to tiff images
1121 - loading filter DLLs/DSOs had an off-by-one error allocating a buffer
1122 for the filename of the library (does anyone use this functionality?)
1123 - remove old #if 0 code from Imager.xs
1124 - convert t/t15color.t to Test::More
1125 - prevent warnings when looking up a GIMP color with no palette
1126 parameter and $ENV{HOME} not set.
1127 Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=13143
1128 - added VERSION numbers to most .pms
1129 - convert t/t104ppm.t to Test::More
1130 - convert t/t107bmp.t to Test::More
1131 - convert t/t108tga.t to Test::More
1132 - error messages generated reading JPEG or PNG images are now
1133 available via errstr()
1134 - implement/test/document set_file_limits()/get_file_limits() methods,
1135 which allow limits on the size of image files read.
1136 - new example for convert() method based on Leolo's query
1137 - implement getscanline(), setscanline() and getsamples() methods.
1138 These are low level methods for fast access to image data, based on
1139 existing C functions that Imager uses internally.
1140 - limit limits.c to C89
1141 - the gif tests weren't skipping enough when there was no gif support
1142 - move include t1lib out of image.h to font.c, since nothing it
1143 provides is needed elsewhere.
1145 - added a brief tutorial
1146 - Imager::Font->new() for the tt (Freetype 1.x) driver now correctly
1147 handles errors from i_tt_new(), and passed error messages now
1148 generated by i_tt_new().
1149 Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=14804
1150 - renamed lib/Imager/Cookbook.pm to lib/Imager/Cookbook.pod - CPANTS
1151 complains about it not having 'use strict;'
1152 - add samples/replace_color.pl
1153 - you can now supply a page parameter to read() to read a given page
1155 - added samples/border.pl, and notes on adding a border in
1157 - added sampled/slant_text.pl, and notes on shearing/rotating text in
1159 - INCOMPATIBLE CHANGE:
1160 reading a gif file will now read the first image from the file rather
1161 than the a consolidated image. If you want the old behaviour supply
1162 C<< gif_consolidate=>1 >> to the read() method. Older versions of
1163 Imager will accept this parameter and produce the same result.
1164 - you can now supply a page parameter to read() to read a given page
1166 - reading a multi-image GIF was leaking memory (a line buffer per file)
1167 - maxcolors now must be at least 1 when creating a paletted image.
1168 - converted t/t022double.t to use Test::More
1169 - t1 library re-initialization modified to support T1Lib 5.1.0
1170 - setmask() now returns true on success and reports a missing mask
1172 - double per sample images were ignoring the channel mask.
1173 - converted t/t021sixteen.t to use Test::More
1174 - 16-bit per sample images were ignoring the channel mask
1176 - expand Imager::ImageTypes:
1177 - make all methods into =items
1178 - document parameters
1180 - add AUTHOR/REVISION/SEE ALSO
1181 - add samples/tk-photo.pl
1182 - fixes to verbose mode in Makefile.PL, also added a -v switch so you
1183 can enable it via the command-line
1184 Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=16094
1185 - arc(..., fill=> ...) wasn't handling concave areas correctly
1186 - arc(..., color=>...) wasn't properly filling it's area
1187 - added experimental antialiased support to arc()
1188 - the order of the returned values for Imager::Font's align() method
1190 - check the correct directory when adding the cygwin Win32 API include
1191 path (Makefile.PL). This was a later response to #16094
1192 Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=16094
1193 - add --nolog command-line switch to Makefile.PL to disable logging
1194 - filled polygons using a complex fill with combine != 0 (none) didn't
1195 correctly handle polygons that crossed a given scanline more than once.
1196 - the straight edges of filled arcs weren't being drawn correctly,
1197 causing minor artifacts at the inner and external corners
1198 - implemented valign=>'end' for Imager::Font->align
1199 - added $img->align_string() as a way to call Imager::Font->align
1200 - added samples/align-string.pl
1201 - improved missing argument handling a little for the string() method
1202 - linkify Imager.pm a bit more
1203 - expand Imager::Draw:
1204 - make all methods items
1205 - document parameters
1207 - add AUTHOR, REVISION.
1208 - add smoke test for nearest_color filter
1209 - added integer overflow checks to many memory allocation calls
1210 - added experimental EXIF decoding when reading JPEG files.
1211 - read/write i_xres, i_yres, i_aspect only tage with JPEG files,
1212 and read/write jpeg_density_unit (+_name) tag
1213 - save the jpeg_comment tag when writing
1214 - the has_chars() method now checks the font objects utf8 flag as well
1215 as the utf8 parameter.
1216 - clean up Imager::Font documentation:
1217 - string now documented in Imager::Draw
1218 - add parameter list documentation
1219 - document the utf8 parameter for bounding_box(), has_chars()
1220 Resolves: http://rt.cpan.org/NoAuth/Bug.html?id=13508
1221 - decode the EXIF GPS IFD as well
1222 - minor documentation touchups
1223 - bump version 0.45_01
1225 0.45_02 Mon 12 Dec 2005
1226 - some test scripts weren't fixing @INC correctly
1227 - t/t101jpeg.t wasn't skipping enough when there was no jpeg support
1228 - bump version to 0.45_02
1230 0.46 Tue 20 Dec 2005
1231 - change the use in t/t91.pod to require version 1.00 of Test::Pod
1232 - minor changes to Imager::Transformations
1233 - bump version to 0.46
1235 0.46_01 Fri 30 Dec 2005
1236 - switched to subversion - changed $VERSION that was based on Revision
1237 tag to be manually handled.
1238 - outputting a single space using the Freetype 1.x driver (type=>'tt')
1239 was producing a divide by zero error.
1240 - bump to 0.46_01 for testing
1242 0.47 Fri 30 Dec 2005
1245 0.47_01 Tue 21 Feb 2006
1246 - set the locale to "C" properly when testing ft1.x error messages
1247 - don't destroy image before creating it in error handling in bmp.c
1248 - extra concept index entries
1249 - Imager::Draw - align_string()'s valign parameter was invalid in the
1251 - start of external Imager API access:
1252 - rename headers to avoid conflicts:
1253 - image.h to imager.h
1254 - imagei.h to imageri.h
1255 - datatypes.h to imdatatypes.h
1256 - config.h to imconfig.h (created by Makefile.PL)
1257 - moved all public types defined in imager.h to imdatatypes.h
1258 - supply the PM parameter to WriteMakefile(), to install headers
1259 under Imager/include, and the Imager typemap in Imager/typemap.
1260 We scan the MANIFEST for files to add to PM.
1261 - add "i_" prefix on some functions useful as public at the C level.
1262 - moved the typedefs that support the typemap from Imager.xs to
1264 - set the global callbacks hook in the Imager.xs BOOT section
1266 - define i_tags_set(), i_tags_setn() - we might not allow multiple
1267 values for a tag in the future
1268 - i_copy() now returns a new image instead of doing horrible inplace
1269 things to an existing image
1270 - provide actual functions for all of the macros we define in imager.h
1271 so we can put them in the global callbacks structure
1272 - define global functions structure (imexttypes.h)
1273 and initialize it (imext.c)
1274 - add API include header with macros to setup the define and
1275 initialize the local callbacks pointer, and macros to call the API
1277 - build Imager::APIRef from C sources, including updating the sources
1278 to include documentation for each API function.
1279 - convert dyntest and mandelbrot dynfilts into XS modules (too easy)
1280 - simple Imager::CountColor example
1281 - support Inline::C :
1282 - typemap changes to accept Imager or Imager::ImgRaw objects as
1284 - define Imager output type for trivial cases of returning an i_img as
1285 a full Imager object
1286 - Inline WITH hook to filter Imager XS types into types Inline::C can
1287 accept, supply appropriate headers and initialization.
1288 - test script t/t82inline.t
1289 - try to use XSLoader instead of DynaLoader (but fallback if necessary)
1290 - paste() can now paste a subset of the source image.
1291 - paste() now has better tests
1292 - paste() should now be faster for larger pastes
1293 - added sample files missing from MANIFEST
1294 - added t/t92samples.t to check samples/README against MANIFEST
1295 - added inline_replace_color.pl to samples
1296 - constify the Imager API
1297 - document Imager::Filter::Mandelbrot
1298 - convert dynfilt/flines.c to Imager::Filter::Flines
1299 - minor changes for older perl/ExtUtils::MM
1300 - deal with freetype-config --cflags returning the directories
1301 in the wrong order (Freetype 2.1.4 and earlier)
1302 Thanks to David Wheeler for his help in tracking this down.
1303 - reword and provide an example for non-proportionally scaling an
1304 image. Wording from Simon Cozens.
1305 - error messages when writing TIFF images were always
1306 'Could not write to buffer', more useful messages are now reported.
1307 - error messages when writing PNM images were always
1308 'unable to write pnm image', more useful messages are now reported.
1309 - convert t/t103raw.t to Test::More
1310 - reading a raw image no longer exits on a short read or read error,
1311 and returns an appropriate error message in $im->errstr
1312 - write failures when writing a raw image now return a useful
1313 message in $im->errstr
1314 - added typemap type names to types in Imager::API.
1315 - make skip when Inline::C not available less verbose
1316 - convert t/t07iolayer.t to Test::More
1317 - handle the possibility of strerror() returning NULL.
1318 - supply C<imager> parameter to filters so we can register filters
1319 implemented in perl.
1320 - document register_filter() and add test for it
1321 - add example to SYNOPSIS of samples/inline_replace_color.pl
1322 - minor POD fix in Imager::Color::Table
1323 - eliminate many -Wall warnings
1324 - update README to match unbuggy giflib
1325 - document index parameter of Imager::Font->new()
1326 - change faxable output to use a more fax natural PHOTOMETRIC_MINISWHITE,
1327 since T.4 normally works that way, and MINISBLACK confuses some readers.
1328 - clean up scale() method for readability
1329 - make scale() fail if an invalid type is supplied (previously
1330 documented as undefined behaviour)
1331 - add error handling tests for scale()
1332 - smarter warning removal
1333 - handle effects of byte ordering when testing tiff error messages
1334 - scale() can now expect an Image::Math::Constrain object as a scaling
1335 constraint via the constrain parameter.
1336 - added tests for the various ways we can specify scaling size
1337 - documented scale()'s scalefactor parameter
1338 - sick of $opts{scalefactor} in scale(), give it a scalar to call it's
1340 - check $Config{ldflags} and $Config{ccflags} for places to search for
1341 headers and libraries. This deals with the way the fink build of perl
1342 puts -L/sw/lib in ldflags rather than using loclibpth
1343 - eliminate some of the duplication of -I and -L options in LIBS and INC
1344 - Makefile.PL now uses strict.
1345 - the search for freetype1.x headers is now smarter
1346 - add tests for scaleX()/scaleY()
1347 - expand documentation of scaleX()/scaleY()
1348 - rotate()s back parameter now accepts color names like other methods
1349 - convert t/t69rubthru.t to Test::More
1350 - minor clean up of rubthrough() method
1351 - error handling tests for rubthrough()
1352 - expand Imager::Transformations:
1353 - document parameters more explicitly
1354 - document return values
1356 - add AUTHOR, SEE ALSO, REVISION
1357 - eliminate sign warning from image.c
1358 - make TIFF detection stricter
1359 - more memory allocation integer overflow auditing
1360 - IM_DEBUG_MALLOC wasn't interacting well with the API
1361 - make win32.c const happy
1362 - make raw.c C89 compliant
1363 - added version/level to the API function table structure
1364 - fix/simplify META.yml generation - we now generate META.yml at
1365 Makefile.PL time, since trying to work with EU::MM to generate a
1366 custom META.yml was a waste.
1370 - removed unused hashinfo() function from Imager.xs
1371 - added =items for various methods, so Pod::Coverage will pick them up
1372 (Pod::Coverage tests to be added in 0.49)
1376 - handle short EXIF user_comment fields correctly, previously Imager
1377 would read (and potentially) write beyond the end of an allocated block,
1378 or through a NULL pointer if the EXIF user_comment field was less
1380 https://rt.cpan.org/Ticket/Display.html?id=17981
1382 =================================================================
1384 For latest versions check the Imager-devel pages:
1385 http://imager.perl.org/
1387 =================================================================