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