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