-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathChanges
2887 lines (2015 loc) · 97.2 KB
/
Changes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Imager release history. Older releases can be found in Changes.old
Imager 1.025 - 16 Nov 2024
============
- trim: fix a buffer overflow due to a mis-sized buffer
https://github.com/tonycoz/imager/issues/534
- JPEG: fix an invalid sscanf() return value check detected by CodeQL
- FT2: separately #include t1tables.h, since ftmm.h no longer
includes it from freetype 2.13.3
https://github.com/tonycoz/imager/pull/533
https://bugs.debian.org/1081821
Imager 1.024 - 6 Apr 2024
============
- TIFF: improve reporting from a test on failure.
- TIFF: support back to libtiff 4.0.8, for compatibility with RHEL
and its clones.
https://github.com/tonycoz/imager/issues/527
Imager 1.023 - 13 Jan 2024
============
- TIFF: don't read after free when looking up a compression codec
by the libtiff defined name,
https://github.com/tonycoz/imager/issues/524
Imager 1.022 - 3 Dec 2023
============
- TIFF: We can no longer be lazy in implementing the size callback.
https://github.com/tonycoz/imager/issues/522
https://bugs.debian.org/1057270
Imager 1.021 - 1 Dec 2023
============
Several TIFF changes:
- require libtiff 4.1.0 or later
- add buildversion, builddate and libversion methods
- add the codecs method which fetches a list of available TIFF
compression codes
- avoid deprecation warnings from libtiff about using the old
libtiff defined integer types
- require vsnprintf() (C99)
- remove my adaption of TIFFReadRGBATile() since libtiff now provides
TIFFReadRGBATileExt() which can do the same thing
- use pkg-config to find libtiff if possible
- for sufficiently modern libtiff (4.5.0) use TIFFClientOptions to
specify the warning and error handlers, this means we no longer
need a mutex for 4.5.0 and later.
- collect warnings using a buffer chain instead of custom allocation
code.
- include the "module" name (typically a libtiff function name) when
recording libtiff warnings.
- add CI to test Imager::File::TIFF against libtiff 4.1.0 through 4.6.0
- other minor fixes
Other changes:
- prevent CodeQL from complaining about an implicit conversion to
unsigned char
Imager 1.020 - 12 Nov 2023
============
- masked(): disallow negative width/height masked images
- masked(): adjust source corners as bottom right relative if they
are negative.
- masked(): reject image source corners where either co-ordinate is
negative after the above adjustment.
- Imager::Files: update external image file support modules list
- internal test: don't fail on Imager::File::APNG link
- disable Imager::Font::T1 and Freetype 1.x fonts by default.
Unpatched t1lib simply doesn't work on 64 bit systems, and no-one
ships the patched version anymore.
https://github.com/tonycoz/imager/issues/510
Imager 1.019 - 9 Jul 2022
============
- fix palette/transparency table generation when writing paletted PNG
images with tranparency. This happened to work for the test case,
but the mechanism used to generate the palette order preserved most
palette index positions, which hid the problem with actually
generating the PLTE and tRNS chunks.
https://github.com/tonycoz/imager/issues/499
- added lowish-level read() and write() class methods to
Imager::File::PNG, these are mostly intended for
Imager::File::APNG, but are documented and usable elsewhere.
- document in Imager::Install how to install Imager without any of
the bundled-but-also-on-CPAN modules being installed.
https://github.com/tonycoz/imager/issues/498
Imager 1.018 - 19 Jun 2022
============
- skip trying to produce deprecation warnings before perl 5.14, since
that doesn't support custom warning categories within a package.
This prevents pointless failures on these old versions of perl.
Imager 1.017 - 14 Jun 2022
============
Bug fix:
- fix a one bytes underallocation for Imager::TrimColorList. On
older perls this could lead to writing a zero byte one past the end
of the allocated block.
Documentation:
- expand on why you might want to call Imager->preload() and that you
probably don't need to.
Imager 1.016 - 12 Jun 2022
============
Upcoming backward incompatible changes:
- deprecate setting/deleting tags by code. If this causes you a
problem please open an issue. You can disable the warning produced
with:
no warnings 'Imager::tagcodes';
- deprecate image channel masks. If this causes you a problem please
open an issue. You can disable the warning produced with:
no warnings 'Imager::channelmask';
If you use either of these features please let me know.
Minor features:
- add magic/extension support for AVIF files, see Imager::File::AVIF
on CPAN.
- treat an unknown extension of two or more characters as a potential
file type on write.
Bug fixes:
- prevent a possible undefined value warning from t/t10jpeg.t
- update MANIFEST.SKIPs, update MANIFESTs and improve MANIFEST testing.
- TGA: failing to read in the palette of a paletted TGA file would
leak memory.
- JPEG: supplying invalid values for the new JPEG write tags could
leak memory.
- PNG: fix validation of Latin1 only tags when writing PNGs.
(detected by clang)
- matrix_transform: correctly use fabs() instead of abs() on floating
point values when deciding whether to divide for a perspective
transform. (detected by clang)
- fix the i_poly_aa_cfill_m() API macro
Cage cleaning:
- eliminate IO::File usage from the Imager code base
- fix a type error harmlessly ignored by gcc but found by clang
- eliminate memory leaks in sub-module Makefile.PL probe test code to
allow the probes to succeed under LeakSanitizer.
- BMP: fix some otherwise harmless clang warnings
- remove some code meant to work around some unspecified old Solaris
linker bug.
- i_noise: prevent a harmless conversion warning from clang
- fountain fill/filter: limit ssample_param to 1000 to simplify code.
Imager 1.015 - 7 May 2022
============
- rename the "virtual" member of i_img to "isvirtual" to allow the
API to be used from C++, this may break source compatibility, using
the i_img_virtual() accessor is backward compatible.
- add cookbook entry to populating an image from raw RGB samples
https://github.com/tonycoz/imager/issues/471
- Imager::Probe now puts the existing value of PKG_CONFIG_PATH at the
front of the PKG_CONFIG_PATH used when it calls pkg-config.
- setup CodeQL workflow and fix detected warnings
JPEG updates:
- detect libjpeg (of whichever variety) via pkg-config if possible
- add specific support for mozjpeg (turn its optimization off by
default so tests pass.)
- add libjpeg_version(), is_mozjpeg(), is_turbojpeg() and
has_arith_coding() methods
- add jpeg_compress_profile output tag, which only matters for
mozjpeg
- the libjpeg_version() method replaces the old
Imager::File::JPEG::i_libjpeg_version() function, and the format
has changed.
- various obscure jpeg output controls:
- add support for JPEG arithmetic coding when the supplied libjpeg
supports it. Note that not all JPEG decoders can handle arithmetic
coded JPEGs.
- add support for disabling the JFIF header for JPEG files using the
jpeg_jfif tag.
- add support for smoothing to eliminate dithering noise (like cjpeg
-smooth) using the jpeg_smooth tag.
- add support for producing JPEG restart markers (like cjpeg -restart
N), using the jpeg_restart tag.
- add control over subsample for JPEG (like the cjpeg -sample
parameter) using the jpeg_sample tag
- added tags for the rest of the MozJPEG API parameters.
- add jpeg_tune tag, corresponding to the MozJPEG cjpeg -tune-*
options.
Imager 1.014 - 28 Apr 2022
============
Bug fixes:
- fix failed to build on non-threaded perls.
https://github.com/tonycoz/imager/issues/472
- when writing a paletted image with an alpha channel to PNG only
set the tRNS chunk if the image has transparent colours. With
older libpng this could add an erroneous tRNS chunk (or possibly
undefined behaviour if I understand the libpng code).
https://github.com/tonycoz/imager/issues/459
Features:
- Imager::Color and Imager::Color::Float objects can now be created
from CSS style rgb(...) strings.
https://github.com/tonycoz/imager/issues/463
- added the as_css_rgb() method to both Imager::Color and
Imager::Color::Float to format the supplied color as a CSS style
rgb() string.
https://github.com/tonycoz/imager/issues/463
- Imager::Color and Imager::Color::Float objects can now be created
(copied) or set from other Imager::Color or Imager::Color::Float
objects.
Imager 1.013 - 27 Apr 2022
============
- added rgb_difference() method
Thanks to Andreas König
https://github.com/tonycoz/imager/pull/462
- update ppport.h to prevent a redefinition diagnostic
- update bug tracker URLs to point at github
https://github.com/tonycoz/imager/pull/466
- update some other bug tracker URLs too.
- add the trim() and trim_rect() methods, to trim borders off an
image.
- add the as_float() method to Imager::Color and the as_8bit() method
to Imager::Color::Float to convert between the two types.
- update ppport.h to avoid a diagnostic in more modern perls.
- add detection for HEIF, JPEG XL and QOI image formats
Imager 1.012 - 14 Jun 2020
============
- Imager has moved to github.
- T1lib support is deprecated
- added guassian2 filter which allows separate filter radii for vertical
and horizontal. Thanks to Leolo.
https://rt.cpan.org/Ticket/Display.html?id=129769
- freetype2 support can now use pkg-config to configure itself.
- added red, green, blue, alpha methods to color objects.
- eliminate use vars.
Imager 1.011 - 7 Mar 2019
============
General changes:
- correct the type of the data parameter for im_decode_exif().
- fix the release date listed below for 1.010
- add missing change entry for RT #128142
- binmode the correct handle in t/200-file/010-iolayer.t, this may fix some test
failures on one CPAN smoker.
- add the mymeta check (AUTHOR testing only) to MANIFEST
More Coverity fixes:
- translate_errdiff() could leak memory on failure (introduced in
1.009) CID 185565.
- i_img_make_palette() could leak memory on failure (introduced in
1.009) CID 185566.
- DSO_open(), from the original dynamic loading API, could leak
dlopen() handles on failure. CID 185309. DSO_close() now releases
the memory associated with the internal DSO handle, rather than
only releasing the dlopen() handle.
Imager 1.010 - 13 Feb 2019
============
General changes:
- added the add_file_magic() class method for adding magic for new
file types to Imager's fairly primitive file magic detection.
- fixed an embarassing documentation typo in Imager::Test.
- trying to read from a GIF file with no images now sets an error
message. Thanks to Peter Sergeant for reporting this.
https://rt.cpan.org/Ticket/Display.html?id=128481
- use undeprecated encoding symbols for FT2. This should fix the
build on the badly patched CentOS 7 Freetype 2. Thanks to Slaven
Rezic for the report.
https://rt.cpan.org/Ticket/Display.html?id=128142
Coverity has come back up read-only, a few more changes:
- add missing va_end() for bmp.c's write_packed(). CID 185320.
- similarly for read_packed(). CID 185329.
- add a NOTREACHED lint comment for pixel_coverage(). Compilers
complained about a missing return, Coverity complains about the
return. CID 185325.
- avoid a possible sign extension in imsgi.c. CID 185326.
- add some FALLTHROUGH lint comments to i_readtga_wiol() where we
deliberately fall through switch cases. CID 185328.
- add assertions in callers to i_new_hatch_low() since Coverity
complained about some possible inconsistent NULL checks. CID
185339. I ended up rearranging this function later.
- remove pointless NULL checks from i_flipxy() and i_img_destroy().
Imager 1.009 - 11 Jan 2019
============
Critical issue:
- drawing a filled, anti-aliased circle to the left or right of the
image (not within the image at all) would cause a buffer overflow.
https://rt.cpan.org/Ticket/Display.html?id=128208
General changes:
- to_paletted() and make_palette() now fail (with an error in
errstr()) if invalid quantization parameters are supplied.
- map() would corrupt a channel if there was a gap in the arrayref of
channels. Detected by Coverity. CID 185300.
- most numeric parameters to the XS implementation now throw an
exception if supplied an unoverloaded reference.
https://rt.cpan.org/Ticket/Display.html?id=128208
Coverity finally finished a build[1], fixed several of the problems
found. Coverity went down before I could finish working through them.
High severity:
- reading a color-mapped TGA file with an id string would cause a
double-free if the palette was truncated. CID 185317.
- mixing scaling to sizes where the accumulator row, the working
output row or the working input row didn't fit into the address
space could result in memory leaks. This can probably only be
reproduced on very wide floating-point sample images. CID 185318.
- convert an array style function parameter pointer to pointer style
to prevent confusing Coverity in the T1 bounding box implementation.
CID 185343.
- Similarly in the FT1 bounding box implementation. CID 185338.
- Similarly for the i_tt_rasterize() function in the FT1
implementation. CID 185303.
- initialize a pointer to prevent Coverity complaining in polygon
drawing (it should always end up being set.) CID 185341.
- addi style makemap could potentially read one past the end of an
array. CID 185337.
- supplying a numeric hatch of 32 to Imager::Fill->new(hatch => ...)
would result in read beyond the end of the built-in hatch array.
Negative values (which Coverity didn't complain about) could also
cause problems. CID 185331.
- the Imager::Color set_internal() interal method no longer
calls the over-complicated ICL_set_internal() (which is retained
only for the old API.) Coverity complained that this leaked, but
this could only occur with an invalid (NULL pointer) color object.
CID 185323.
- the underlying implementation of the map() method could read before
the beginning on an allocated array if supplied with inconsistent
parameters, which Coverity complained about. No Imager code calls
that function with inconsistent parameters, but a
belt-and-suspenders check was added. CID 185315.
- Coverity complained a call to i_getcolors(), used by the
implementation of the is_bilevel() method could leave the fetched
colors uninitialized. Added a return value check. CID 185308.
- a numeric combining mode of 13 (eg. as a parameter to
Imager::Fill->new())could cause an invalid array read in
i_get_combine() due to a fencepost error in validating the combine
number. CID 185299.
Lower severity (according to Coverity):
- avoid an unneeded EXTEND() call when the FT1 has_chars()
implementation returns 0. CID 185350.
- avoid accessing a possibly NULL map from MakeMapObject() in a
logging call. (GIF) CID 185296.
- gradgen() allocated the wrong amount of space (always too much) for
the color array. CID 185291.
- avoid dead code in i_tt_glyph_names(). CID 185321.
- avoid dead code in i_get_anonymous_color_histo(), which is the
implementation of getcolorusage(). CID 185327.
- avoid dead code in i_ft2_glyph_name(), which is the implementation
of glyph_names() for FT2. CID 185342.
- avoid dead code in i_t1_glyph_names(), which is the implementation
of glyph_names() for T1. CID 185322.
- avoid an unneeded EXTEND() call when the FT2 has_chars()
implementation returns 0. CID 185292.
- the unpack code for ICO/CUR file handling could extend 32-bit
unsigned values to 64-bit signed. I believe this is harmless. CID
185319.
- remove an unneeded check when terminating the stream for JPEG
writing. CID 185347.
- skip an unneeded check when freeing the combine temp buffer in the
fountain filter. CID 185286.
- check the combine function pointer consistently rather than the
combine code in one place in the fountain filter.
- error diffusion now validates a custom error diffusion map and reports
an error if it's bad. CID 185288.
- avoid discarding the value of i_io_getc() when scanning numbers in
pnm.c. CID 185293.
- handle failure to clone the log filehandle when cloning the Imager
context object on thread creation. CID 185294.
- fix an unsigned comparison when converting character code to a
glyph index with a NULL character map when calculating the glyph
for display for FT1. This should be rare. CID 185297.
- fix a similar bug when calculating whether a glyph is present for
has_chars() for FT1. CID 185302.
- i_img_info() (C API) no longer tries to handle a NULL image object
pointer. CID 185298.
- re-work testing for size_t overflow for circle/random
super-sampling for fountain fills. CID 185304.
- don't check if the unsigned size passed to Imager's malloc wrapper
(mymalloc) is negative. Left from when that parameter was signed.
CID 185305.
- make some types larger and add a cast to prevent integer overflows
when calculating a palette with median cut for extraordinarily
large images. CID 185306.
- don't check if the unsigned size supplied to
im_set_image_file_limits() is negative. CID 185307.
[1] The first two build submissions ended up at the end of a ~400 item
build queue, and seemed to have been cancelled by Coverity. A build
submitted on NYE went through in minutes.
Imager 1.008 - 31 Dec 2018
============
- moved EXIF handling from Imager::File::JPEG to core Imager
This allows file formats that store EXIF data as blobs similarly
to JPEG to re-use this code. (such as Imager::File::WEBP)
- added some more file extensions to image file type mappings
- added add_type_extensions() class method
- Imager::Files now links to Imager::Install when discussing
appropriate libraries.
https://rt.cpan.org/Ticket/Display.html?id=127575
Imager 1.007 - 24 Nov 2018
============
- add png_compression_level tag for writing PNG files.
- avoid flooring a second time in matrix transform interpolation.
https://rt.cpan.org/Ticket/Display.html?id=124001
- produce v2 metadata.
Includes change from the ticket and updates to sub-modules.
https://rt.cpan.org/Ticket/Display.html?id=127216
- improve error reporting for the polygon() method
Imager 1.006 - 26 Aug 2017
============
- the internal i_errors() function now correctly allocates the stack
space needed for its result.
https://rt.perl.org/rt3/Ticket/Display.html?id=131938
- t/100-base/020-color.t now uses Imager::Test's test functions
instead of its own.
https://rt.cpan.org/Ticket/Display.html?id=111993
- write_multi() now returns an error result (a false value) if called
with a non-(Imager image object). Previously it would typically
crash.
https://rt.cpan.org/Ticket/Display.html?id=117878
- improve the documentation of the jpegquality parameter when
writing JPEG files.
- add code to mitigate CVE-2016-1238, Imager will no longer search the
default current directory entry in @INC when searching for file
format support modules.
Imager 1.005 - 16 Apr 2016
============
It's now been ten years since I switched to the new Changes file in
release 0.55.
- revert the ivdformat probes, they don't work as is and trying to
fix them is too much work for now.
Imager 1.004_004 - 15 Apr 2016
================
- test that the ivdformat from Config is correct and look for a valid
one if it isn't.
For the strange Win32 failures.
- fix a copy and paste error in pod in samples/samp-form.cgi
Imager 1.004_003 - 23 Mar 2016
================
- add some extra error reporting to the I/O layers tests, this might
help catch a failure seen on Win32.
http://cpantesters.org/cpan/report/99781689-6bf5-1014-897a-75cb4eee1325
Imager 1.004_002 - 20 Mar 2016
================
- don't use the seek() method on opened() handles in
t/200-file/400-basic.t. In older versions of perl such handles are
only IO::Handle objects, not IO::File, and don't have a seek()
method.
Imager 1.004_001 - 16 Mar 2016 (Birthday release - but not my birthday)
================
- re-work the t/200-file/400-basic.t to correctly handle failures
It's custom ok() function didn't have a prototype and didn't use scalar().
This caused ok() to use the note instead of the value being tested when
the method called returned an empty list. For an example of the problem
caused see: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=812093
- remove some noise from when Imager tried to work with bugs in old
versions of giflib. I can't do much about the new bugs.
- the new autolevels filter (Imager 0.99) used an integer for the
sample scaling factor which caused the top output level to be too
low (depending on the scaling required.) It now uses a double.
https://rt.cpan.org/Ticket/Display.html?id=111871
- the new autolevels filter had off-by-one errors calculating the
minimum and maximum luminance from the histogram. This slightly
reduced the contrast of the output image.
https://rt.cpan.org/Ticket/Display.html?id=111871
- the new autolevels filter now uses a lookup table for 8-bit images
to avoid a floating point multiply for each sample.
https://rt.cpan.org/Ticket/Display.html?id=111871
- fixed several memory leaks detected by valgrind:
- addcolors() leaked the temporary array of colors supplied to the
internal API
- make_palette() leaked the temporary image array (not the images
themselves) passed to the internal API.
- combine()/i_combine() leaked its working row buffers
- getcolorusage()/i_get_anonymous_color_histo() leaked the sample
buffer if there were too many colors
- getcolorcount()/i_count_colors() leaked the sample buffer if
there were too many colors.
- the nearest_color filter (undocumented until I find a use for it)
leaked both temporaries passed to the API and internal buffers
- the internal process of upgrading a paletted image to a direct
color image would leak a context object reference count.
- a write failure when writing to a GIF file could leak memory.
- failing to write to a 1-bit/pixel ICO image could leak memory.
- Imager no longer deliberately leaks the context object from the
initial thread. This was done to ensure there was always a context
object available, but the code that needed that now handles the
lack correctly,
- fixed some uninitialized memory usage detected by valgrind:
- rotate()/i_rotate_exact()/i_rotate_exact_bg()/i_matrix_transform()/
i_matrix_transform_bg() didn't initialize a working color value
if there was zero pixel coverage.
- i_ft2_cp() didn't initialize the complete color when producing an
intermediate image. This caused uninitialized value usage when
logging the color.
Imager 1.004 - 8 Nov 2015
============
- Imager::Color::Table is now pre-loaded by the preload() method.
https://rt.cpan.org/Ticket/Display.html?id=104896
- fix an assertion triggered under perl 5.23.4.
Thanks to A. Sinan Unur for the report and the patch.
- Imager->new can now be used to read raw image files.
https://rt.cpan.org/Ticket/Display.html?id=106836
Thanks to Richard Kelsch for reporting this.
- deal with output changes from Pod::Spell
https://github.com/perl-pod/Pod-Spell/issues/21
Imager 1.003 - 12 May 2015
============
- update 1.002 release notes to include the center change for filled
circle drawing.
- flood_fill() would escape beyond a 4-connected space under some
circumstances.
Added many more flood_fill() tests.
https://rt.cpan.org/Ticket/Display.html?id=103786
Imager 1.002 - 3 Apr 2015
============
- drawing anti-aliased filled circles is now 10 to 50 times faster
depending on the size of the circle.
This also changed the center from being the center of the pixel to
being the top left of the pixel to match the filled arcs drawn by
arc().
https://rt.cpan.org/Ticket/Display.html?id=101682
- enhancements to polygon filling:
- added a mode parameter to control how overlapping regions behave
- added a polypolygon() method to fill more than one polygon at a
time
- polygon filling is now exposed through the API.
- added colormodel(), alphachannel() and colorchannels() methods.
These were added for two reasons:
- a future version of Imager may allow the number of channels in
an image to not directly represent the color model of an image.
eg. a greyscale TIFF image with multiple alpha channels.
- a future version of Imager may allow an image to be read without
translation, for example a TIFF file that contains measurements
from an instrument. Currently Imager transforms the samples into
the range 0.0 ... 1.0 which may means the user has to translate
the value back.
An untranslated image would be unusable as image data, so
colormodel() would return "unknown" in this case.
Similarly a CMYK image might be returned as an "unknown" color
model image, if the caller chooses to disable translation to
RGB.
Imager 1.001 - 2 Jan 2015
============
- both Imager and perl 5.21.3 define my_strerror(), prevent a conflict
Thanks to Slaven Rezic for the report and the patch.
https://rt.cpan.org/Public/Bug/Display.html?id=98234
- GIF: clean-up a test file if the test for the giflib 4.2.0 file
version bug fails.
- fix Imager::Matrix2d::rotate()'s centre point handling
https://rt.cpan.org/Public/Bug/Display.html?id=99959
- ICO: don't apply the icon mask to images with an alpha channel by
default
https://rt.cpan.org/Public/Bug/Display.html?id=99507
- make verbose probing output more verbose
- use Imager::Probe to probe for freetype 1.x
https://rt.cpan.org/Ticket/Display.html?id=100502
- The --enable and --disable parameters to the top-level Makefile.PL
work again.
- update the bundled/modified Devel::CheckLib to handle the gcc-4
symlink on Cygwin
Imager 1.000 - 28 Jul 2014
============
There's nothing special about Imager 1.000, it's just another release.
- fix the skip check for the iolayer qr// buffer test
- improve error reporting for the iolayer test failing on a small
number of Win32 CPAN testers
Imager 0.99_02 - 21 Jul 2014
==============
- Imager::Filter::Mandelbrot (and dynfilt/mandelbrot.c) - initialize
the blue channel in the generated palette, and allow each color
component to be in the range 100..255 instead of just 100..254.
Thanks to Ralf Neubauer.
https://rt.cpan.org/Ticket/Display.html?id=97086
- revert "improved the XS for i_io_read() and i_io_raw_read()"
This caused problems with older perls and didn't provide much of a
performance improvement.
- support Inline 0.57 and later.
Inline 0.57 changed the "with" interface.
https://rt.cpan.org/Ticket/Display.html?id=97108
- don't define our own MAXINT macro, it conflicts with windows header
files and in a few places it was the wrong value to use anyway.
https://rt.cpan.org/Ticket/Display.html?id=96425
Imager 0.99_01 - 29 Jun 2014
==============
- GIF: add support for giflib 5.1.0, which added error code pointer
parameters to EGifCloseFile() and DGifCloseFile().
https://rt.cpan.org/Ticket/Display.html?id=96756
- GIF: avoid a double-free when do_write() fails.
- fix SV type probing to work on perl before 5.12. Broken in 0.99.
https://rt.cpan.org/Ticket/Display.html?id=96761
- PNG: skip the benign error test before libpng 1.6.0, since the
error we're testing didn't exist before 1.6.0.
https://rt.cpan.org/Ticket/Display.html?id=94717 (continued)
Imager 0.99 - 25 Jun 2014
===========
- Imager::IO->new_buffer() (and hence Imager->read()'s data
parameter) now accepts a reference to a scalar as well as just a
plain scalar.
https://rt.cpan.org/Ticket/Display.html?id=92785
- Imager::IO->new_buffer() now always makes a copy of the passed in
buffer to avoid problems with temporary objects used for the return
value of SvPVbyte().
https://rt.cpan.org/Ticket/Display.html?id=92785
- improved the XS for i_io_read() and i_io_raw_read()
https://rt.cpan.org/Ticket/Display.html?id=92738
- load plugins from absolute paths on Android
Thanks to Brian Fraser.
https://rt.cpan.org/Ticket/Display.html?id=93272
- added the jpeg_optimize parameter for writing JPEG files. This can
significantly reduce file sizes, but uses more memory and time.
https://rt.cpan.org/Ticket/Display.html?id=94292
- the autolevels filter now works on the luminance of the image
rather then working per channel. The old autolevels filter is
still available as "autolevels_skew".
https://rt.cpan.org/Ticket/Display.html?id=94413
- Imager::File::PNG now supports libpng 1.6.10.
1.6.10 changed CRC errors from benign errors to normal errors,
which broke the test which used CRC errors to check for benign
error support. Switched to using a 1-bit grey-scale image with a
palette to test for benign errors.
https://rt.cpan.org/Ticket/Display.html?id=94717
Imager 0.98 - 3 Jan 2014
===========
Incompatible changes:
- the return value of setpixel() has changed.
Previously the return values for undrawable pixels vs caller errors
changed depending on whether you used the multiple pixel calling
mechanism, or the single pixel mechanism.
Now:
- for an invalid parameter, such as an unknown colour, or missing
parameter, an empty list (or undef in scalar context) is
returned, and errstr() is set,
- otherwise the number of pixels drawn is returned. If none of
the pixels could be drawn (they were all outside the image), "0
but true" is returned.
https://rt.cpan.org/Ticket/Display.html?id=87650
Other changes:
- when drawing on an image with an alpha channel where the source
minimum is greater than zero, Imager would read from beyond the end
of a malloc() allocated buffer. In rare circumstances this could
lead to some of the source image not being written to the target
image, or possibly to a segmentation fault.
I don't believe this has any security concerns beyond that.
- if the first text drawn with Imager::Font::T1 is not anti-aliased,
text drawn would be nonsense. This would also read beyond the end
of a malloced buffer.
- non-AA text drawn with an Imager::Font::TT (Truetype 1) font would be
truncated early.
https://rt.cpan.org/Ticket/Display.html?id=88993
- Imager::Font::Wrap no longer requires the image parameter.
https://rt.cpan.org/Ticket/Display.html?id=87338
- a documentation typo fix in Imager::Transformations
Thanks to Adrian Yee.
https://rt.cpan.org/Ticket/Display.html?id=88598
- Image::Probe, Imager's internal module for probing library
locations now searches the directories specified by LD_RUN_PATH,
LD_LIBRARY_PATH, DYLD_LIBRARY_PATH and LIBRARY_PATH for libraries,
and the corresponing s/\blib$/include/ directories for header
files.
https://rt.cpan.org/Ticket/Display.html?id=86428
Imager 0.97 - 15 Jul 2013
===========
No changes from 0.96_02.
Imager 0.96_02 - 8 Jul 2013
==============
- PNG: treat a version mismatch between headers and library as a
probe failure.
https://rt.cpan.org/Ticket/Display.html?id=86659
- PNG: the check for benign error support is more complex than a
simple library version check, check for the appropriate macro.
Thanks for Slaven Rezic for following up on my CPAN Testers result
queries.
https://rt.cpan.org/Ticket/Display.html?id=86659
- W32: add a missing head1 AUTHORS to the old Win32.pm
https://rt.cpan.org/Ticket/Display.html?id=86658
Imager 0.96_01 - 1 Jul 2013
==============
- TIFF: handle SampleFormat = 2 by translating the signed integer
values to unsigned by flipping their sign bits.
Handle SampleFormat = 3 where possible.
SampleFormat is ignored for paletted images.
Mixed SampleFormat are handled incorrectly, since libtiff returns
only the first SampleFormat value, and an image with both an alpha
channel and SampleFormat = 2 for color channels probably has a
different SampleFormat for the alpha channel.
https://rt.cpan.org/Ticket/Display.html?id=74540
- XS clean up:
https://rt.cpan.org/Ticket/Display.html?id=69243
- Imager::Color's rgba() method now returns its values as integers
instead of floating point. (IV instead of NV).
- The XS for i_map() and i_matrix_transform() now use the AV *
typemap instead of rolling their own.
- The XS for DSO_call() now uses the HV * typemap instead of
rolling it's own.
- The XS for i_poly_aa(), i_poly_aa_cfill(), i_transform() and
i_gradgen() now use a new T_AVARRAY typemap that greatly
simplifies the XS code.
- many other minor XS changes
- some XS code formatting
- TT (Freetype 1.x) and FT2 (Freetype 2.x) non-antialiased rendering
now renders in alpha-combining mode, to match antialiased output.
https://rt.cpan.org/Ticket/Display.html?id=73359
- add sample code and cookbook notes for drawing a blurred drop-shadow.
- add support for libpng 1.6, which changed the defaults for
reporting some types of error.
https://rt.cpan.org/Ticket/Display.html?id=85746
- FT2: use gsamp/psamp() to transfer pixels from the work image to