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