]> git.imager.perl.org - imager.git/blob - Changes
prevent an unsigned overflow in FT1 has_chars() implementation
[imager.git] / Changes
1 Imager release history.  Older releases can be found in Changes.old
2
3 General changes:
4
5  - to_paletted() and make_palette() now fail (with an error in
6    errstr()) if invalid quantization parameters are supplied.
7
8  - map() would corrupt a channel if there was a gap in the arrayref of
9    channels.  Detected by Coverity.  CID 185300.
10
11 Coverity finally finished a build[1], fix a few problems:
12
13 High severity:
14
15  - reading a color-mapped TGA file with an id string would cause a
16    double-free if the palette was truncated. CID 185317.
17
18  - mixing scaling to sizes where the accumulator row, the working
19    output row or the working input row didn't fit into the address
20    space could result in memory leaks.  This can probably only be
21    reproduced on very wide floating-point sample images. CID 185318.
22
23  - convert an array style function parameter pointer to pointer style
24    to prevent confusing Coverity in the T1 bounding box implementation.
25    CID 185343.
26
27  - Similarly in the FT1 bounding box implementation. CID 185338.
28
29  - Similarly for the i_tt_rasterize() function in the FT1
30    implementation.  CID 185303.
31
32  - initialize a pointer to prevent Coverity complaining in polygon
33    drawing (it should always end up being set.) CID 185341.
34
35  - addi style makemap could potentially read one past the end of an
36    array. CID 185337.
37
38  - supplying a numeric hatch of 32 to Imager::Fill->new(hatch => ...)
39    would result in read beyond the end of the built-in hatch array.
40    Negative values (which Coverity didn't complain about) could also
41    cause problems.  CID 185331.
42
43  - the Imager::Color set_internal() interal method no longer
44    calls the over-complicated ICL_set_internal() (which is retained
45    only for the old API.)  Coverity complained that this leaked, but
46    this could only occur with an invalid (NULL pointer) color object.
47    CID 185323.
48
49  - the underlying implementation of the map() method could read before
50    the beginning on an allocated array if supplied with inconsistent
51    parameters, which Coverity complained about.  No Imager code calls
52    that function with inconsistent parameters, but a
53    belt-and-suspenders check was added. CID 185315.
54
55  - Coverity complained a call to i_getcolors(), used by the
56    implementation of the is_bilevel() method could leave the fetched
57    colors uninitialized.  Added a return value check. CID 185308.
58
59  - a numeric combining mode of 13 (eg. as a parameter to
60    Imager::Fill->new())could cause an invalid array read in
61    i_get_combine() due to a fencepost error in validating the combine
62    number.  CID 185299.
63
64 Lower severity (according to Coverity):
65
66  - avoid an unneeded EXTEND() call when the FT1 has_chars()
67    implementation returns 0. CID 185350.
68
69  - avoid accessing a possibly NULL map from MakeMapObject() in a
70    logging call. (GIF) CID 185296.
71
72  - gradgen() allocated the wrong amount of space (always too much) for
73    the color array.  CID 185291.
74
75  - avoid dead code in i_tt_glyph_names(). CID 185321.
76
77  - avoid dead code in i_get_anonymous_color_histo(), which is the
78    implementation of getcolorusage().  CID 185327.
79
80  - avoid dead code in i_ft2_glyph_name(), which is the implementation
81    of glyph_names() for FT2.  CID 185342.
82
83  - avoid dead code in i_t1_glyph_names(), which is the implementation
84    of glyph_names() for T1.  CID 185322.
85
86  - avoid an unneeded EXTEND() call when the FT2 has_chars()
87    implementation returns 0. CID 185292.
88
89  - the unpack code for ICO/CUR file handling could extend 32-bit
90    unsigned values to 64-bit signed.  I believe this is harmless. CID
91    185319.
92
93  - remove an unneeded check when terminating the stream for JPEG
94    writing.  CID 185347.
95
96  - skip an unneeded check when freeing the combine temp buffer in the
97    fountain filter.  CID 185286.
98
99  - check the combine function pointer consistently rather than the
100    combine code in one place in the fountain filter.
101
102  - error diffusion now validates a custom error diffusion map and reports
103    an error if it's bad.  CID 185288.
104
105  - avoid discarding the value of i_io_getc() when scanning numbers in
106    pnm.c.  CID 185293.
107
108  - handle failure to clone the log filehandle when cloning the Imager
109    context object on thread creation.  CID 185294.
110
111  - fix an unsigned comparison when converting character code to a
112    glyph index with a NULL character map when calculating the glyph
113    for display for FT1.  This should be rare.  CID 185297.
114
115  - fix a similar bug when calculating whether a glyph is present for
116    has_chars() for FT1.  CID 185302.
117
118  - i_img_info() (C API) no longer tries to handle a NULL image object
119    pointer.  CID 185298.
120
121 [1] The first two build submissions ended up at the end of a ~400
122 build queue, and seemed to have been cancelled by Coverity.  A build
123 submitted on NYE went through in minutes.
124
125 Imager 1.008 - 31 Dec 2018
126 ============
127
128  - moved EXIF handling from Imager::File::JPEG to core Imager
129    This allows file formats that store EXIF data as blobs similarly
130    to JPEG to re-use this code. (such as Imager::File::WEBP)
131
132  - added some more file extensions to image file type mappings
133
134  - added add_type_extensions() class method
135
136 Imager 1.007 - 24 Nov 2018
137 ============
138
139  - add png_compression_level tag for writing PNG files.
140
141  - avoid flooring a second time in matrix transform interpolation.
142    https://rt.cpan.org/Ticket/Display.html?id=124001
143
144  - produce v2 metadata.
145    Includes change from the ticket and updates to sub-modules.
146    https://rt.cpan.org/Ticket/Display.html?id=127216
147
148  - improve error reporting for the polygon() method
149
150 Imager 1.006 - 26 Aug 2017
151 ============
152
153  - the internal i_errors() function now correctly allocates the stack
154    space needed for its result.
155    https://rt.perl.org/rt3/Ticket/Display.html?id=131938
156
157  - t/100-base/020-color.t now uses Imager::Test's test functions
158    instead of its own.
159    https://rt.cpan.org/Ticket/Display.html?id=111993
160
161  - write_multi() now returns an error result (a false value) if called
162    with a non-(Imager image object).  Previously it would typically
163    crash.
164    https://rt.cpan.org/Ticket/Display.html?id=117878
165
166  - improve the documentation of the jpegquality parameter when
167    writing JPEG files.
168
169  - add code to mitigate CVE-2016-1238, Imager will no longer search the
170    default current directory entry in @INC when searching for file
171    format support modules.
172
173 Imager 1.005 - 16 Apr 2016
174 ============
175
176 It's now been ten years since I switched to the new Changes file in
177 release 0.55.
178
179  - revert the ivdformat probes, they don't work as is and trying to
180    fix them is too much work for now.
181
182 Imager 1.004_004 - 15 Apr 2016
183 ================
184
185  - test that the ivdformat from Config is correct and look for a valid
186    one if it isn't.
187    For the strange Win32 failures.
188
189  - fix a copy and paste error in pod in samples/samp-form.cgi
190
191 Imager 1.004_003 - 23 Mar 2016
192 ================
193
194  - add some extra error reporting to the I/O layers tests, this might
195    help catch a failure seen on Win32.
196    http://cpantesters.org/cpan/report/99781689-6bf5-1014-897a-75cb4eee1325
197
198 Imager 1.004_002 - 20 Mar 2016
199 ================
200
201  - don't use the seek() method on opened() handles in
202    t/200-file/400-basic.t.  In older versions of perl such handles are
203    only IO::Handle objects, not IO::File, and don't have a seek()
204    method.
205
206 Imager 1.004_001 - 16 Mar 2016 (Birthday release - but not my birthday)
207 ================
208
209  - re-work the t/200-file/400-basic.t to correctly handle failures
210    It's custom ok() function didn't have a prototype and didn't use scalar().
211    This caused ok() to use the note instead of the value being tested when
212    the method called returned an empty list.  For an example of the problem
213    caused see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=812093
214
215  - remove some noise from when Imager tried to work with bugs in old
216    versions of giflib.  I can't do much about the new bugs.
217
218  - the new autolevels filter (Imager 0.99) used an integer for the
219    sample scaling factor which caused the top output level to be too
220    low (depending on the scaling required.)  It now uses a double.
221    https://rt.cpan.org/Ticket/Display.html?id=111871
222
223  - the new autolevels filter had off-by-one errors calculating the
224    minimum and maximum luminance from the histogram.  This slightly
225    reduced the contrast of the output image.
226    https://rt.cpan.org/Ticket/Display.html?id=111871
227
228  - the new autolevels filter now uses a lookup table for 8-bit images
229    to avoid a floating point multiply for each sample.
230    https://rt.cpan.org/Ticket/Display.html?id=111871
231
232  - fixed several memory leaks detected by valgrind:
233
234    - addcolors() leaked the temporary array of colors supplied to the
235      internal API
236
237    - make_palette() leaked the temporary image array (not the images
238      themselves) passed to the internal API.
239
240    - combine()/i_combine() leaked its working row buffers
241
242    - getcolorusage()/i_get_anonymous_color_histo() leaked the sample
243      buffer if there were too many colors
244
245    - getcolorcount()/i_count_colors() leaked the sample buffer if
246      there were too many colors.
247
248    - the nearest_color filter (undocumented until I find a use for it)
249      leaked both temporaries passed to the API and internal buffers
250
251    - the internal process of upgrading a paletted image to a direct
252      color image would leak a context object reference count.
253
254    - a write failure when writing to a GIF file could leak memory.
255
256    - failing to write to a 1-bit/pixel ICO image could leak memory.
257
258  - Imager no longer deliberately leaks the context object from the
259    initial thread.  This was done to ensure there was always a context
260    object available, but the code that needed that now handles the
261    lack correctly,
262
263  - fixed some uninitialized memory usage detected by valgrind:
264
265    - rotate()/i_rotate_exact()/i_rotate_exact_bg()/i_matrix_transform()/
266      i_matrix_transform_bg() didn't initialize a working color value
267      if there was zero pixel coverage.
268
269    - i_ft2_cp() didn't initialize the complete color when producing an
270      intermediate image.  This caused uninitialized value usage when
271      logging the color.
272
273 Imager 1.004 - 8 Nov 2015
274 ============
275
276  - Imager::Color::Table is now pre-loaded by the preload() method.
277    https://rt.cpan.org/Ticket/Display.html?id=104896
278
279  - fix an assertion triggered under perl 5.23.4.
280    Thanks to A. Sinan Unur for the report and the patch.
281
282  - Imager->new can now be used to read raw image files.
283    https://rt.cpan.org/Ticket/Display.html?id=106836
284    Thanks to Richard Kelsch for reporting this.
285
286  - deal with output changes from Pod::Spell
287    https://github.com/perl-pod/Pod-Spell/issues/21
288
289 Imager 1.003 - 12 May 2015
290 ============
291
292  - update 1.002 release notes to include the center change for filled
293    circle drawing.
294
295  - flood_fill() would escape beyond a 4-connected space under some
296    circumstances.
297    Added many more flood_fill() tests.
298    https://rt.cpan.org/Ticket/Display.html?id=103786
299
300 Imager 1.002 - 3 Apr 2015
301 ============
302
303  - drawing anti-aliased filled circles is now 10 to 50 times faster
304    depending on the size of the circle.
305    This also changed the center from being the center of the pixel to
306    being the top left of the pixel to match the filled arcs drawn by
307    arc().
308    https://rt.cpan.org/Ticket/Display.html?id=101682
309
310  - enhancements to polygon filling:
311
312    - added a mode parameter to control how overlapping regions behave
313
314    - added a polypolygon() method to fill more than one polygon at a
315      time
316
317    - polygon filling is now exposed through the API.
318
319  - added colormodel(), alphachannel() and colorchannels() methods.
320    These were added for two reasons:
321
322     - a future version of Imager may allow the number of channels in
323       an image to not directly represent the color model of an image.
324       eg. a greyscale TIFF image with multiple alpha channels.
325
326     - a future version of Imager may allow an image to be read without
327       translation, for example a TIFF file that contains measurements
328       from an instrument.  Currently Imager transforms the samples into
329       the range 0.0 ... 1.0 which may means the user has to translate
330       the value back.
331
332       An untranslated image would be unusable as image data, so
333       colormodel() would return "unknown" in this case.
334
335       Similarly a CMYK image might be returned as an "unknown" color
336       model image, if the caller chooses to disable translation to
337       RGB.
338
339 Imager 1.001 - 2 Jan 2015
340 ============
341
342  - both Imager and perl 5.21.3 define my_strerror(), prevent a conflict
343    Thanks to Slaven Rezic for the report and the patch.
344    https://rt.cpan.org/Public/Bug/Display.html?id=98234
345
346  - GIF: clean-up a test file if the test for the giflib 4.2.0 file
347    version bug fails.
348
349  - fix Imager::Matrix2d::rotate()'s centre point handling
350    https://rt.cpan.org/Public/Bug/Display.html?id=99959
351
352  - ICO: don't apply the icon mask to images with an alpha channel by
353    default
354    https://rt.cpan.org/Public/Bug/Display.html?id=99507
355
356  - make verbose probing output more verbose
357
358  - use Imager::Probe to probe for freetype 1.x
359    https://rt.cpan.org/Ticket/Display.html?id=100502
360
361  - The --enable and --disable parameters to the top-level Makefile.PL
362    work again.
363
364  - update the bundled/modified Devel::CheckLib to handle the gcc-4
365    symlink on Cygwin
366
367 Imager 1.000 - 28 Jul 2014
368 ============
369
370 There's nothing special about Imager 1.000, it's just another release.
371
372  - fix the skip check for the iolayer qr// buffer test
373
374  - improve error reporting for the iolayer test failing on a small
375    number of Win32 CPAN testers
376
377 Imager 0.99_02 - 21 Jul 2014
378 ==============
379
380  - Imager::Filter::Mandelbrot (and dynfilt/mandelbrot.c) - initialize
381    the blue channel in the generated palette, and allow each color
382    component to be in the range 100..255 instead of just 100..254.
383    Thanks to Ralf Neubauer.
384    https://rt.cpan.org/Ticket/Display.html?id=97086
385
386  - revert "improved the XS for i_io_read() and i_io_raw_read()"
387    This caused problems with older perls and didn't provide much of a
388    performance improvement.
389
390  - support Inline 0.57 and later.
391    Inline 0.57 changed the "with" interface.
392    https://rt.cpan.org/Ticket/Display.html?id=97108
393
394  - don't define our own MAXINT macro, it conflicts with windows header
395    files and in a few places it was the wrong value to use anyway.
396    https://rt.cpan.org/Ticket/Display.html?id=96425
397
398 Imager 0.99_01 - 29 Jun 2014
399 ==============
400
401  - GIF: add support for giflib 5.1.0, which added error code pointer
402    parameters to EGifCloseFile() and DGifCloseFile().
403    https://rt.cpan.org/Ticket/Display.html?id=96756
404
405  - GIF: avoid a double-free when do_write() fails.
406
407  - fix SV type probing to work on perl before 5.12.  Broken in 0.99.
408    https://rt.cpan.org/Ticket/Display.html?id=96761
409
410  - PNG: skip the benign error test before libpng 1.6.0, since the
411    error we're testing didn't exist before 1.6.0.
412    https://rt.cpan.org/Ticket/Display.html?id=94717 (continued)
413
414 Imager 0.99 - 25 Jun 2014
415 ===========
416
417  - Imager::IO->new_buffer() (and hence Imager->read()'s data
418    parameter) now accepts a reference to a scalar as well as just a
419    plain scalar.
420    https://rt.cpan.org/Ticket/Display.html?id=92785
421
422  - Imager::IO->new_buffer() now always makes a copy of the passed in
423    buffer to avoid problems with temporary objects used for the return
424    value of SvPVbyte().
425    https://rt.cpan.org/Ticket/Display.html?id=92785
426
427  - improved the XS for i_io_read() and i_io_raw_read()
428    https://rt.cpan.org/Ticket/Display.html?id=92738
429
430  - load plugins from absolute paths on Android
431    Thanks to Brian Fraser.
432    https://rt.cpan.org/Ticket/Display.html?id=93272
433
434  - added the jpeg_optimize parameter for writing JPEG files.  This can
435    significantly reduce file sizes, but uses more memory and time.
436    https://rt.cpan.org/Ticket/Display.html?id=94292
437
438  - the autolevels filter now works on the luminosity of the image
439    rather then working per channel.  The old autolevels filter is
440    still available as "autolevels_skew".
441    https://rt.cpan.org/Ticket/Display.html?id=94413
442
443  - Imager::File::PNG now supports libpng 1.6.10.
444    1.6.10 changed CRC errors from benign errors to normal errors,
445    which broke the test which used CRC errors to check for benign
446    error support.  Switched to using a 1-bit grey-scale image with a
447    palette to test for benign errors.
448    https://rt.cpan.org/Ticket/Display.html?id=94717
449
450 Imager 0.98 - 3 Jan 2014
451 ===========
452
453 Incompatible changes:
454
455  - the return value of setpixel() has changed.
456
457    Previously the return values for undrawable pixels vs caller errors
458    changed depending on whether you used the multiple pixel calling
459    mechanism, or the single pixel mechanism.
460
461    Now:
462
463     - for an invalid parameter, such as an unknown colour, or missing
464       parameter, an empty list (or undef in scalar context) is
465       returned, and errstr() is set,
466
467     - otherwise the number of pixels drawn is returned.  If none of
468       the pixels could be drawn (they were all outside the image), "0
469       but true" is returned.
470
471    https://rt.cpan.org/Ticket/Display.html?id=87650
472
473 Other changes:
474
475  - when drawing on an image with an alpha channel where the source
476    minimum is greater than zero, Imager would read from beyond the end
477    of a malloc() allocated buffer.  In rare circumstances this could
478    lead to some of the source image not being written to the target
479    image, or possibly to a segmentation fault.
480    I don't believe this has any security concerns beyond that.
481
482  - if the first text drawn with Imager::Font::T1 is not anti-aliased,
483    text drawn would be nonsense.  This would also read beyond the end
484    of a malloced buffer.
485
486  - non-AA text drawn with an Imager::Font::TT (Truetype 1) font would be
487    truncated early.
488    https://rt.cpan.org/Ticket/Display.html?id=88993
489
490  - Imager::Font::Wrap no longer requires the image parameter.
491    https://rt.cpan.org/Ticket/Display.html?id=87338
492
493  - a documentation typo fix in Imager::Transformations
494    Thanks to Adrian Yee.
495    https://rt.cpan.org/Ticket/Display.html?id=88598
496
497  - Image::Probe, Imager's internal module for probing library
498    locations now searches the directories specified by LD_RUN_PATH,
499    LD_LIBRARY_PATH, DYLD_LIBRARY_PATH and LIBRARY_PATH for libraries,
500    and the corresponing s/\blib$/include/ directories for header
501    files.
502    https://rt.cpan.org/Ticket/Display.html?id=86428
503
504 Imager 0.97 - 15 Jul 2013
505 ===========
506
507 No changes from 0.96_02.
508
509 Imager 0.96_02 - 8 Jul 2013
510 ==============
511
512  - PNG: treat a version mismatch between headers and library as a
513    probe failure.
514    https://rt.cpan.org/Ticket/Display.html?id=86659
515
516  - PNG: the check for benign error support is more complex than a
517    simple library version check, check for the appropriate macro.
518    Thanks for Slaven Rezic for following up on my CPAN Testers result
519    queries.
520    https://rt.cpan.org/Ticket/Display.html?id=86659
521
522  - W32: add a missing head1 AUTHORS to the old Win32.pm
523    https://rt.cpan.org/Ticket/Display.html?id=86658
524
525 Imager 0.96_01 - 1 Jul 2013
526 ==============
527
528  - TIFF: handle SampleFormat = 2 by translating the signed integer
529    values to unsigned by flipping their sign bits.
530
531    Handle SampleFormat = 3 where possible.
532
533    SampleFormat is ignored for paletted images.
534
535    Mixed SampleFormat are handled incorrectly, since libtiff returns
536    only the first SampleFormat value, and an image with both an alpha
537    channel and SampleFormat = 2 for color channels probably has a
538    different SampleFormat for the alpha channel.
539
540    https://rt.cpan.org/Ticket/Display.html?id=74540
541
542  - XS clean up:
543      https://rt.cpan.org/Ticket/Display.html?id=69243
544
545    - Imager::Color's rgba() method now returns its values as integers
546      instead of floating point. (IV instead of NV).
547
548    - The XS for i_map() and i_matrix_transform() now use the AV *
549      typemap instead of rolling their own.
550
551    - The XS for DSO_call() now uses the HV * typemap instead of
552      rolling it's own.
553
554    - The XS for i_poly_aa(), i_poly_aa_cfill(), i_transform() and
555      i_gradgen() now use a new T_AVARRAY typemap that greatly
556      simplifies the XS code.
557
558    - many other minor XS changes
559
560    - some XS code formatting
561
562  - TT (Freetype 1.x) and FT2 (Freetype 2.x) non-antialiased rendering
563    now renders in alpha-combining mode, to match antialiased output.
564    https://rt.cpan.org/Ticket/Display.html?id=73359
565
566  - add sample code and cookbook notes for drawing a blurred drop-shadow.
567
568  - add support for libpng 1.6, which changed the defaults for
569    reporting some types of error.
570    https://rt.cpan.org/Ticket/Display.html?id=85746
571
572  - FT2: use gsamp/psamp() to transfer pixels from the work image to
573    the output image instead of gpix/ppix.
574    https://rt.cpan.org/Ticket/Display.html?id=83478
575
576  - eliminate various GCC warnings, mostly initialized but otherwise
577    unused variables.
578
579 Imager 0.96 - 19 May 2013
580 ===========
581
582  - rearrange Imager's test files.
583    https://rt.cpan.org/Ticket/Display.html?id=84596
584
585  - Imager::Probe::_gcc_lib_paths now forces C locale.
586    A sufficiently recent gcc prints localized keys for the search
587    paths, which avoids that localization.
588    https://rt.cpan.org/Ticket/Display.html?id=84963
589
590  - fix a pod error detected by Pod::Simple 3.27 and laterm and skip
591    pod tests unless AUTOMATED_TESTING or IMAGER_AUTHOR_TESTING is set
592    and true.
593    https://rt.cpan.org/Ticket/Display.html?id=85262
594    reported by Andreas König
595
596  - add a test for unclosed POD in C source, and fix the errors it
597    found.
598    https://rt.cpan.org/Ticket/Display.html?id=74875
599
600  - fix some spelling errors detected by the newer aspell in Debian
601    Wheezy.
602
603  - remove a trailing ' from lib/Imager/Font/Test.pm's POD
604    thanks to gregor herrmann <gregoa@debian.org>
605    https://rt.cpan.org/Ticket/Display.html?id=85413
606
607  - add a test for standard =head1 commands and fix the errors found
608
609 Imager 0.95 - 19 Apr 2013
610 ===========
611
612  - handle the SVf_UTF8 flag correctly on magic strings passed to
613    Imager::IO's write() and raw_write() methods.
614    This may misbehave in perl 5.6.x since the UTF8 flag may not be
615    visible in the main SV after SvGETMAGIC().
616    https://rt.cpan.org/Ticket/Display.html?id=83438
617
618  - document that bounding_box() ignores the transformation matrix
619    supplied to tranform() for fonts.
620    https://rt.cpan.org/Ticket/Display.html?id=84106
621
622 Imager 0.94_02 - 5 Apr 2013
623 ==============
624
625  - enable debug logging for the standard font tests
626
627  - skip the overloaded UTF-8 text output checks on 5.6.x and earlier,
628    due to a bug in that version of perl.
629
630  - don't test for read() failing on a write-only handle in 5.8.x and
631    earlier, this was fixed in change 862083f7e4 in perl.
632
633  - report the version of Inline found during testing (an attempt to
634    diagnose some intermittent failures.)
635
636 Imager 0.94_01 - 2 Mar 2013
637 ==============
638
639  - NOTE: possibly backward incompatible:
640    support reading from/writing to perl filehandes that aren't raw
641    files.
642
643    This allows Imager's I/O to honour handles with layers such as
644    gzip, scalar file handles or tied file handles.
645
646    This is backward incompatible in that previous Imager would simply
647    use fileno() to retrieve the fd for the file and call write(2) etc
648    on it directly.
649    https://rt.cpan.org/Ticket/Display.html?id=78843
650
651  - moved most of README to lib/Imager/Install.pod which should make it
652    more accessible to the "web" generation, also significantly updated
653    and re-worked it.
654
655  - updated README's for the separately distributed modules to refer to
656    Imager::Install, and that they need -dev versions of packages
657    https://rt.cpan.org/Ticket/Display.html?id=81265
658
659  - the JPEG test code now reports the compile-time library version
660
661  - avoid a possible compiler optimization issue on CentOS 5.9 i386 by
662    rearranging (and mildly optimizing) some code.
663    https://rt.cpan.org/Ticket/Display.html?id=83212
664
665  - fix a POD error in Imager::Fill (detected on new Pod-Simple)
666    https://rt.cpan.org/Ticket/Display.html?id=83434
667
668  - fix a broken link to Graphics::Magick
669    https://rt.cpan.org/Ticket/Display.html?id=82743
670
671  - drawing text to a channel with FT2 would draw with random coverage
672    due to an uninitialized alpha channel.
673
674  - marked the function pointer underlying the mm_log() API with the
675    correct gcc magic and fixed the resulting warnings.
676
677  - fixed some other compiler warnings
678
679  - Imager::Font::W32 now properly reports text drawing errors
680    https://rt.cpan.org/Ticket/Display.html?id=70098
681
682  - handle the SVf_UTF8 flag correctly on magic (eg. overloaded)
683    strings passed as text to draw(), bounding_box(), has_chars(),
684    glyph_names() (where supported) in each of the font drivers.
685    This may misbehave in perl 5.6.x since the UTF8 flag may not be
686    visible in the main SV after SvGETMAGIC().
687    https://rt.cpan.org/Ticket/Display.html?id=83438 (partial)
688
689 Imager 0.94 - 15 Dec 2012
690 =========================
691
692 Variations on some of these changes were included in development
693 releases.
694
695  - improved thread safety
696    - the internal error stack and log file handle are now in a per-thread
697      context object
698    - JPEG now captures IPTC information in a thread-safe way
699    - avoid globals where possible for warning capture in libtiff
700    - use a mutex to avoid re-entering thread-unsafe giflib
701    - use a mutex to avoid re-entering thread-unsafe tifflib
702    - use a mutex to avoid re-entering thread-unsafe T1Lib
703    - use a library handle per thread for freetype 2.
704    - use an engine handle per thread for freetype 1.x.
705    - originally these changes broke ABI compatibility, this has been
706      restored.
707
708  - clarify the return value of getpixel();
709    https://rt.cpan.org/Ticket/Display.html?id=81198
710
711  - fixed a race condition in parallel testing for T1
712
713  - fixed a bug in handling yoff for untransformed image-based fills
714
715  - documentation improvements for Imager::Fill
716
717  - FT2: report the library version while testing.
718
719 Imager 0.93 - 15 Oct 2012
720 ===========
721
722 Bug fixes:
723
724  - previously a transparency enabled GIF write (the default) would
725    always use a GIF89a header even if none of the images were
726    transparent.
727
728  - previously the probe step for freetype-config would fail on cygwin
729
730  - catch an invalid matrix parameter to convert() instead of crashing
731    https://rt.cpan.org/Ticket/Display.html?id=79922
732
733  - remove the 16-bit/sample limitation from the documentation for
734    setsamples(), it hasn't applied for many releases.
735    https://rt.cpan.org/Ticket/Display.html?id=79989
736
737  - don't copy setsamples() data parameter, it may be a large scalar
738    https://rt.cpan.org/Ticket/Display.html?id=79990
739
740  - clean up .dSYM directories generated performing probes on OS X
741    Mountain Lion.
742
743  - pass the --verbose command-line option through to Imager::Probe in
744    sub-module's Makefile.PLs
745    https://rt.cpan.org/Ticket/Display.html?id=75878
746
747 Enhancements:
748
749  - support for giflib 5.0. (5.0.1 and later)
750    https://rt.cpan.org/Ticket/Display.html?id=79029
751    The giflib API Imager uses doesn't have a mechanism to set the
752    header version in 5.0.0.
753
754  - update the GIF library probe code to check for the new giflib 5.0.1
755    EGifSetGifVersion() function, and to check for the giflib 4.2.0
756    uninitialized gif89 bug.
757    https://rt.cpan.org/Ticket/Display.html?id=79679
758    http://sourceforge.net/tracker/?func=detail&aid=3574283&group_id=102202&atid=631304
759
760  - avoid static variables when capturing IPTC data from JPEG files
761
762  - match Imager::Font::T1's error message translations to those from
763    later versions of T1Lib.
764
765  - for libtiff versions that support extended warning handlers (3.8.0
766    or later), use them to avoid some global variables.
767
768  - note Image::ExifTool for better metadata support.
769    https://rt.cpan.org/Ticket/Display.html?id=79251
770
771 Imager 0.92 - 14 Aug 2012
772 ===========
773
774  - giflib 4.2 eliminates the GIF_LIB_VERSION macro, handle that
775    correctly for both probing and runtime.
776    https://rt.cpan.org/Ticket/Display.html?id=77672
777
778  - allow building JPEG/imexif.c on C89 compilers.
779
780  - allow building GIF/imgif.c on C89 compilers.
781
782 Imager 0.91 - 4 Jun 2012
783 ===========
784
785 Bug fixes:
786
787  - The size of rotated images is no longer rounded up so aggressively.
788    Added rounding to the linear interpolation done for rotate() and
789    matrix_transform() for 1 and 3 channel 8-bit images.
790    Adjusted the two tranlate matrices used to build the final rotation
791    matrix to use the distance between the outlier pixels rather than
792    the pixel dimensions (ie. dimension-1).
793    With all of this the output of rotate(degrees => 270) on an 8-bit
794    image exactly matches the output of rotate(right => 270).
795    https://rt.cpan.org/Ticket/Display.html?id=77063
796
797 Other changes:
798
799  - eliminate the old IIM_new(), IIM_DESTROY() names from Imager's
800    internals, those names only matter for the XS interface.
801
802  - improve error reporting when PERL_INITIALIZE_IMAGER_CALLBACKS finds
803    the API level compiled into a loadable module such as
804    Imager::File::GIF doesn't match that of Imager.  Previously it
805    could be difficult to determine exactly which module was failing to
806    load.
807    https://rt.cpan.org/Ticket/Display.html?id=77173
808
809  - added Imager->check_file_limits() as an interface to the
810    i_int_check_image_file_limits() API.
811
812  - Imager->set_file_limits(reset => 1) now resets the limits to the
813    defaults rather than setting them all to unlimited.
814
815  - wrote a brief security note as Imager::Security
816    https://rt.cpan.org/Ticket/Display.html?id=68910
817
818 Imager 0.90 - 30 Apr 2012
819 ===========
820
821 Bug fixes:
822
823  - Imager::Test::is_imaged() attempted to process an "epsilon"
824    parameter but the prototype didn't allow for the extra parameter.
825    Corrected the prototype.
826
827  - when downconverting samples (eg. from floating point to 8 bit)
828    Imager now rounds the sample value rather than attempting to
829    allocate input values over output values equally.  The old
830    behaviour had the probably surprising effect of converting a
831    floating point 2.1/255.0 into an 8-bit 3 rather than the expected
832    2.
833    This may result in slightly different 8 or 16-bit output images.
834
835  - BI_BITFIELD BMP images were handled incorrectly, both in
836    incorrectly calculating the space required for the masks and in
837    processing the image data itself.
838    https://rt.cpan.org/Ticket/Display.html?id=76736
839
840  - some odd width BMP BI_RLE4 images use run lengths that run one off
841    the edge of the image.  Imager now allows this, discarding the
842    extra column.
843
844  - odd length RLE4 runs in BMP images were decoded incorrectly.
845
846  - pkg-config could sometimes return a library that was in a directory
847    EU::MM / $Config{libpth} doesn't know about, but the compiler did.
848    If no -L is included in the pkg-config library information check if
849    EU::MM can find the library, and if not, search our configured
850    directories and insert that into the library flags.
851    https://rt.cpan.org/Ticket/Display.html?id=75869
852
853  - Imager::Probe can now probe for libraries with dependent libraries,
854    common for static linking, eg. libpng requires libz.
855    https://rt.cpan.org/Ticket/Display.html?id=74043
856
857  - libpng 1.5 specific probes were looking for libpng 1.4 filenames.
858
859  - added alternative probe configurations that try to link libz, to
860    handle a statically linked libpng.
861    https://rt.cpan.org/Ticket/Display.html?id=74043
862
863  - if a probe includes testcode, Imager::Probe now checks that code as
864    part of the process of checking each configuration rather than as a
865    post test of the found configuration.  This allows alternate
866    configurations to be checked if a matching but non-working
867    configuration is found.
868    https://rt.cpan.org/Ticket/Display.html?id=74043
869
870 Other changes:
871
872  - when reading or writing images via callbacks, the default callbacks
873    now push an error message indicating that a required callback was
874    called but not supplied.
875    https://rt.cpan.org/Ticket/Display.html?id=76782
876
877  - clarify which callbacks are required for reading and writing TIFF
878    images.
879
880  - improve logging for creation of callback I/O layers.
881
882  - a little more documentation for Imager::Probe.
883
884  - the i_get_file_background() and i_get_file_backgroundf() APIs now
885    return int to indicate whether the i_background tag was found.
886
887  - PNG rework
888    - improve error reporting
889    - add png_interlace, png_bits tags
890    - read paletted images as paletted images, including transparency
891    - read 1 bit greyscale images as a type suitable for other file
892      handlers to write as bilevel
893    - read 16 bit/sample PNG as 16-bit/sample Imager images
894    - write "bilevel" paletted images as 1 bit grayscale images
895    - write paletted images as paletted images
896    - write 16-bit (or higher)/sample images as 16-bit/sample PNG
897      images
898    - improved metadata support
899    https://rt.cpan.org/Ticket/Display.html?id=29268
900
901 Imager 0.89 - 18 Mar 2012
902 ===========
903
904 Bug fixes:
905
906  - getpixel(..., type => "float") and the API i_gpixf() have been
907    broken on paletted images since they were implemented.
908    https://rt.cpan.org/Ticket/Display.html?id=75258
909
910 Other changes:
911
912  - links in the METHOD INDEX now point at the method documentation
913    rather than the heading you can find them under.
914    https://rt.cpan.org/Ticket/Display.html?id=71495
915
916  - Imager (and the bundled dynamic modules) no longer fallback to
917    using DynaLoader if loading via XSLoader fails.
918    For the bundled modules this could hide useful error messages.
919    https://rt.cpan.org/Ticket/Display.html?id=75560
920
921  - IM_DEBUG_MALLOC mymalloc() no longer sn?printfs() a string to a
922    buffer in the array of allocations, but just stores the filename
923    pointer and line number.
924    https://rt.cpan.org/Ticket/Display.html?id=70388
925
926 Imager 0.88 - 22 Feb 2012
927 ===========
928
929  - describe how to build libgif etc on OS X in such a way as to be
930    compatible with a fat binary perl (such as the system perl), in
931    README.
932    https://rt.cpan.org/Ticket/Display.html?id=73371
933
934  - update the change notes for 0.77_01 to indicate that libungif
935    support was removed.
936
937  - add some other imaging modules to SEE ALSO
938    https://rt.cpan.org/Ticket/Display.html?id=73906
939
940  - note that the generator of the apparently non-DFSG-free postscript
941    in MMOne.pfb is a Debian package.
942
943  - setsamples() is now a true complement to getsamples() - it can
944    write 8-bit or floating point samples from a scalar or array
945    reference.  This adds i_psamp() and i_psampf() to the C level API.
946
947  - the XS interfaces to i_gsamp(), i_gsampf() and i_gsamp_bits() have
948    changed to make better use of the typemap, but these aren't part of
949    the perl level API anyway.  There were no changes to the C level
950    interfaces to these functions.
951
952  - getpixel() and setpixel() now accept a mix of scalar and array
953    references for the x and y parameters, and unequal array lengths is
954    no longer an error.
955    https://rt.cpan.org/Ticket/Display.html?id=73697
956
957 Bug fixes:
958
959  - correctly calculate the size of a rotated image
960    https://rt.cpan.org/Ticket/Display.html?id=69261
961
962  - fix incorrect rounding of color values for matrix_transform() and
963    rotate().
964    https://rt.cpan.org/Ticket/Display.html?id=69261
965
966  - Win32 text output is now done in normal combine mode, the alpha
967    component of the color is now significant.
968    https://rt.cpan.org/Ticket/Display.html?id=70014
969
970  - remove long unused gif case from read()
971    https://rt.cpan.org/Ticket/Display.html?id=69244 (partial)
972
973  - the getsamples() target parameter was being treated as a hashref
974    when it's meant to be an array reference.
975    https://rt.cpan.org/Ticket/Display.html?id=74882
976
977  - getpixel() and setpixel() now returns an empty list when invalid
978    parameters are supplied.
979    Invalid values for type now result in an error for getpixel().
980    https://rt.cpan.org/Ticket/Display.html?id=73697
981
982 Imager 0.87 - 03 Jan 2012
983 ===========
984
985  - document the return value of the filter() method.
986    https://rt.cpan.org/Ticket/Display.html?id=72369
987
988  - document i_gsamp_bits() and i_psamp_bits().
989    https://rt.cpan.org/Ticket/Display.html?id=68815
990
991  - properly increment the Imager::Matrix2d $VERSION.
992
993  - actually include the Imager::Test tests in the dist
994
995  - correctly read and write 256x256 pixel ICO files
996    https://rt.cpan.org/Ticket/Display.html?id=69599
997
998  - make the error message from read() or read_multi() when they can't
999    identify the file type match reality.
1000    https://rt.cpan.org/Ticket/Display.html?id=72475
1001
1002  - read() now uses $FORMATGUESS if it can't determine the file type
1003    based on the file header, to match read_multi().
1004
1005  - re-work and add tests for def_guess_type().  def_guess_type() no
1006    longer returns any random file extension as the file type.
1007
1008  - add gray4, gray16 and gray as presets for make_colors.
1009    https://rt.cpan.org/Ticket/Display.html?id=67911
1010
1011  - add make_palette() method that produces a palette from one or more
1012    images.
1013
1014  - fix the Imager dependency for the separately distributed font
1015    drivers.
1016    https://rt.cpan.org/Ticket/Display.html?id=72643
1017
1018  - fix i_render_color() to properly draw in "normal" mode - ie. when
1019    writing to a 1 or 3 channel image the second or fourth channel of
1020    the source color was being ignored, it is now significant.
1021    https://rt.cpan.org/Ticket/Display.html?id=71564
1022
1023 Imager 0.86 - 31 Oct 2011
1024 ===========
1025
1026  - improve error reporting for W32 tests
1027
1028 Imager 0.85_02 - 24 Oct 2011
1029 ==============
1030
1031 Bug fixes:
1032
1033  - eliminate unused i_gif_opts type (clean-up)
1034    https://rt.cpan.org/Ticket/Display.html?id=69245
1035
1036  - fix combine=0 fill color anti-aliasing on the double/sample path
1037    https://rt.cpan.org/Ticket/Display.html?id=71309
1038
1039  - make default text color non-transparent
1040    https://rt.cpan.org/Ticket/Display.html?id=71469
1041
1042  - apply the last of the Debian unforwarded spelling fixes
1043    https://rt.cpan.org/Ticket/Display.html?id=70656
1044
1045  - the log() method used its message parameter as a C level format
1046    string.
1047    https://rt.cpan.org/Ticket/Display.html?id=71653
1048
1049  - provide our own STRLEN typemap entry for older perls.
1050    https://rt.cpan.org/Ticket/Display.html?id=71641
1051
1052  - add extra ppport.h configuration to support older perls.
1053
1054  - depend on Scalar::Util, since we use it and older perls don't have
1055    it.
1056
1057  - add overloaded eq to Imager::Matrix2d, since older perls don't seem
1058    to synthesize it from overloaded "".
1059
1060   - use T1_StrError() for error messages on modern libt1
1061     https://rt.cpan.org/Ticket/Display.html?id=69879
1062
1063  - actually load the font rather than just adding it to the catalog on
1064    creation.
1065
1066  - Imager::Font->new now produces better error messages for the T1
1067    engine.
1068
1069  - the font has_chars() method now returns perl's true and false
1070    values in list context rather than integers, which should be more
1071    efficient.
1072    https://rt.cpan.org/Ticket/Display.html?id=69158
1073
1074  - the btm data structure used by the flood_fill code is now
1075    initialized more efficiently.
1076    https://rt.cpan.org/Ticket/Display.html?id=68994
1077
1078  - updated the Thanks list in README
1079    https://rt.cpan.org/Ticket/Display.html?id=71607
1080
1081  - check there's at least one coefficient for the convolution filter
1082    https://rt.cpan.org/Ticket/Display.html?id=68993
1083
1084  - make the APIRef synopsis ordering consistent, older versions of
1085    perl could order it differently.
1086    https://rt.cpan.org/Ticket/Display.html?id=71675
1087
1088  - we rely on Config.pm's d_vsnprintf as to whether we use
1089    vsnprintf/snprintf, which is defined in the Win32 Config.pm even
1090    though it only has _ prefixed versions of these.  Define our own
1091    prefixed names on Win32.
1092    https://rt.cpan.org/Ticket/Display.html?id=71642
1093
1094  - fix library detection with MSVC
1095
1096  - search a few more library directories, so EU::MM doesn't discard
1097    them.  Hopefully fixes:
1098    https://rt.cpan.org/Ticket/Display.html?id=71643
1099
1100 Imager 0.85_01 - 10 Oct 2011
1101 ==============
1102
1103  - add simple tests for the Imager::Test test_image generators
1104
1105  - io_glue I/O buffering re-work:
1106
1107    - reorganize io_glue to do it's own buffering by default
1108
1109    - the unbuffered functions are available as i_io_raw_read() (or
1110      raw_read() from perl) etc but are not recommended for typical
1111      use.
1112
1113    - use the new i_io_peekn() when checking for file magic to avoid
1114      seek, allowing Imager to detect the file type and read the file
1115      from an unseekable stream (for formats that don't use random
1116      access)
1117
1118    - added several new I/O layer API functions.
1119
1120    - fix the TGA performance problem, most noticably on Win32
1121      https://rt.cpan.org/Ticket/Display.html?id=70037
1122
1123    - TIFF now uses wrapper functions of the correct types to avoid casts
1124      https://rt.cpan.org/Ticket/Display.html?id=69912
1125
1126    - the callback IO object did its own buffering, controlled by the
1127      maxbuffer parameter supplied to the read() and write() methods.
1128      This buffering has been removed, to avoid redundancy with the
1129      common io_glue buffering.  This also avoids a bug in that code
1130      which could rarely pass a zero length to the read callback and
1131      then panic about the result.
1132
1133    - the callback IO object now tests the result of calling the close
1134      callback, which should return true for success.
1135
1136    - the PNM reader did its own buffering.  This buffering has been
1137      removed to avoid redundancy with the common io_glue buffering.
1138
1139    - previously the read handlers for fd and callback I/O layers would
1140      call the underlying interface (POSIX read or your supplied callback)
1141      until it filled the buffer.  It now only makes one call.
1142
1143    - added public constructors for I/O layer objects (see Imager::IO)
1144
1145    - all core file handlers now use the i_io_foo() wrappers to gain
1146      access to buffered I/O rather than calling the I/O layer
1147      callbacks directly.
1148
1149    - all core file handlers now check for error on close.
1150
1151    - Backward compatibility: if you hava custom file handlers, you can
1152      use i_io_write() etc since they're available as macros in older
1153      versions of Imager.
1154
1155    - eliminate the final remnants of io_glue_commit_types().
1156
1157    - bump IMAGER_API_VERSION, since the above may break assumptions.
1158
1159  - removed the long unused i_gen_reader() and i_gen_writer() utility
1160    functions.
1161
1162 Imager 0.85 - 29 Aug 2011
1163 ===========
1164
1165 The main changes in the release versus 0.84 are:
1166
1167  - on 64-bit systems, 64-bit types are consistently used for image
1168    dimensions and co-ordinated, and for memory block sizes.
1169
1170  - handle IFD loops in TIFF files correctly.  Previously this would
1171    lead to an infinite loop.
1172
1173 Bug fixes:
1174
1175  - fix the link in the getheight() entry in the method index
1176
1177 Imager 0.84_02 - 22 Aug 2011
1178 ==============
1179
1180 Development release, this will become 0.85 if CPAN testers is
1181 favourable.
1182
1183 Bug fixes:
1184
1185  - the image file limits set by set_file_limits() weren't being
1186    checked when reading TIFF files.
1187    https://rt.cpan.org/Ticket/Display.html?id=69915
1188
1189  - Provide more information about file format module load errors on a
1190    failed image file read() or write().
1191    https://rt.cpan.org/Ticket/Display.html?id=69194
1192
1193  - use TIFFReadDirectory() instead of TIFFSetDirectory() to iterate
1194    through TIFF images, since it checks for IFD loops.
1195    https://rt.cpan.org/Ticket/Display.html?id=69914
1196
1197  - don't leak memory when out of range palette indexes are supplied to
1198    setscanline().
1199    https://rt.cpan.org/Ticket/Display.html?id=69242
1200
1201  - require a later version of CPAN::Meta to ensure JSON::PP and
1202    CPAN::Meta::YAML are available.
1203    https://rt.cpan.org/Ticket/Display.html?id=69008
1204
1205  - hoist the per-line calculations for the flines implementations, and
1206    modernize the tests a bit.
1207    https://rt.cpan.org/Ticket/Display.html?id=70126
1208
1209  - detect snprintf()/vsnprintf() (cheat by using Config.pm) and use
1210    them when available.
1211    https://rt.cpan.org/Ticket/Display.html?id=69147
1212
1213  - if t1lib failed to reinitialize it would be left as marked
1214    initialized.
1215    https://rt.cpan.org/Ticket/Display.html?id=69877
1216
1217  - update the bundled (and still modified) Devel::CheckLib
1218    https://rt.cpan.org/Ticket/Display.html?id=69170
1219
1220 Imager 0.84_01 - 8 Aug 2011
1221 ==============
1222
1223 Development release as a sanity check for the types re-work.
1224
1225 Massive types re-work:
1226
1227  - the type used internally for pixel co-ordinates and image sizes is
1228    now 64-bit on 64-bit platforms (at least sane ones).
1229
1230  - size_t is now used consistently for memory block sizes.
1231
1232  - since this changes the binary interface, the Imager API version has
1233    been incremented.  Any module that uses the API will need to be
1234    rebuilt.  In most cases that will be enough, but calls to any APIs
1235    that take a pointer to image sizes may need source changes.
1236
1237  - you should be able to create very large images on 64-bit systems,
1238    if you have enough memory.  Successfully created a 32768 x 49192 x
1239    3 channel image, filled with a tiled image and scaled it.  The
1240    unscaled image was also successfully saved to a JPEG.
1241
1242  - check the image size before attempting to write BMP, GIF, JPEG,
1243    PNG, SGI, TGA, TIFF images.
1244
1245  - correctly handle reading TGA images over 32767 pixels wide or tall.
1246
1247 Incidental changes:
1248
1249  - the gif_left and gif_top tags are now clamped to non-negative
1250    values when writing a GIF image.
1251
1252  - removed dead callback read/write code
1253
1254 The default maximum memory size when reading files is now 1G.
1255
1256 Imager 0.84 - 20 Jun 2011
1257 ===========
1258
1259  - Imager no longer inherits from Exporter (unless you're running an
1260    old, old perl.
1261
1262  - Imager can now write progressive JPEGs (it could always read them).
1263    https://rt.cpan.org/Ticket/Display.html?id=68691
1264
1265 Bug fixes:
1266
1267  - re-work, document and test Imager's logging facility.
1268    https://rt.cpan.org/Ticket/Display.html?id=65227
1269
1270  - fix META.yml testing and the generated META.yml
1271    https://rt.cpan.org/Ticket/Display.html?id=65235
1272
1273  - test and add error reporting to to_*() family methods
1274
1275  - add to_rgb_double() method.
1276    https://rt.cpan.org/Ticket/Display.html?id=65101
1277
1278  - Imager no longer exports anything by default
1279    https://rt.cpan.org/Ticket/Display.html?id=65228
1280
1281  - convert colors to grayscale if the supplied (or generated) palette
1282    contains only grays when performing error diffusion color
1283    translation.
1284    https://rt.cpan.org/Ticket/Display.html?id=68508
1285
1286  - writing a paletted image to GIF wouldn't always use the colors
1287    supplied (or generated, eg. via make_colors => "mono"), which was
1288    confusing at best.
1289    https://rt.cpan.org/Ticket/Display.html?id=67912
1290
1291  - replace (imager|tony)@imager.perl.org in the doc, since I don't
1292    plan to continue receiving mail at that address.
1293    https://rt.cpan.org/Ticket/Display.html?id=68591
1294
1295 Imager 0.83 - 21 May 2011
1296 ===========
1297
1298 Bug fixes:
1299
1300  - diag() the error message on failure for some TIFF tests that are
1301    failing on a Solaris smoker.
1302    http://www.cpantesters.org/cpan/report/6396db1e-8090-11e0-9682-112b785ebe45
1303
1304 Imager 0.82_01 - 17 May 2011
1305 ==============
1306
1307 Dev release, in case the compose tests are too sensitive.
1308
1309 Bug fixes:
1310
1311  - Imager::Font::T1 incorrectly checked for absolute filename under
1312    Win32.  Thanks to kmx for the report and fix.
1313    https://rt.cpan.org/Ticket/Display.html?id=67963
1314
1315  - compose() with the target, source or mask position off the top or
1316    left of the target image didn't clip the source image correctly.
1317    https://rt.cpan.org/Ticket/Display.html?id=67220
1318
1319  - compose() now returns a useful error message on a non-positive
1320    opacity.
1321
1322  - compose.im now at 100% test coverage. (As opposed to, umm, much,
1323    much less.)
1324
1325 Imager 0.82 - 14 Mar 2011
1326 ===========
1327
1328 Bug fixes:
1329
1330  - eliminate calls to i_has_format() from the test suite, since it's
1331    no longer a useful way to check for file format support.  Eliminate
1332    i_has_format() from the functions exposed via XS.
1333    https://rt.cpan.org/Ticket/Display.html?id=65863
1334
1335  - eliminate calls to note(), which isn't in the (very old) version of
1336    Test::More we have as a pre-requisite.  note() is modern enough
1337    that I don't feel a need to require a Test::More upgrade for it.
1338    https://rt.cpan.org/Ticket/Display.html?id=65864
1339
1340  - skip the threads tests on Test::More 2.00_*
1341    https://rt.cpan.org/Ticket/Display.html?id=65812
1342
1343  - add an (unshipped) test to check Imager's internal POD links
1344    https://rt.cpan.org/Ticket/Display.html?id=65749
1345
1346  - improve the library detection summary
1347    https://rt.cpan.org/Ticket/Display.html?id=9675
1348
1349  - increase the version of Imager::Font::Type1 so that upgrades don't
1350    downgrade the version in this file.
1351    https://rt.cpan.org/Ticket/Display.html?id=66250
1352
1353  - if we see an -rpath (or -R) option in $Config{lddlflags} supply
1354    that option for the directories that would normally go in
1355    LD_RUN_PATH.  Typically an explicit -rpath overrides LD_RUN_PATH.
1356    https://rt.cpan.org/Ticket/Display.html?id=65955
1357
1358 Imager 0.81 - 14 Feb 2011
1359 ===========
1360
1361  - added coverage tests for masked images (maskimg.c @100% test coverage)
1362
1363  - add hsv() method to Imager::Color
1364    Thanks to Leolo (Philip Gwyn)
1365    https://rt.cpan.org/Ticket/Display.html?id=65385
1366
1367  - split libt1 Type 1 font support into a sub-module
1368    https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
1369
1370  - add a preload() class method for use in forking servers, and to
1371    work around limitations in PAR.
1372    https://rt.cpan.org/Ticket/Display.html?id=65665
1373
1374 Bug fixes:
1375
1376  - paletted writes to a masked image are now masked correctly.
1377    Revealed by new coverage tests.
1378
1379  - update the filter plugin documentation.
1380    https://rt.cpan.org/Ticket/Display.html?id=56513
1381
1382  - add the matrix() method to Imager::Matrix2d to allow creation of a
1383    matrix with specified co-efficients.  You can now multiple an
1384    Imager::Matrix2d object by a 9 element array ref or a number.
1385    https://rt.cpan.org/Ticket/Display.html?id=29938
1386
1387  - really fix loading TTF fonts with FT2 when FT1 isn't available.
1388    Thanks to Leolo (Philip Gwyn)
1389    https://rt.cpan.org/Ticket/Display.html?id=65386
1390    https://rt.cpan.org/Ticket/Display.html?id=62855
1391
1392  - make sure each test script that needs testout/ creates it.
1393    https://rt.cpan.org/Ticket/Display.html?id=65088
1394
1395  - handle a slightly different warning from libtiff 4.x
1396    https://rt.cpan.org/Ticket/Display.html?id=65268
1397
1398  - the sat transform2() op returned an incorrect saturation.
1399    https://rt.cpan.org/Ticket/Display.html?id=65391
1400
1401 Imager 0.80 - 17 Jan 2011
1402 ===========
1403
1404  - added coverage tests for Imager::Fountain and Imager::Color::Float
1405
1406  - Imager is now maintained in git
1407    http://git.imager.perl.org/imager.git
1408    git://git.imager.perl.org/imager.git
1409
1410 Bug fixes:
1411
1412  - images with an translucent alpha channel were not scaled correctly
1413    by the default (qtype=normal) scaling method.
1414    https://rt.cpan.org/Public/Bug/Display.html?id=63922
1415
1416  - Imager::Color::Float now translates "#FFFFFF" to white instead of
1417    just a little darker.
1418
1419  - make the default color map build algorithm "mediancut".  This
1420    changes the default color map builder for writing GIFs back to what
1421    it was in 0.77, reverting a performance regression.
1422    https://rt.cpan.org/Ticket/Display.html?id=64785
1423
1424  - handle failure to create a masked image correctly
1425
1426 Imager 0.79 - 10 Dec 2010
1427 ===========
1428
1429  - add Imager::Test to the POD coverage tests and document the missing
1430    functions.
1431
1432  - the convert() method now optimizes the case where all output
1433    channels are either 0, sourced from a single input channel or 1.
1434    This significantly speeds up presets like "addalpha", "green".
1435    https://rt.cpan.org/Ticket/Display.html?id=51254
1436
1437  - add wiggle.pl sample, as suggested by Dan Oppenheim.
1438
1439  - add the combine() method to combine channels from multiple source
1440    images into a new image
1441    https://rt.cpan.org/Ticket/Display.html?id=11872
1442
1443 Bug fixes:
1444
1445  - treat the co-efficients for convert() as doubles instead of floats.
1446
1447  - If a higher (earlier) priority font handler failed to load, that
1448    would crash preventing loading of later font handlers.
1449    https://rt.cpan.org/Ticket/Display.html?id=62855
1450
1451  - parse defines from the options returned by pkg-config --cflags
1452    https://rt.cpan.org/Ticket/Display.html?id=63223
1453
1454  - a regen of the MANIFEST revealed that GIF and FT2 tests weren't
1455    included in the tarball.  They are now included.
1456
1457 Imager 0.78 - 4 Oct 2010
1458 ===========
1459
1460 Bug fixes:
1461
1462  - don't access deprecated members of the png_structp.
1463    https://rt.cpan.org/Ticket/Display.html?id=60242
1464
1465  - document that using color objects is faster than supplying colors
1466    by name, etc.
1467    https://rt.cpan.org/Ticket/Display.html?id=61047
1468
1469  - Imager::Probe now accepts array references for incpath and libpath.
1470    https://rt.cpan.org/Ticket/Display.html?id=60244
1471
1472 Imager 0.77_02 - 27 Sep 2010
1473 ==============
1474
1475  - moved Win32, FreeType 2 font support into sub-modules.
1476    https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
1477    Uses Imager::Probe now.
1478    https://rt.cpan.org/Public/Bug/Display.html?id=61328
1479
1480  - tested successfully with jpeg-8b
1481    https://rt.cpan.org/Ticket/Display.html?id=60221
1482
1483 Bug fixes:
1484
1485  - from _01: look for missing file support test files in the right
1486    places.
1487
1488  - flood_fill() wouldn't fill the right side of a single scan-line
1489    fill area.
1490    Thanks to Nicolas Roggli for reporting this.
1491
1492  - flood_fill wouldn't fill to the left edge of the image if the
1493    starting line didn't reach the left edge.
1494    Thanks to Nicolas Roggli for reporting this.
1495
1496 Imager 0.77_01 - 13 Sep 2010
1497 ==============
1498
1499  - add each library-directory/pkgconfig/ to the pkg-config search path
1500    in Imager::Probe.
1501    Thanks to Justin Davis.
1502    https://rt.cpan.org/Ticket/Display.html?id=60491
1503
1504  - moved GIF, TIFF, JPEG file handling code into sub-modules in
1505    preparation for separate distribution.
1506    https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
1507
1508    Note: this removed support for libungif from Imager.
1509
1510  - optimize filled box drawing (color, not fill)
1511
1512 Bug fixes:
1513
1514  - Imager::Probe was calling ExtUtils::Liblist to initialize
1515    LD_RUN_PATH supplying an undefined value rather than the found
1516    directory.  Thanks to Justin Davis.
1517    https://rt.cpan.org/Ticket/Display.html?id=60491
1518
1519  - only prepend ./ to font filenames when passing them to T1Lib and
1520    then only when it would use its search mechanisms.
1521    https://rt.cpan.org/Ticket/Display.html?id=60509
1522
1523  - fix the cache check for the X rgb.txt loader.  This is typically
1524    used for color translation on Unix-like systems, and the fix
1525    improves performance of supplying colors by name by about 80 times.
1526    Test code that managed 3400 10x10 pixel boxes/second sped up to
1527    25700 boxes/second.
1528
1529  - clarify that Imager doesn't write EXIF metadata to images.
1530    https://rt.cpan.org/Ticket/Display.html?id=60637
1531
1532  - Imager::Probe can now search subdirectories under its include path.
1533    Used by the PNG Makefile.PL to find headers and libraries when they
1534    aren't in the base directory, as in cygwin.
1535    https://rt.cpan.org/Ticket/Display.html?id=60635
1536
1537 Imager 0.77 - 11 Aug 2010
1538 ===========
1539
1540 I don't want Imager::File::PNG indexed as part of Imager, but forgot
1541 to update the META.yml before updating the version.
1542
1543  - don't index Imager::File::PNG as part of Imager
1544
1545  - add resources to META.yml
1546
1547 Imager 0.76 - not released
1548 ===========
1549
1550 Bug fixes:
1551
1552  - the align_string() method would ignore a string of "0" due to a
1553    mis-use of C< ||= >.
1554    Thanks to Maurice Height for reporting this.
1555    https://rt.cpan.org/Ticket/Display.html?id=60199
1556
1557 Imager 0.75_03 - 09 Aug 2010
1558 ==============
1559
1560 Bug fixes:
1561
1562  - read_types() and write_types() would include png when it wasn't
1563    available due to a problem with the %formats tie
1564
1565  - handle dependent libraries correctly (eg -lpng requiring -lz) in
1566    the code run phase of library probing.
1567
1568 Imager 0.75_02 - 07 Aug 2010
1569 ==============
1570
1571 Bug fixes:
1572
1573  - add file missing from MANIFEST, which was causing TIFF failures.
1574
1575 Imager 0.75_01 - 06 Aug 2010
1576 ==============
1577
1578 Test release for the new PNG probe.
1579
1580  - added the ability to read multiple-image PNM files.
1581    Note that unlike the pbm/pgm/ppm specification this accepts mixed
1582    format files and allows white space padding between files.
1583    Thanks to Philip Gwyn (Leolo) for this patch.
1584
1585  - moved the PNG file handling code into a sub-module in preparation
1586    for separate distribution.
1587    https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
1588    Also helps avoid complications from -I/-L compile/link options from
1589    other libraries.
1590
1591 Bugs:
1592
1593  - Imager->new(data => $data) didn't try to process image file data in
1594    $data
1595    https://rt.cpan.org/Ticket/Display.html?id=58761
1596
1597  - t/t50basicoo.t no longer depends on the other tests to generate its 
1598    input files.
1599    https://rt.cpan.org/Ticket/Display.html?id=9798
1600    Also, it wasn't testing pnm (pnm vs ppm mix-up)
1601
1602  - update the documentation of hardinvert to match the change in 0.62.
1603    https://rt.cpan.org/Ticket/Display.html?id=59785
1604
1605  - added hardinvertall filter which also inverts the alpha channel
1606    (sorry for the mess)
1607
1608  - when probing for TIFF, set LD_RUN_PATH just as the Makefile does so
1609    the probe can find the library for the test run.
1610    https://rt.cpan.org/Ticket/Display.html?id=57518
1611
1612 Imager 0.75 - 20 Jun 2010
1613 ===========
1614
1615  - use PERL_NO_GET_CONTEXT to slightly improve performance on threaded
1616    perls (not measured)
1617
1618 Bugs:
1619
1620  - an opacity fill based on a fountain fill would segfault when
1621    filling an 8-bit/sample image.
1622
1623  - merge thickline branch polygon fix
1624    https://rt.cpan.org/Ticket/Display.html?id=43518
1625
1626 Imager 0.74 - 7 May 2010
1627 ===========
1628
1629 Bug fixes:
1630
1631  - read_multi() didn't handle a missing file format library correctly,
1632    aborting on failing to call i_readgif_multi_wiol() or
1633    i_readtiff_multi_wiol().
1634
1635  - fix spelling errors patched by Debian
1636    http://svn.debian.org/viewsvn/pkg-perl/trunk/libimager-perl/debian/patches/spelling.patch?revision=54839&view=markup
1637
1638  - add an (unshipped) author test to spellcheck Imager's POD.
1639
1640  - update the TIFF file format documentation
1641    https://rt.cpan.org/Ticket/Display.html?id=56510
1642
1643  - lib/Imager/IO.pod was written almost 4 years ago but never shipped.
1644
1645 Imager 0.73 - 15 Mar 2010
1646 ===========
1647
1648  - implement outline circles, both anti-aliased and not
1649    https://rt.cpan.org/Ticket/Display.html?id=19755
1650
1651  - a combine => "none" fill to a 1 or 3 channel image would produce
1652    the incorrect colour.
1653
1654 Imager 0.72 - 09 Dec 2009
1655 ===========
1656
1657 Bump version for release, since 0.71_03 is stable with CPAN testers.
1658
1659 Imager 0.71_03 - 5 Dec 2009
1660 ==============
1661
1662  - further adjust the threads test so it only performs the tests on
1663    perls where it's expected to work, and only if the threads module
1664    can be loaded.
1665
1666 Imager 0.71_02 - 1 Dec 2009
1667 ==============
1668
1669  - adjust the way we load the threads module for the threads test so
1670    it works with non-threaded perls
1671
1672 Imager 0.71_01 - 30 Nov 2009
1673 ===========
1674
1675 Bug fixes:
1676
1677  - use scanline oriented operations to flip images instead of pixel
1678    operations
1679    https://rt.cpan.org/Ticket/Display.html?id=39278
1680
1681  - use double/sample operations to flip large sample images instead of
1682    8-bit sample operations.
1683    https://rt.cpan.org/Ticket/Display.html?id=39280
1684
1685  - fix POD nits
1686    https://rt.cpan.org/Ticket/Display.html?id=51874
1687
1688  - prevent double-frees when someone creates Imager objects and then
1689    creates a thread.  Note: this just handles some simple cases,
1690    Imager doesn't support perl threads, and isn't likely to.
1691    https://rt.cpan.org/Ticket/Display.html?id=52268
1692
1693 Imager 0.71 - 16 Nov 2009
1694 ===========
1695
1696  - add the opacity fill type - an adaptor that modifies the opacity of
1697    another fill.
1698
1699 Bug fixes:
1700
1701  - the conv filter now enforces that the sum of the coefficients is
1702    non-zero.  Also, rather than skipping pixels off the edge off the
1703    edge of the image, the closest edge pixel is used.  Previously
1704    dividing by the zero sum of coefficients could cause invalid
1705    results or runtime exceptions.
1706    Thanks to David Cantrell's Alpha-NetBSD CPAN test box for revealing
1707    this bug.
1708
1709 Imager 0.70 - 21 Sep 2009
1710 ===========
1711
1712 Bug fixes:
1713
1714  - release image row and comments memory on all error returns in gif
1715    reader
1716
1717  - handle zero length extensions, previously this would cause a null
1718    pointer dereference
1719    Thanks to Krzysztof Wojtaś for the test data and fix for this.
1720
1721  - an integer division meant that preview scaling to below 1 pixel
1722    wide or high (which isn't too useful anyway) was calculating using
1723    NaNs on most platforms, and causing an exception on others.
1724    Thanks to David Cantrell for producing a backtrace of the crash on
1725    his Alpha-NetBSD CPAN test box which made it possible to track this
1726    down.
1727
1728 Imager 0.69 - 08 Sep 2009
1729 ===========
1730
1731 Bug fixes:
1732
1733  - broken test fix - was attempting to call a function skip_all, when
1734    that should be a parameter to plan().
1735
1736  - briefly document apidocs.perl, the tool used to build
1737    Imager::APIRef and make some minor enhancements
1738
1739  - various minor documentation enhancements and fixes.
1740
1741 Imager 0.68 - 07 Sep 2009
1742 ===========
1743
1744  - Imager->new(file => $filename) and other similar incantations will
1745    load the given file.
1746    https://rt.cpan.org/Ticket/Display.html?id=48261
1747
1748 Bug fixes:
1749
1750  - avoid using CHECK as a label in Imager::Test
1751    http://nntp.x.perl.org/group/perl.cpan.testers/5220921
1752
1753  - re-work most image file test files that require a library into
1754    separate library present/not present files to remove stupidly long
1755    conditionals
1756
1757  - don't treat rubthrough() outside the bounds of the target image as
1758    an error.
1759    http://nntp.x.perl.org/group/perl.cpan.testers/5185716
1760
1761 Imager 0.67_01 - 02 Sep 2009
1762 ==============
1763
1764 Bug fixes:
1765
1766  - correct documentation of default of raw image interleave read
1767    parameter
1768    https://rt.cpan.org/Ticket/Display.html?id=42074
1769
1770  - add raw_ prefix to raw read parameters, though the original names
1771    still work.
1772
1773  - fail the read if an invalid raw_interleave parameter is supplied
1774
1775  - warn if no interleave or raw_interleave parameter is supplied,
1776    since the documented default was wrong, and incompatible with the
1777    write format
1778
1779  - for reading raw images, if raw_storechannels > raw_datachannels,
1780    set the extra channels in the image to 0
1781
1782  - when probing for executables like freetype-config, search for .bat
1783    and .cmd on MSWin32, as well as .exe.
1784    https://rt.cpan.org/Ticket/Display.html?id=49275
1785
1786  - re-work the external libraries section of README:
1787    - list Debian and Redhat package names for each library
1788    - reformatting
1789    - update URLs
1790
1791  - use the new EU::MM META_MERGE facility instead of generating
1792    META.yml from scratch
1793    https://rt.cpan.org/Ticket/Display.html?id=47888
1794
1795  - use Devel::CheckLib (bundled, modified) to check which release of
1796    libtiff is installed and reject 3.9.0
1797    http://bugzilla.maptools.org/show_bug.cgi?id=2088
1798    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=543079
1799
1800 Imager 0.67 - 12 Dec 2008
1801 ===========
1802
1803 Bug fixes:
1804
1805  - fix a packaging error
1806
1807 Imager 0.66 - 12 Dec 2008
1808 ===========
1809
1810  - 24-bit color .ICO/.CUR files can now be read.
1811
1812 Bug fixes:
1813
1814  - an optimization skipping 0 src alpha values could cause the
1815    rubthrough() to read past the end of a buffer.
1816    http://www.nntp.perl.org/group/perl.cpan.testers/2008/05/msg1509184.html
1817
1818  - corrected a reference leak where writing GIFs would leak memory.
1819    This could also happen calling to_paletted().
1820    Also documented the underlying long existing feature where the
1821    colors parameter is filled with the generated color table and added
1822    tests for it.
1823    http://rt.cpan.org/Ticket/Display.html?id=41028
1824
1825  - write out the image size in bytes field of a BMP correctly.
1826    http://rt.cpan.org/Ticket/Display.html?id=41406
1827
1828  - add limited tests for Imager::ExtUtils
1829
1830  - make Imager::ExtUtils->includes use an absolute path, since
1831    a relative path could cause failures using Inline::C.
1832    http://rt.cpan.org/Ticket/Display.html?id=37353
1833
1834  - re-arrange the POD for Imager::Font::BBox:
1835    - mark total_width(), pos_width(), end_offset() obsolete, since
1836      they're mostly for backwards compatibility
1837    - group width methods and height methods
1838    https://rt.cpan.org/Ticket/Display.html?id=39999
1839
1840 Imager 0.65 - 20 May 2008
1841 ===========
1842
1843 Bug fixes:
1844
1845  - In some cases when an error occurs reading those parts of a JPEG
1846    file after the image the scan-line buffer could be freed a second
1847    time.  In cases where the the error occured while reading the image
1848    data it's possible that the buffer could have leaked.
1849    Thanks to Gabriel Vasseur for reporting this and help in tracking
1850    it down.
1851
1852  - the gif_screen_height tag was overriding the screen width and being
1853    ignored for the screen height when present.
1854    https://rt.cpan.org/Public/Bug/Display.html?id=35568
1855
1856 Imager 0.64 - 23 April 2008
1857 ===========
1858
1859 This is a bug fix release.  This includes a fix for a possible
1860 security issue.
1861
1862 Bug fixes:
1863
1864  - Possible security issue: The floating point sample path for image
1865    based fills had a buffer overflow.  This would overwrite the end of
1866    a malloc()ed buffer with double precision floats.
1867    http://rt.cpan.org/Ticket/Display.html?id=35324
1868    CVE-2008-1928
1869
1870  - check that the result of fileno($fh) is defined rather than simply
1871    true when read() or write() is supplied with an fh parameter.
1872    http://rt.cpan.org/Ticket/Display.html?id=35139
1873
1874  - i_scale_axis() wasn't checking the result of i_img_new_ch()
1875    resulting in a SIGSEGV when attempting to scale an image to a size
1876    too large to fit in memory.  This is a NULL pointer access issue,
1877    not a buffer overflow.
1878    Added a check for the failure.
1879    scale_calculate() (and hence scale()) will now fail if any of the
1880    scale size parameters are a reference.
1881    http://rt.cpan.org/Ticket/Display.html?id=35172
1882
1883  - Regression: filling a greyscale image with a hatch used the wrong
1884    color channels from the supplied fg/bg colors.
1885    https://rt.cpan.org/Ticket/Display.html?id=35278
1886
1887  - fixed a related problem for image fills.
1888
1889 Imager 0.63 - 7 April 2008
1890 ===========
1891
1892 This release primarily contains changes to improve ease of use -
1893 rather than you having to convert images to the appropriate number of
1894 channels, Imager handles it internally.  How to handle drawing colors
1895 and the default combine mode is a thornier problem left for some other
1896 release.
1897
1898  - the font libraries are now only initialized when needed.
1899    http://rt.cpan.org/Ticket/Display.html?id=28825
1900
1901  - moved the imtoc.perl code into Imager::Preprocess
1902
1903  - paste() and rubthrough() now adapt the source image data to the
1904    destination, so you can now safely paste/rubthrough from greyscale
1905    images to color images or back, or from alpha channel images to
1906    noalpha channels or back.
1907    https://rt.cpan.org/Ticket/Display.html?id=30908
1908
1909  - rubthrough() now falls back to pasting when the source doesn't have
1910    an alpha channel.  This effectively treats the source as having a
1911    max alpha channel, the right thing to do.
1912    http://rt.cpan.org/Ticket/Display.html?id=29944
1913
1914  - re-worked most of the area filling code to use a common set of
1915    functions when filling.
1916    Corrected normal combine mode.
1917    Rewrote most of the combine modes to match the way the SVG draft
1918    defines them with respect to a translucent source and destination.
1919    Added tests for translucent source and destination.
1920    Added tests to check 8-bit/sample and double/sample combines work
1921    similarly.
1922    https://rt.cpan.org/Ticket/Display.html?id=29879
1923
1924  - writing a 2 or 4 channel image to a JPEG file will now write that
1925    image as if composited against a background, black by default,
1926    overridable with the i_background tag/parameter.
1927    https://rt.cpan.org/Ticket/Display.html?id=29876
1928
1929  - writing a 2 or 4 channel image to a PGM/PPM file will now write
1930    that image as if composited against a background, black by default,
1931    overridable with the i_background tag/parameter.
1932    http://rt.cpan.org/Ticket/Display.html?id=30074
1933
1934  - writing a 2 or 4 channel image to a BMP file will now write that
1935    image as if composited against a background, black by default,
1936    overridable with the i_background tag/parameter.
1937    http://rt.cpan.org/Ticket/Display.html?id=30075
1938
1939 Bug fixes:
1940
1941  - Imager::Matrix2d->translate() now only requires one of the x or y
1942    parameters.
1943    http://rt.cpan.org/Ticket/Display.html?id=29937
1944
1945  - mixing qtype scaling now sets all channels of a pixel to zero if
1946    the pixel has zero coverage (zero alpha).  This should produce more
1947    compressible output files.
1948    http://rt.cpan.org/Ticket/Display.html?id=32324
1949
1950  - removed the pointless #! line from lib/Imager/Font/Wrap.pm
1951    Noticed when I saw:
1952    https://bugzilla.redhat.com/show_bug.cgi?id=166254
1953    I'm not changing the #! lines of the sample code, since it's sample
1954    code, not intended for installation.
1955    http://rt.cpan.org/Ticket/Display.html?id=33408
1956
1957  - some TGA images weren't being detected correctly as TGA images
1958    https://rt.cpan.org/Ticket/Display.html?id=32925
1959
1960  - handling of the left-over bit for 16-bit/pixel TGA images has been
1961    changed to match the behaviour of the GIMP.  Previously the bit
1962    being set was treated as an opaque pixel, but one user reported a
1963    problem with loading such an image.  I haven't been able to find any
1964    tools beyond the GIMP that handle alpha-channel 16-bit TGAs, so
1965    I'll match it's behaviour.  See issue 114913 in the GIMP's
1966    bugzilla.
1967    http://rt.cpan.org/Ticket/Display.html?id=32926
1968
1969 Imager 0.62 - 10 December 2007
1970 ===========
1971
1972  - Makefile.PL now expands ~/path supplied to --incpath or --libpath
1973    to /path under your home directory.
1974    http://rt.cpan.org/Ticket/Display.html?id=29484
1975
1976  - the old dynaload code used Mach API functions to load dynamic
1977    libraries on Mac OS X.  These APIs have been deprecated in OS X
1978    10.5 and were causing some build problems.
1979    So henceforth Imager uses the dlopen() family of functions, and you 
1980    will need version 10.3 or later of OS X.
1981
1982  - added the det() function to the transform2() engine.
1983    added the sample quad_to_square.pl
1984    Courtesy Richard Fairhurst.
1985    http://rt.cpan.org/Ticket/Display.html?id=31244
1986
1987 Bug fixes:
1988
1989  - samples/gifscale.pl sourced the base value for gif_top from
1990    gif_left.
1991    Thanks to Eleneldil G. Arilou for pointing this out.
1992
1993  - t/t82inline.t no longer loads B at runtime, to work around a bug
1994    in some 5.005_0[45] installations.
1995    http://rt.cpan.org/Ticket/Display.html?id=30508
1996
1997  - work around Module::Depends::Intrusive bug #21229
1998    http://rt.cpan.org/Ticket/Display.html?id=30520
1999
2000  - the hardinvert filter no-longer inverts the alpha channel.
2001    http://rt.cpan.org/Ticket/Display.html?id=30002
2002
2003  - the hardinvert filter now supports large samples
2004
2005 Imager 0.61_02 - 28 November 2007
2006 ==============
2007
2008  - major TIFF support re-work
2009    http://rt.cpan.org/Ticket/Display.html?id=20329
2010
2011  - added a C level image interface for accessing samples from 1-32
2012    bits, exposed this at the perl level in getsamples()
2013
2014  - the conv filter now works at floating point precision for high bit
2015    images
2016
2017  - added is_bilevel method to test whether an image should be written as
2018    a bilevel image if the image format supports it.
2019
2020  - added -log-stderr as an Imager import list option
2021
2022  - added some important types to Imager::APIRef
2023
2024  - added test_image_double() to Imager::Test
2025
2026 Bug fixes:
2027
2028  - Imager::Fountain couldn't read GIMP gradient files with 10 or more
2029    segments
2030
2031  - the scale() method with qtype mixing now handles images with an
2032    alpha channel correctly.
2033
2034  - fixed a broken link from the "animated GIF" entry in the concept index.
2035    Thanks to Slaven Rezic.
2036    http://rt.cpan.org/Ticket/Display.html?id=30889
2037
2038  - on some perl's the infix expression parser test would fail due to
2039    actions in the grammar returning false.  Made sure all actions return
2040    a true value.
2041    Thanks to Richard Fairhurst for spending a lot of time in tracking
2042    down this problem.
2043    http://rt.cpan.org/Public/Bug/Display.html?id=29562
2044
2045 Imager 0.61 - 5 November 2007
2046 ===========
2047
2048  - added samples/gifscale.pl, which adjusts the screen size/position tags
2049    when scaling an animated gif
2050    http://rt.cpan.org/Ticket/Display.html?id=27591
2051
2052 Bug fixes:
2053
2054  - correct handling of sz in matrix_transform() - this should allow
2055    perspective type transformations to work now.
2056    http://rt.cpan.org/Ticket/Display.html?id=29936
2057
2058  - prevent a cast to integer warning on x64 builds in datatypes.c
2059    also fixed some other type warnings
2060    https://rt.cpan.org/Ticket/Display.html?id=30204
2061
2062  - some sub-directory tests depended on files produced by the parent
2063    directory tests
2064    http://rt.cpan.org/Ticket/Display.html?id=30203
2065
2066  - Imager::Font::Wrap doesn't correctly set savepos
2067    thanks to Nikita Dedik and Eleneldil G. Arilou for reporting this.
2068    http://rt.cpan.org/Ticket/Display.html?id=29771
2069
2070  - test 171 in t/t01introvert.t was failing on perls configured to
2071    use long double.
2072    http://rt.cpan.org/Ticket/Display.html?id=29413
2073
2074  - the code for the transform2() uminus operator was missing a break.
2075    Added tests for better code coverage of the ops.
2076    http://rt.cpan.org/Ticket/Display.html?id=29296
2077
2078  - the SGI RLE compression code could overflow its compression buffer
2079    http://rt.cpan.org/Ticket/Display.html?id=30334
2080
2081  - the 32-bit output function used by the SGI code only handled values
2082    under 0x10000.  This was most noticable when writing large RLE images.
2083    http://rt.cpan.org/Ticket/Display.html?id=30335
2084
2085  - validate chan_count for chans == NULL for each of the i_gsamp()
2086    implementations.
2087    http://rt.cpan.org/Ticket/Display.html?id=28985
2088
2089  - attempt to work around the test failure at 
2090    http://www.nntp.perl.org/group/perl.cpan.testers/2007/09/msg650810.html
2091    http://rt.cpan.org/Ticket/Display.html?id=29562
2092
2093  - improve the error messages produced when attempting to read or write
2094    an unknown image file format.
2095    http://rt.cpan.org/Ticket/Display.html?id=30103
2096
2097  - improve the transform2() documentation
2098    http://rt.cpan.org/Ticket/Display.html?id=29267
2099
2100  - correctly generate the author key in META.yml
2101    http://rt.cpan.org/Ticket/Display.html?id=30377
2102
2103  - correctly blend a rotated (or matrix_transformed()) image when
2104    performing interpolation in the presence of an alpha channel.
2105    Also corrected the centring of the rotated image on the output
2106    image.
2107
2108 Imager 0.60 - 30 August 2007
2109 ===========
2110
2111  - Finished/rewrote Arnar's old SGI RGB file format support, so Imager
2112    now has full SGI RGB image format, including RLE and 16-bit/sample
2113    images.
2114    https://rt.cpan.org/Ticket/Display.html?id=8666
2115
2116  - logging functions are now available in the API
2117
2118  - applied Gabriel Vasseur's patch
2119    added documentation, further tests, and support for greyscale images
2120    Obviously problems are my fault :)
2121    https://rt.cpan.org/Ticket/Display.html?id=28142
2122
2123  - the mask for ICO/CUR images is now applied as an alpha channel to
2124    the returned image.  For the old behaviour, supply ico_masked => 0
2125    to read() or read_multi().  This should be less confusing when
2126    using Imager as a general image processor.
2127    https://rt.cpan.org/Ticket/Display.html?id=29001
2128
2129 Bug fixes:
2130
2131  - in some cases it's possible for giflib/libungif to return color 
2132    indexes outside the range of colors defined by the image's palette.
2133    We now expand the palette to match the indexes used.
2134    Thanks to Gabriel Vasseur for reporting this.
2135
2136  - fixed various memory leaks that could occur when failing to read png,
2137    jpeg, bmp or tga files.
2138
2139  - to avoid confusion, channels not present in the image are returned as
2140    zero by getscanline().  This has no effect on the C level i_glin()
2141    and i_glinf() API functions which continue to not set the unused
2142    channels.
2143
2144  - the convert() method now returns an image of the same sample size as
2145    the source image.
2146    https://rt.cpan.org/Ticket/Display.html?id=28492
2147
2148  - remove repeated text in Imager::Files
2149    http://rt.cpan.org/Ticket/Display.html?id=27589
2150
2151  - be even more explicit that scale() and friends don't modify the source
2152    image, but return a new image.
2153    http://rt.cpan.org/Ticket/Display.html?id=28570
2154
2155  - improve the error message from errstr() when you try to load a font
2156    for which the driver hasn't been built in Imager.
2157    http://rt.cpan.org/Ticket/Display.html?id=27571
2158
2159  - transparency is now enabled by default when writing GIF images
2160    http://rt.cpan.org/Ticket/Display.html?id=27615
2161
2162  - Imager would not load on Windows 98
2163    http://rt.cpan.org/Ticket/Display.html?id=27653
2164
2165 Imager 0.59 - 14 June 2007
2166 ===========
2167
2168 Bug fixes:
2169
2170  - fixes a regression introduced by the fixes for RT 11972
2171    http://rt.cpan.org/Ticket/Display.html?id=27546
2172
2173  - cropping outside the image would return an Imager object with
2174    no low-level image object, instead of returning false.
2175    Fixed by: Philip Gwyn (Leolo)
2176    http://rt.cpan.org/Ticket/Display.html?id=27509
2177
2178 Imager 0.58 - 16 May 2007
2179 ===========
2180
2181 No significant changes from 0.57_01.
2182
2183 Imager 0.57_01 - 11 May 2007
2184 ==============
2185
2186  - added to_rgb16 to produce a 16-bit/sample version of an image
2187
2188  - improve freetype 1.x text output efficiency
2189
2190 Bug fixes:
2191
2192  - search another place for rgb.txt, and check all the places 
2193    Imager::Color checks when deciding whether to skip testing it
2194    http://rt.cpan.org/Ticket/Display.html?id=26064
2195
2196  - use a convolution kernel size based on the stddev rather than a
2197    fixed size when performing a gaussian blur
2198    http://rt.cpan.org/Ticket/Display.html?id=25645
2199
2200  - document the difference() method's mindist parameter, and debug it.
2201
2202  - put the Imager release number in the Inline::C generated code to
2203    regenerate Inline code when a new release of Imager is installed.
2204    http://rt.cpan.org/Ticket/Display.html?id=26278
2205
2206  - fix rendering on alpha channel images for the FreeType 1.x driver.
2207    http://rt.cpan.org/Ticket/Display.html?id=11972
2208
2209  - fix rendering on alpha channel images for the T1lib driver.
2210    http://rt.cpan.org/Ticket/Display.html?id=11972
2211
2212  - reworked library probing, we can now set more than one probe
2213    function for a library.  Disabled the default (non-freetype-config)
2214    library probe and added an extra probe function that searches for
2215    both ft2build.h and whatever it includes, and adds -I as needed.
2216    Hopefully this will fix build problems like
2217    http://www.nntp.perl.org/group/perl.cpan.testers/2007/05/msg472281.html
2218    http://rt.cpan.org/Ticket/Display.html?id=26086
2219
2220 Imager 0.57 - 30 Apr 2007
2221 ===========
2222
2223 This is a maintenence release fixing a security issue in Imager.
2224
2225  - CRITICAL: a specially crafted compressed BMP file can cause a buffer
2226    overflow in malloced memory.  There will be further discussion of
2227    this issue in the ticket below.
2228    http://rt.cpan.org/Ticket/Display.html?id=26811
2229    CVE-2007-2459  CVE-2007-2413
2230    The descriptions at cve.mitre.org varied in quality, please see the
2231    ticket at rt.cpan.org for a more accurate description of the issue.
2232
2233 Imager 0.56 - 1 Apr 2007
2234 ===========
2235
2236  - added support for reading 16-bit/sample PGM/PPM images
2237
2238  - added support for writing 16-bit/sample PGM/PPM images
2239
2240  - improved performance of reading PBM/PGM/PPM images
2241
2242  - added support for writing PBM images if the image is paletted and
2243    contains only black and white
2244
2245  - added a new make_colors value - "mono"
2246
2247  - switched from the svn log Changes to a manual Changes to reduce
2248    noise
2249
2250  - new sample code - samples/flasher.pl
2251
2252 Bug fixes:
2253
2254  - CRITICAL: the "Imager" typemap entry (not used by Imager itself)
2255    was returning an image object with an extra reference, this
2256    resulted in a memory leak.
2257    http://rt.cpan.org/Ticket/Display.html?id=24992
2258
2259  - fix rendering on alpha channel images for the FreeType 2.x driver
2260    http://rt.cpan.org/Ticket/Display.html?id=11972
2261
2262  - reading bmp files now consitently handles short reads.  You can now
2263    supply a parameter to treat a short read as successful and set
2264    i_incomplete
2265    http://rt.cpan.org/Ticket/Display.html?id=8426
2266
2267  - previously, reading ASCII PBM files required spaces between samples,
2268    even though the format doesn't require that
2269
2270  - improved documentation of the unsharpmask filter (I hope)
2271    http://rt.cpan.org/Ticket/Display.html?id=25531
2272
2273  - force flushing of the output from i_tt_dump_names() and test output
2274    in t/t35ttfont.t to prevent output from being mixed up.
2275    https://rt.cpan.org/Ticket/Display.html?id=24859
2276
2277  - rewrite a conditional expression as an if() to hopefully work around
2278    a bug in the pre-4.0 GCC Apple shipped with OS X 10.4.
2279    https://rt.cpan.org/Ticket/Display.html?id=25561
2280
2281  - avoid Data::Dumper in regops.perl to support older releases of perl
2282    https://rt.cpan.org/Ticket/Display.html?id=24391
2283
2284 Imager 0.55 - 16 Dec 2006
2285 ===========
2286
2287 This is primarily a bug fix release.
2288
2289 Note: Test::More is now a pre-requisite for Imager and is no longer bundled.
2290
2291 There is one new feature:
2292
2293  - the Win32 font driver now supports UTF8 (RT 22166)
2294    http://www.cpanforum.com/threads/3276
2295    http://rt.cpan.org/Ticket/Display.html?id=22166
2296
2297 Several bugs were fixed:
2298
2299  - the string() method would not output the string "0"
2300    http://rt.cpan.org/Public/Bug/Display.html?id=21770
2301
2302  - fills.c was failing to compile on Solaris 10 (compiler unknown)
2303    http://rt.cpan.org/Public/Bug/Display.html?id=21944
2304
2305  - the gif_disposal and gif_user_input tags weren't being read from
2306    the file correctly
2307    http://rt.cpan.org/Public/Bug/Display.html?id=22192
2308
2309  - gif.c was failing to build under MSVC
2310    http://rt.cpan.org/Ticket/Display.html?id=23922
2311
2312  - in some cases strings passed to the string() method were treated as
2313    terminated by NUL (chr 0)
2314    http://rt.cpan.org/Public/Bug/Display.html?id=21770
2315
2316  - on "MSWin32" perl builds we now link to -lzlib instead of -lz since
2317    that's the default build name for zlib on Win32.
2318    http://rt.cpan.org/Ticket/Display.html?id=23064
2319
2320  - search $Config{incpath} for headers too, which we should have been
2321    doing all along.
2322
2323 Win32 font driver fixes:
2324
2325  - the global descent value from bounding box was the wrong sign
2326    http://www.cpanforum.com/threads/3276
2327
2328  - if the first or last glyph overflowed the left or right side of the
2329    advance width they would be clipped
2330
2331
2332 Imager 0.54 - 14 Sep 2006
2333 ===========
2334
2335 This is primarily a feature release:
2336
2337  - a new qtype value 'mixing' has been added to the scale()
2338    method. This is faster than 'normal', slower than 'preview'. This
2339    is based on the method used by pnmscale, and seems to produce less
2340    blurry results than normal.
2341    http://rt.cpan.org/Public/Bug/Display.html?id=20677
2342
2343  - the rubthrough() method can now render onto images with an alpha
2344    channel.
2345    http://rt.cpan.org/Ticket/Display.html?id=20678
2346
2347  - the read_multi() method now falls back to calling doing a single
2348    image read via the read() method and write_multi() will now fall
2349    back to calling write() if a single image is supplied. This means
2350    you can simply call the read_multi() or write_multi() functions
2351    without having to check if the type is formatted by that method.
2352    http://rt.cpan.org/Ticket/Display.html?id=19457
2353    http://rt.cpan.org/Ticket/Display.html?id=19458
2354
2355  - the GIF loop extension can now be written. If you don't have
2356    libungif/giflib 4.1.4 (or some distribution's bugfixed equivalent) you
2357    should upgrade.
2358    http://rt.cpan.org/Ticket/Display.html?id=21185
2359
2360  - getscanline() and setscanline() can now read/write palette index
2361    based data from/to the image for paletted images, by setting type to
2362    'index'.
2363    http://rt.cpan.org/Ticket/Display.html?id=20338
2364
2365  - we no longer hassle you to disable GIF support
2366    http://rt.cpan.org/Ticket/Display.html?id=20687
2367
2368  - minor documentation fixes
2369
2370
2371 Imager 0.53 - 26 Jul 2006
2372 ===========
2373
2374 This is a bugfix release.
2375
2376 Some test code was left in a code path not covered by the test
2377 suite. A test was added to cover this code path and the test code was
2378 removed.
2379 http://rt.cpan.org/Public/Bug/Display.html?id=20705
2380
2381
2382 Imager 0.52 - 25 Jul 2006
2383 ===========
2384
2385 This is primarily a feature release, but contains a fair few bug
2386 fixes, new features:
2387
2388  - ability to read and write MS Windows ICO and CUR files
2389
2390  - you can now add file format plugins to support new file formats
2391
2392  - add POD coverage tests
2393
2394  - setcolors() and addcolors() now accept color names and so on
2395    instead of requiring Imager::Color objects.
2396    http://rt.cpan.org/Ticket/Display.html?id=20056
2397
2398  - flood_fill() can now fill to a specified border color instead of
2399    just to the area the same color as the seed.
2400    http://rt.cpan.org/Ticket/Display.html?id=19618
2401
2402
2403 Bug fixes:
2404
2405  - bounding_box for the T1 driver wasn't converting UTF8 to ascii when
2406    calculating the advance width.
2407    http://rt.cpan.org/Public/Bug/Display.html?id=20554
2408
2409  - bounding_box for the T1 driver wasn't including leading and
2410    trailing spaces in the bounding box as the other drivers did, it also
2411    produced strange results for empty strings or strings containing only
2412    spaces
2413
2414  - when reading CMYK jpeg images they were being transferred to the
2415    image object as is, producing a four channel image. It only looked ok
2416    due to an old still unfixed Photoshop bug. We now convert from the
2417    inverted CMYK that photoshop (and Corel for example) produce into RGB.
2418    http://rt.cpan.org/Ticket/Display.html?id=20416
2419
2420  - reading a CYMK TIFF would result in a 4 channel image, reading any
2421    image with more than 4 channels (eg. RGB with 2 alpha channels) would
2422    result in an error.
2423    http://rt.cpan.org/Ticket/Display.html?id=20415
2424
2425  - added /usr/local/include to the default include search path, since
2426    we were already searching /usr/local/lib for libraries.
2427
2428 And various minor fixes and documentation updates.
2429
2430
2431 Imager 0.51 - 23 Apr 2006
2432 ===========
2433
2434  - fix a validation bug when processing JPEG EXIF data that can cause
2435    a crash
2436    http://rt.cpan.org/Public/Bug/Display.html?id=18496
2437
2438  - fix mis-processing of the src_maxx and src_maxy parameters of the
2439    paste() method
2440    http://rt.cpan.org/Public/Bug/Display.html?id=18712
2441
2442  - fix a problem in Imager's "smart" handling of the color parameter
2443    to various methods.
2444    http://rt.cpan.org/Public/Bug/Display.html?id=18561
2445
2446
2447 Imager 0.50 - 29 Mar 2006
2448 ===========
2449
2450  - CRITICAL: fixes a segmentation fault from attempting to write a 2
2451    or 4 channel image to jpeg or a 2 channel image to tga where the
2452    output is an in-memeory buffer.
2453    http://rt.cpan.org/Public/Bug/Display.html?id=18397
2454
2455  - fixes an incorrect pointer parameter in the PNG code
2456    http://rt.cpan.org/Public/Bug/Display.html?id=18051
2457
2458  - skip Inline::C tests when building in a directory with spaces
2459    http://rt.cpan.org/Public/Bug/Display.html?id=18049