]> git.imager.perl.org - imager.git/blobdiff - Changes
extract include paths from gcc if we can
[imager.git] / Changes
diff --git a/Changes b/Changes
index 4d210e9ffee02ed1abf21bd41bfe57681fe5244d..73bc8c45b00dd2e73c3159a86ed27c4993fd01d0 100644 (file)
--- a/Changes
+++ b/Changes
 Imager release history.  Older releases can be found in Changes.old
 
 Imager release history.  Older releases can be found in Changes.old
 
- - NOTE: possibly backward incompatible
+ - 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 buggy
+   versions of giflib.
+
+ - 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
+
+ - 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 translates
+      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 luminosity 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
+   the output image instead of gpix/ppix.
+   https://rt.cpan.org/Ticket/Display.html?id=83478
+
+ - eliminate various GCC warnings, mostly initialized but otherwise
+   unused variables.
+
+Imager 0.96 - 19 May 2013
+===========
+
+ - rearrange Imager's test files.
+   https://rt.cpan.org/Ticket/Display.html?id=84596
+
+ - Imager::Probe::_gcc_lib_paths now forces C locale.
+   A sufficiently recent gcc prints localized keys for the search
+   paths, which avoids that localization.
+   https://rt.cpan.org/Ticket/Display.html?id=84963
+
+ - fix a pod error detected by Pod::Simple 3.27 and laterm and skip
+   pod tests unless AUTOMATED_TESTING or IMAGER_AUTHOR_TESTING is set
+   and true.
+   https://rt.cpan.org/Ticket/Display.html?id=85262
+   reported by Andreas König
+
+ - add a test for unclosed POD in C source, and fix the errors it
+   found.
+   https://rt.cpan.org/Ticket/Display.html?id=74875
+
+ - fix some spelling errors detected by the newer aspell in Debian
+   Wheezy.
+
+ - remove a trailing ' from lib/Imager/Font/Test.pm's POD
+   thanks to gregor herrmann <gregoa@debian.org>
+   https://rt.cpan.org/Ticket/Display.html?id=85413
+
+ - add a test for standard =head1 commands and fix the errors found
+
+Imager 0.95 - 19 Apr 2013
+===========
+
+ - handle the SVf_UTF8 flag correctly on magic strings passed to
+   Imager::IO's write() and raw_write() methods.
+   This may misbehave in perl 5.6.x since the UTF8 flag may not be
+   visible in the main SV after SvGETMAGIC().
+   https://rt.cpan.org/Ticket/Display.html?id=83438
+
+ - document that bounding_box() ignores the transformation matrix
+   supplied to tranform() for fonts.
+   https://rt.cpan.org/Ticket/Display.html?id=84106
+
+Imager 0.94_02 - 5 Apr 2013
+==============
+
+ - enable debug logging for the standard font tests
+
+ - skip the overloaded UTF-8 text output checks on 5.6.x and earlier,
+   due to a bug in that version of perl.
+
+ - don't test for read() failing on a write-only handle in 5.8.x and
+   earlier, this was fixed in change 862083f7e4 in perl.
+
+ - report the version of Inline found during testing (an attempt to
+   diagnose some intermittent failures.)
+
+Imager 0.94_01 - 2 Mar 2013
+==============
+
+ - NOTE: possibly backward incompatible:
    support reading from/writing to perl filehandes that aren't raw
    files.
 
    This allows Imager's I/O to honour handles with layers such as
    gzip, scalar file handles or tied file handles.
 
    support reading from/writing to perl filehandes that aren't raw
    files.
 
    This allows Imager's I/O to honour handles with layers such as
    gzip, scalar file handles or tied file handles.
 
-   This is backward in-compatible in that previous Imager would simply
+   This is backward incompatible in that previous Imager would simply
    use fileno() to retrieve the fd for the file and call write(2) etc
    on it directly.
    use fileno() to retrieve the fd for the file and call write(2) etc
    on it directly.
+   https://rt.cpan.org/Ticket/Display.html?id=78843
+
+ - moved most of README to lib/Imager/Install.pod which should make it
+   more accessible to the "web" generation, also significantly updated
+   and re-worked it.
+
+ - updated README's for the separately distributed modules to refer to
+   Imager::Install, and that they need -dev versions of packages
+   https://rt.cpan.org/Ticket/Display.html?id=81265
+
+ - the JPEG test code now reports the compile-time library version
+
+ - avoid a possible compiler optimization issue on CentOS 5.9 i386 by
+   rearranging (and mildly optimizing) some code.
+   https://rt.cpan.org/Ticket/Display.html?id=83212
+
+ - fix a POD error in Imager::Fill (detected on new Pod-Simple)
+   https://rt.cpan.org/Ticket/Display.html?id=83434
+
+ - fix a broken link to Graphics::Magick
+   https://rt.cpan.org/Ticket/Display.html?id=82743
+
+ - drawing text to a channel with FT2 would draw with random coverage
+   due to an uninitialized alpha channel.
+
+ - marked the function pointer underlying the mm_log() API with the
+   correct gcc magic and fixed the resulting warnings.
+
+ - fixed some other compiler warnings
+
+ - Imager::Font::W32 now properly reports text drawing errors
+   https://rt.cpan.org/Ticket/Display.html?id=70098
+
+ - handle the SVf_UTF8 flag correctly on magic (eg. overloaded)
+   strings passed as text to draw(), bounding_box(), has_chars(),
+   glyph_names() (where supported) in each of the font drivers.
+   This may misbehave in perl 5.6.x since the UTF8 flag may not be
+   visible in the main SV after SvGETMAGIC().
+   https://rt.cpan.org/Ticket/Display.html?id=83438 (partial)
 
 Imager 0.94 - 15 Dec 2012
 =========================
 
 Imager 0.94 - 15 Dec 2012
 =========================