26cc877fbd4552b0c51335ac8db4c849d46109b3
[imager.git] / Changes
1 Imager release history.  Older releases can be found in Changes.old
2
3 Imager 0.63 - unreleased
4 ===========
5
6  - the font libraries are now only initialized when needed.
7    http://rt.cpan.org/Ticket/Display.html?id=28825
8
9  - moved the imtoc.perl code into Imager::Preprocess
10
11  - paste() and rubthrough() now adapt the source image data to the
12    destination, so you can now safely paste/rubthrough from greyscale
13    images to color images or back, or from alpha channel images to
14    noalpha channels or back.
15    https://rt.cpan.org/Ticket/Display.html?id=30908
16
17  - rubthrough() now falls back to pasting when the source doesn't have
18    an alpha channel.  This effectively treats the source as having a
19    max alpha channel, the right thing to do.
20    http://rt.cpan.org/Ticket/Display.html?id=29944
21
22  - re-worked most of the area filling code to use a common set of
23    functions when filling.
24    Corrected normal combine mode.
25    Rewrote most of the combine modes to match the way the SVG draft
26    defines them with respect to a translucent source and destination.
27    Added tests for translucent source and destination.
28    Added tests to check 8-bit/sample and double/sample combines work
29    similarly.
30    https://rt.cpan.org/Ticket/Display.html?id=29879
31
32  - some TGA images weren't being detected correctly as TGA images
33    https://rt.cpan.org/Ticket/Display.html?id=32925
34
35  - handling of the left-over bit for 16-bit/pixel TGA images has been
36    changed to match the behaviour of the GIMP.  Previously the bit
37    being set was treated as an opaque pixel, but one user reported a
38    problem with loading such an image.  I haven't been able to find any
39    tools beyond the GIMP that handle alpha-channel 16-bit TGAs, so
40    I'll match it's behaviour.  See issue 114913 in the GIMP's
41    bugzilla.
42    http://rt.cpan.org/Ticket/Display.html?id=32926
43
44 Bug fixes:
45
46  - Imager::Matrix2d->translate() now only requires one of the x or y
47    parameters.
48    http://rt.cpan.org/Ticket/Display.html?id=29937
49
50 Imager 0.62 - 10 December 2007
51 ===========
52
53  - Makefile.PL now expands ~/path supplied to --incpath or --libpath
54    to /path under your home directory.
55    http://rt.cpan.org/Ticket/Display.html?id=29484
56
57  - the old dynaload code used Mach API functions to load dynamic
58    libraries on Mac OS X.  These APIs have been deprecated in OS X
59    10.5 and were causing some build problems.
60    So henceforth Imager uses the dlopen() family of functions, and you 
61    will need version 10.3 or later of OS X.
62
63  - added the det() function to the transform2() engine.
64    added the sample quad_to_square.pl
65    Courtesy Richard Fairhurst.
66    http://rt.cpan.org/Ticket/Display.html?id=31244
67
68 Bug fixes:
69
70  - samples/gifscale.pl sourced the base value for gif_top from
71    gif_left.
72    Thanks to Eleneldil G. Arilou for pointing this out.
73
74  - t/t82inline.t no longer loads B at runtime, to work around a bug
75    in some 5.005_0[45] installations.
76    http://rt.cpan.org/Ticket/Display.html?id=30508
77
78  - work around Module::Depends::Intrusive bug #21229
79    http://rt.cpan.org/Ticket/Display.html?id=30520
80
81  - the hardinvert filter no-longer inverts the alpha channel.
82    http://rt.cpan.org/Ticket/Display.html?id=30002
83
84  - the hardinvert filter now supports large samples
85
86 Imager 0.61_02 - 28 November 2007
87 ==============
88
89  - major TIFF support re-work
90    http://rt.cpan.org/Ticket/Display.html?id=20329
91
92  - added a C level image interface for accessing samples from 1-32
93    bits, exposed this at the perl level in getsamples()
94
95  - the conv filter now works at floating point precision for high bit
96    images
97
98  - added is_bilevel method to test whether an image should be written as
99    a bilevel image if the image format supports it.
100
101  - added -log-stderr as an Imager import list option
102
103  - added some important types to Imager::APIRef
104
105  - added test_image_double() to Imager::Test
106
107 Bug fixes:
108
109  - Imager::Fountain couldn't read GIMP gradient files with 10 or more
110    segments
111
112  - the scale() method with qtype mixing now handles images with an
113    alpha channel correctly.
114
115  - fixed a broken link from the "animated GIF" entry in the concept index.
116    Thanks to Slaven Rezic.
117    http://rt.cpan.org/Ticket/Display.html?id=30889
118
119  - on some perl's the infix expression parser test would fail due to
120    actions in the grammar returning false.  Made sure all actions return
121    a true value.
122    Thanks to Richard Fairhurst for spending a lot of time in tracking
123    down this problem.
124    http://rt.cpan.org/Public/Bug/Display.html?id=29562
125
126 Imager 0.61 - 5 November 2007
127 ===========
128
129  - added samples/gifscale.pl, which adjusts the screen size/position tags
130    when scaling an animated gif
131    http://rt.cpan.org/Ticket/Display.html?id=27591
132
133 Bug fixes:
134
135  - correct handling of sz in matrix_transform() - this should allow
136    perspective type transformations to work now.
137    http://rt.cpan.org/Ticket/Display.html?id=29936
138
139  - prevent a cast to integer warning on x64 builds in datatypes.c
140    also fixed some other type warnings
141    https://rt.cpan.org/Ticket/Display.html?id=30204
142
143  - some sub-directory tests depended on files produced by the parent
144    directory tests
145    http://rt.cpan.org/Ticket/Display.html?id=30203
146
147  - Imager::Font::Wrap doesn't correctly set savepos
148    thanks to Nikita Dedik and Eleneldil G. Arilou for reporting this.
149    http://rt.cpan.org/Ticket/Display.html?id=29771
150
151  - test 171 in t/t01introvert.t was failing on perls configured to
152    use long double.
153    http://rt.cpan.org/Ticket/Display.html?id=29413
154
155  - the code for the transform2() uminus operator was missing a break.
156    Added tests for better code coverage of the ops.
157    http://rt.cpan.org/Ticket/Display.html?id=29296
158
159  - the SGI RLE compression code could overflow its compression buffer
160    http://rt.cpan.org/Ticket/Display.html?id=30334
161
162  - the 32-bit output function used by the SGI code only handled values
163    under 0x10000.  This was most noticable when writing large RLE images.
164    http://rt.cpan.org/Ticket/Display.html?id=30335
165
166  - validate chan_count for chans == NULL for each of the i_gsamp()
167    implementations.
168    http://rt.cpan.org/Ticket/Display.html?id=28985
169
170  - attempt to work around the test failure at 
171    http://www.nntp.perl.org/group/perl.cpan.testers/2007/09/msg650810.html
172    http://rt.cpan.org/Ticket/Display.html?id=29562
173
174  - improve the error messages produced when attempting to read or write
175    an unknown image file format.
176    http://rt.cpan.org/Ticket/Display.html?id=30103
177
178  - improve the transform2() documentation
179    http://rt.cpan.org/Ticket/Display.html?id=29267
180
181  - correctly generate the author key in META.yml
182    http://rt.cpan.org/Ticket/Display.html?id=30377
183
184  - correctly blend a rotated (or matrix_transformed()) image when
185    performing interpolation in the presence of an alpha channel.
186    Also corrected the centring of the rotated image on the output
187    image.
188
189 Imager 0.60 - 30 August 2007
190 ===========
191
192  - Finished/rewrote Arnar's old SGI RGB file format support, so Imager
193    now has full SGI RGB image format, including RLE and 16-bit/sample
194    images.
195    https://rt.cpan.org/Ticket/Display.html?id=8666
196
197  - logging functions are now available in the API
198
199  - applied Gabriel Vasseur's patch
200    added documentation, further tests, and support for greyscale images
201    Obviously problems are my fault :)
202    https://rt.cpan.org/Ticket/Display.html?id=28142
203
204  - the mask for ICO/CUR images is now applied as an alpha channel to
205    the returned image.  For the old behaviour, supply ico_masked => 0
206    to read() or read_multi().  This should be less confusing when
207    using Imager as a general image processor.
208    https://rt.cpan.org/Ticket/Display.html?id=29001
209
210 Bug fixes:
211
212  - in some cases it's possible for giflib/libungif to return color 
213    indexes outside the range of colors defined by the image's palette.
214    We now expand the palette to match the indexes used.
215    Thanks to Gabriel Vasseur for reporting this.
216
217  - fixed various memory leaks that could occur when failing to read png,
218    jpeg, bmp or tga files.
219
220  - to avoid confusion, channels not present in the image are returned as
221    zero by getscanline().  This has no effect on the C level i_glin()
222    and i_glinf() API functions which continue to not set the unused
223    channels.
224
225  - the convert() method now returns an image of the same sample size as
226    the source image.
227    https://rt.cpan.org/Ticket/Display.html?id=28492
228
229  - remove repeated text in Imager::Files
230    http://rt.cpan.org/Ticket/Display.html?id=27589
231
232  - be even more explicit that scale() and friends don't modify the source
233    image, but return a new image.
234    http://rt.cpan.org/Ticket/Display.html?id=28570
235
236  - improve the error message from errstr() when you try to load a font
237    for which the driver hasn't been built in Imager.
238    http://rt.cpan.org/Ticket/Display.html?id=27571
239
240  - transparency is now enabled by default when writing GIF images
241    http://rt.cpan.org/Ticket/Display.html?id=27615
242
243  - Imager would not load on Windows 98
244    http://rt.cpan.org/Ticket/Display.html?id=27653
245
246 Imager 0.59 - 14 June 2007
247 ===========
248
249 Bug fixes:
250
251  - fixes a regression introduced by the fixes for RT 11972
252    http://rt.cpan.org/Ticket/Display.html?id=27546
253
254  - cropping outside the image would return an Imager object with
255    no low-level image object, instead of returning false.
256    Fixed by: Philip Gwyn (Leolo)
257    http://rt.cpan.org/Ticket/Display.html?id=27509
258
259 Imager 0.58 - 16 May 2007
260 ===========
261
262 No significant changes from 0.57_01.
263
264 Imager 0.57_01 - 11 May 2007
265 ==============
266
267  - added to_rgb16 to produce a 16-bit/sample version of an image
268
269  - improve freetype 1.x text output efficiency
270
271 Bug fixes:
272
273  - search another place for rgb.txt, and check all the places 
274    Imager::Color checks when deciding whether to skip testing it
275    http://rt.cpan.org/Ticket/Display.html?id=26064
276
277  - use a convolution kernel size based on the stddev rather than a
278    fixed size when performing a gaussian blur
279    http://rt.cpan.org/Ticket/Display.html?id=25645
280
281  - document the difference() method's mindist parameter, and debug it.
282
283  - put the Imager release number in the Inline::C generated code to
284    regenerate Inline code when a new release of Imager is installed.
285    http://rt.cpan.org/Ticket/Display.html?id=26278
286
287  - fix rendering on alpha channel images for the FreeType 1.x driver.
288    http://rt.cpan.org/Ticket/Display.html?id=11972
289
290  - fix rendering on alpha channel images for the T1lib driver.
291    http://rt.cpan.org/Ticket/Display.html?id=11972
292
293  - reworked library probing, we can now set more than one probe
294    function for a library.  Disabled the default (non-freetype-config)
295    library probe and added an extra probe function that searches for
296    both ft2build.h and whatever it includes, and adds -I as needed.
297    Hopefully this will fix build problems like
298    http://www.nntp.perl.org/group/perl.cpan.testers/2007/05/msg472281.html
299    http://rt.cpan.org/Ticket/Display.html?id=26086
300
301 Imager 0.57 - 30 Apr 2007
302 ===========
303
304 This is a maintenence release fixing a security issue in Imager.
305
306  - CRITICAL: a specially crafted compressed BMP file can cause a buffer
307    overflow in malloced memory.  There will be further discussion of
308    this issue in the ticket below.
309    http://rt.cpan.org/Ticket/Display.html?id=26811
310    CVE-2007-2459  CVE-2007-2413
311    The descriptions at cve.mitre.org varied in quality, please see the
312    ticket at rt.cpan.org for a more accurate description of the issue.
313
314 Imager 0.56 - 1 Apr 2007
315 ===========
316
317  - added support for reading 16-bit/sample PGM/PPM images
318
319  - added support for writing 16-bit/sample PGM/PPM images
320
321  - improved performance of reading PBM/PGM/PPM images
322
323  - added support for writing PBM images if the image is paletted and
324    contains only black and white
325
326  - added a new make_colors value - "mono"
327
328  - switched from the svn log Changes to a manual Changes to reduce
329    noise
330
331  - new sample code - samples/flasher.pl
332
333 Bug fixes:
334
335  - CRITICAL: the "Imager" typemap entry (not used by Imager itself)
336    was returning an image object with an extra reference, this
337    resulted in a memory leak.
338    http://rt.cpan.org/Ticket/Display.html?id=24992
339
340  - fix rendering on alpha channel images for the FreeType 2.x driver
341    http://rt.cpan.org/Ticket/Display.html?id=11972
342
343  - reading bmp files now consitently handles short reads.  You can now
344    supply a parameter to treat a short read as successful and set
345    i_incomplete
346    http://rt.cpan.org/Ticket/Display.html?id=8426
347
348  - previously, reading ASCII PBM files required spaces between samples,
349    even though the format doesn't require that
350
351  - improved documentation of the unsharpmask filter (I hope)
352    http://rt.cpan.org/Ticket/Display.html?id=25531
353
354  - force flushing of the output from i_tt_dump_names() and test output
355    in t/t35ttfont.t to prevent output from being mixed up.
356    https://rt.cpan.org/Ticket/Display.html?id=24859
357
358  - rewrite a conditional expression as an if() to hopefully work around
359    a bug in the pre-4.0 GCC Apple shipped with OS X 10.4.
360    https://rt.cpan.org/Ticket/Display.html?id=25561
361
362  - avoid Data::Dumper in regops.perl to support older releases of perl
363    https://rt.cpan.org/Ticket/Display.html?id=24391
364
365 Imager 0.55 - 16 Dec 2006
366 ===========
367
368 This is primarily a bug fix release.
369
370 Note: Test::More is now a pre-requisite for Imager and is no longer bundled.
371
372 There is one new feature:
373
374  - the Win32 font driver now supports UTF8 (RT 22166)
375    http://www.cpanforum.com/threads/3276
376    http://rt.cpan.org/Ticket/Display.html?id=22166
377
378 Several bugs were fixed:
379
380  - the string() method would not output the string "0"
381    http://rt.cpan.org/Public/Bug/Display.html?id=21770
382
383  - fills.c was failing to compile on Solaris 10 (compiler unknown)
384    http://rt.cpan.org/Public/Bug/Display.html?id=21944
385
386  - the gif_disposal and gif_user_input tags weren't being read from
387    the file correctly
388    http://rt.cpan.org/Public/Bug/Display.html?id=22192
389
390  - gif.c was failing to build under MSVC
391    http://rt.cpan.org/Ticket/Display.html?id=23922
392
393  - in some cases strings passed to the string() method were treated as
394    terminated by NUL (chr 0)
395    http://rt.cpan.org/Public/Bug/Display.html?id=21770
396
397  - on "MSWin32" perl builds we now link to -lzlib instead of -lz since
398    that's the default build name for zlib on Win32.
399    http://rt.cpan.org/Ticket/Display.html?id=23064
400
401  - search $Config{incpath} for headers too, which we should have been
402    doing all along.
403
404 Win32 font driver fixes:
405
406  - the global descent value from bounding box was the wrong sign
407    http://www.cpanforum.com/threads/3276
408
409  - if the first or last glyph overflowed the left or right side of the
410    advance width they would be clipped
411
412
413 Imager 0.54 - 14 Sep 2006
414 ===========
415
416 This is primarily a feature release:
417
418  - a new qtype value 'mixing' has been added to the scale()
419    method. This is faster than 'normal', slower than 'preview'. This
420    is based on the method used by pnmscale, and seems to produce less
421    blurry results than normal.
422    http://rt.cpan.org/Public/Bug/Display.html?id=20677
423
424  - the rubthrough() method can now render onto images with an alpha
425    channel.
426    http://rt.cpan.org/Ticket/Display.html?id=20678
427
428  - the read_multi() method now falls back to calling doing a single
429    image read via the read() method and write_multi() will now fall
430    back to calling write() if a single image is supplied. This means
431    you can simply call the read_multi() or write_multi() functions
432    without having to check if the type is formatted by that method.
433    http://rt.cpan.org/Ticket/Display.html?id=19457
434    http://rt.cpan.org/Ticket/Display.html?id=19458
435
436  - the GIF loop extension can now be written. If you don't have
437    libungif/giflib 4.1.4 (or some distribution's bugfixed equivalent) you
438    should upgrade.
439    http://rt.cpan.org/Ticket/Display.html?id=21185
440
441  - getscanline() and setscanline() can now read/write palette index
442    based data from/to the image for paletted images, by setting type to
443    'index'.
444    http://rt.cpan.org/Ticket/Display.html?id=20338
445
446  - we no longer hassle you to disable GIF support
447    http://rt.cpan.org/Ticket/Display.html?id=20687
448
449  - minor documentation fixes
450
451
452 Imager 0.53 - 26 Jul 2006
453 ===========
454
455 This is a bugfix release.
456
457 Some test code was left in a code path not covered by the test
458 suite. A test was added to cover this code path and the test code was
459 removed.
460 http://rt.cpan.org/Public/Bug/Display.html?id=20705
461
462
463 Imager 0.52 - 25 Jul 2006
464 ===========
465
466 This is primarily a feature release, but contains a fair few bug
467 fixes, new features:
468
469  - ability to read and write MS Windows ICO and CUR files
470
471  - you can now add file format plugins to support new file formats
472
473  - add POD coverage tests
474
475  - setcolors() and addcolors() now accept color names and so on
476    instead of requiring Imager::Color objects.
477    http://rt.cpan.org/Ticket/Display.html?id=20056
478
479  - flood_fill() can now fill to a specified border color instead of
480    just to the area the same color as the seed.
481    http://rt.cpan.org/Ticket/Display.html?id=19618
482
483
484 Bug fixes:
485
486  - bounding_box for the T1 driver wasn't converting UTF8 to ascii when
487    calculating the advance width.
488    http://rt.cpan.org/Public/Bug/Display.html?id=20554
489
490  - bounding_box for the T1 driver wasn't including leading and
491    trailing spaces in the bounding box as the other drivers did, it also
492    produced strange results for empty strings or strings containing only
493    spaces
494
495  - when reading CMYK jpeg images they were being transferred to the
496    image object as is, producing a four channel image. It only looked ok
497    due to an old still unfixed Photoshop bug. We now convert from the
498    inverted CMYK that photoshop (and Corel for example) produce into RGB.
499    http://rt.cpan.org/Ticket/Display.html?id=20416
500
501  - reading a CYMK TIFF would result in a 4 channel image, reading any
502    image with more than 4 channels (eg. RGB with 2 alpha channels) would
503    result in an error.
504    http://rt.cpan.org/Ticket/Display.html?id=20415
505
506  - added /usr/local/include to the default include search path, since
507    we were already searching /usr/local/lib for libraries.
508
509 And various minor fixes and documentation updates.
510
511
512 Imager 0.51 - 23 Apr 2006
513 ===========
514
515  - fix a validation bug when processing JPEG EXIF data that can cause
516    a crash
517    http://rt.cpan.org/Public/Bug/Display.html?id=18496
518
519  - fix mis-processing of the src_maxx and src_maxy parameters of the
520    paste() method
521    http://rt.cpan.org/Public/Bug/Display.html?id=18712
522
523  - fix a problem in Imager's "smart" handling of the color parameter
524    to various methods.
525    http://rt.cpan.org/Public/Bug/Display.html?id=18561
526
527
528 Imager 0.50 - 29 Mar 2006
529 ===========
530
531  - CRITICAL: fixes a segmentation fault from attempting to write a 2
532    or 4 channel image to jpeg or a 2 channel image to tga where the
533    output is an in-memeory buffer.
534    http://rt.cpan.org/Public/Bug/Display.html?id=18397
535
536  - fixes an incorrect pointer parameter in the PNG code
537    http://rt.cpan.org/Public/Bug/Display.html?id=18051
538
539  - skip Inline::C tests when building in a directory with spaces
540    http://rt.cpan.org/Public/Bug/Display.html?id=18049