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