]> git.imager.perl.org - imager.git/blobdiff - Changes
[rt #74540] handle the TIFF SampleFormat tag
[imager.git] / Changes
diff --git a/Changes b/Changes
index 408d4b59d3b078f205f16f512c7a2825c4aaddff..11a887a200dd180d86b1e91ac3d55a12af498d33 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,7 +1,463 @@
 Imager release history.  Older releases can be found in Changes.old
 
+ - 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 be 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
+
+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.
+
+   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.
+   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
+=========================
+
+Variations on some of these changes were included in development
+releases.
+
+ - improved thread safety
+   - the internal error stack and log file handle are now in a per-thread
+     context object
+   - JPEG now captures IPTC information in a thread-safe way
+   - avoid globals where possible for warning capture in libtiff
+   - use a mutex to avoid re-entering thread-unsafe giflib
+   - use a mutex to avoid re-entering thread-unsafe tifflib
+   - use a mutex to avoid re-entering thread-unsafe T1Lib
+   - use a library handle per thread for freetype 2.
+   - use an engine handle per thread for freetype 1.x.
+   - originally these changes broke ABI compatibility, this has been
+     restored.
+
+ - clarify the return value of getpixel();
+   https://rt.cpan.org/Ticket/Display.html?id=81198
+
+ - fixed a race condition in parallel testing for T1
+
+ - fixed a bug in handling yoff for untransformed image-based fills
+
+ - documentation improvements for Imager::Fill
+
+ - FT2: report the library version while testing.
+
+Imager 0.93 - 15 Oct 2012
+===========
+
+Bug fixes:
+
+ - previously a transparency enabled GIF write (the default) would
+   always use a GIF89a header even if none of the images were
+   transparent.
+
+ - previously the probe step for freetype-config would fail on cygwin
+
+ - catch an invalid matrix parameter to convert() instead of crashing
+   https://rt.cpan.org/Ticket/Display.html?id=79922
+
+ - remove the 16-bit/sample limitation from the documentation for
+   setsamples(), it hasn't applied for many releases.
+   https://rt.cpan.org/Ticket/Display.html?id=79989
+
+ - don't copy setsamples() data parameter, it may be a large scalar
+   https://rt.cpan.org/Ticket/Display.html?id=79990
+
+ - clean up .dSYM directories generated performing probes on OS X
+   Mountain Lion.
+
+ - pass the --verbose command-line option through to Imager::Probe in
+   sub-module's Makefile.PLs
+   https://rt.cpan.org/Ticket/Display.html?id=75878
+
+Enhancements:
+
+ - support for giflib 5.0. (5.0.1 and later)
+   https://rt.cpan.org/Ticket/Display.html?id=79029
+   The giflib API Imager uses doesn't have a mechanism to set the
+   header version in 5.0.0.
+
+ - update the GIF library probe code to check for the new giflib 5.0.1
+   EGifSetGifVersion() function, and to check for the giflib 4.2.0
+   uninitialized gif89 bug.
+   https://rt.cpan.org/Ticket/Display.html?id=79679
+   http://sourceforge.net/tracker/?func=detail&aid=3574283&group_id=102202&atid=631304
+
+ - avoid static variables when capturing IPTC data from JPEG files
+
+ - match Imager::Font;:T1's error message translations to those from
+   later versions of T1Lib.
+
+ - for libtiff versions that support extended warning handlers (3.8.0
+   or later), use them to avoid some global variables.
+
+ - note Image::ExifTool for better metadata support.
+   https://rt.cpan.org/Ticket/Display.html?id=79251
+
+Imager 0.92 - 14 Aug 2012
+===========
+
+ - giflib 4.2 eliminates the GIF_LIB_VERSION macro, handle that
+   correctly for both probing and runtime.
+   https://rt.cpan.org/Ticket/Display.html?id=77672
+
+ - allow building JPEG/imexif.c on C89 compilers.
+
+ - allow building GIF/imgif.c on C89 compilers.
+
+Imager 0.91 - 4 Jun 2012
+===========
+
+Bug fixes:
+
+ - The size of rotated images is no longer rounded up so aggressively.
+   Added rounding to the linear interpolation done for rotate() and
+   matrix_transform() for 1 and 3 channel 8-bit images.
+   Adjusted the two tranlate matrices used to build the final rotation
+   matrix to use the distance between the outlier pixels rather than
+   the pixel dimensions (ie. dimension-1).
+   With all of this the output of rotate(degrees => 270) on an 8-bit
+   image exactly matches the output of rotate(right => 270).
+   https://rt.cpan.org/Ticket/Display.html?id=77063
+
+Other changes:
+
+ - eliminate the old IIM_new(), IIM_DESTROY() names from Imager's
+   internals, those names only matter for the XS interface.
+
+ - improve error reporting when PERL_INITIALIZE_IMAGER_CALLBACKS finds
+   the API level compiled into a loadable module such as
+   Imager::File::GIF doesn't match that of Imager.  Previously it
+   could be difficult to determine exactly which module was failing to
+   load.
+   https://rt.cpan.org/Ticket/Display.html?id=77173
+
+ - added Imager->check_file_limits() as an interface to the
+   i_int_check_image_file_limits() API.
+
+ - Imager->set_file_limits(reset => 1) now resets the limits to the
+   defaults rather than setting them all to unlimited.
+
+ - wrote a brief security note as Imager::Security
+   https://rt.cpan.org/Ticket/Display.html?id=68910
+
+Imager 0.90 - 30 Apr 2012
+===========
+
+Bug fixes:
+
+ - Imager::Test::is_imaged() attempted to process an "epsilon"
+   parameter but the prototype didn't allow for the extra parameter.
+   Corrected the prototype.
+
+ - when downconverting samples (eg. from floating point to 8 bit)
+   Imager now rounds the sample value rather than attempting to
+   allocate input values over output values equally.  The old
+   behaviour had the probably surprising effect of converting a
+   floating point 2.1/255.0 into an 8-bit 3 rather than the expected
+   2.
+   This may result in slightly different 8 or 16-bit output images.
+
+ - BI_BITFIELD BMP images were handled incorrectly, both in
+   incorrectly calculating the space required for the masks and in
+   processing the image data itself.
+   https://rt.cpan.org/Ticket/Display.html?id=76736
+
+ - some odd width BMP BI_RLE4 images use run lengths that run one off
+   the edge of the image.  Imager now allows this, discarding the
+   extra column.
+
+ - odd length RLE4 runs in BMP images were decoded incorrectly.
+
+ - pkg-config could sometimes return a library that was in a directory
+   EU::MM / $Config{libpth} doesn't know about, but the compiler did.
+   If no -L is included in the pkg-config library information check if
+   EU::MM can find the library, and if not, search our configured
+   directories and insert that into the library flags.
+   https://rt.cpan.org/Ticket/Display.html?id=75869
+
+ - Imager::Probe can now probe for libraries with dependent libraries,
+   common for static linking, eg. libpng requires libz.
+   https://rt.cpan.org/Ticket/Display.html?id=74043
+
+ - libpng 1.5 specific probes were looking for libpng 1.4 filenames.
+
+ - added alternative probe configurations that try to link libz, to
+   handle a statically linked libpng.
+   https://rt.cpan.org/Ticket/Display.html?id=74043
+
+ - if a probe includes testcode, Imager::Probe now checks that code as
+   part of the process of checking each configuration rather than as a
+   post test of the found configuration.  This allows alternate
+   configurations to be checked if a matching but non-working
+   configuration is found.
+   https://rt.cpan.org/Ticket/Display.html?id=74043
+
+Other changes:
+
+ - when reading or writing images via callbacks, the default callbacks
+   now push an error message indicating that a required callback was
+   called but not supplied.
+   https://rt.cpan.org/Ticket/Display.html?id=76782
+
+ - clarify which callbacks are required for reading and writing TIFF
+   images.
+
+ - improve logging for creation of callback I/O layers.
+
+ - a little more documentation for Imager::Probe.
+
+ - the i_get_file_background() and i_get_file_backgroundf() APIs now
+   return int to indicate whether the i_background tag was found.
+
+ - PNG rework
+   - improve error reporting
+   - add png_interlace, png_bits tags
+   - read paletted images as paletted images, including transparency
+   - read 1 bit greyscale images as a type suitable for other file
+     handlers to write as bilevel
+   - read 16 bit/sample PNG as 16-bit/sample Imager images
+   - write "bilevel" paletted images as 1 bit grayscale images
+   - write paletted images as paletted images
+   - write 16-bit (or higher)/sample images as 16-bit/sample PNG
+     images
+   - improved metadata support
+   https://rt.cpan.org/Ticket/Display.html?id=29268
+
+Imager 0.89 - 18 Mar 2012
+===========
+
+Bug fixes:
+
+ - getpixel(..., type => "float") and the API i_gpixf() have been
+   broken on paletted images since they were implemented.
+   https://rt.cpan.org/Ticket/Display.html?id=75258
+
+Other changes:
+
+ - links in the METHOD INDEX now point at the method documentation
+   rather than the heading you can find them under.
+   https://rt.cpan.org/Ticket/Display.html?id=71495
+
+ - Imager (and the bundled dynamic modules) no longer fallback to
+   using DynaLoader if loading via XSLoader fails.
+   For the bundled modules this could hide useful error messages.
+   https://rt.cpan.org/Ticket/Display.html?id=75560
+
+ - IM_DEBUG_MALLOC mymalloc() no longer sn?printfs() a string to a
+   buffer in the array of allocations, but just stores the filename
+   pointer and line number.
+   https://rt.cpan.org/Ticket/Display.html?id=70388
+
+Imager 0.88 - 22 Feb 2012
+===========
+
+ - describe how to build libgif etc on OS X in such a way as to be
+   compatible with a fat binary perl (such as the system perl), in
+   README.
+   https://rt.cpan.org/Ticket/Display.html?id=73371
+
+ - update the change notes for 0.77_01 to indicate that libungif
+   support was removed.
+
+ - add some other imaging modules to SEE ALSO
+   https://rt.cpan.org/Ticket/Display.html?id=73906
+
+ - note that the generator of the apparently non-DFSG-free postscript
+   in MMOne.pfb is a Debian package.
+
+ - setsamples() is now a true complement to getsamples() - it can
+   write 8-bit or floating point samples from a scalar or array
+   reference.  This adds i_psamp() and i_psampf() to the C level API.
+
+ - the XS interfaces to i_gsamp(), i_gsampf() and i_gsamp_bits() have
+   changed to make better use of the typemap, but these aren't part of
+   the perl level API anyway.  There were no changes to the C level
+   interfaces to these functions.
+
+ - getpixel() and setpixel() now accept a mix of scalar and array
+   references for the x and y parameters, and unequal array lengths is
+   no longer an error.
+   https://rt.cpan.org/Ticket/Display.html?id=73697
+
+Bug fixes:
+
+ - correctly calculate the size of a rotated image
+   https://rt.cpan.org/Ticket/Display.html?id=69261
+
+ - fix incorrect rounding of color values for matrix_transform() and
+   rotate().
+   https://rt.cpan.org/Ticket/Display.html?id=69261
+
+ - Win32 text output is now done in normal combine mode, the alpha
+   component of the color is now significant.
+   https://rt.cpan.org/Ticket/Display.html?id=70014
+
+ - remove long unused gif case from read()
+   https://rt.cpan.org/Ticket/Display.html?id=69244 (partial)
+
+ - the getsamples() target parameter was being treated as a hashref
+   when it's meant to be an array reference.
+   https://rt.cpan.org/Ticket/Display.html?id=74882
+
+ - getpixel() and setpixel() now returns an empty list when invalid
+   parameters are supplied.
+   Invalid values for type now result in an error for getpixel().
+   https://rt.cpan.org/Ticket/Display.html?id=73697
+
+Imager 0.87 - 03 Jan 2012
+===========
+
+ - document the return value of the filter() method.
+   https://rt.cpan.org/Ticket/Display.html?id=72369
+
+ - document i_gsamp_bits() and i_psamp_bits().
+   https://rt.cpan.org/Ticket/Display.html?id=68815
+
  - properly increment the Imager::Matrix2d $VERSION.
 
+ - actually include the Imager::Test tests in the dist
+
+ - correctly read and write 256x256 pixel ICO files
+   https://rt.cpan.org/Ticket/Display.html?id=69599
+
+ - make the error message from read() or read_multi() when they can't
+   identify the file type match reality.
+   https://rt.cpan.org/Ticket/Display.html?id=72475
+
+ - read() now uses $FORMATGUESS if it can't determine the file type
+   based on the file header, to match read_multi().
+
+ - re-work and add tests for def_guess_type().  def_guess_type() no
+   longer returns any random file extension as the file type.
+
+ - add gray4, gray16 and gray as presets for make_colors.
+   https://rt.cpan.org/Ticket/Display.html?id=67911
+
+ - add make_palette() method that produces a palette from one or more
+   images.
+
+ - fix the Imager dependency for the separately distributed font
+   drivers.
+   https://rt.cpan.org/Ticket/Display.html?id=72643
+
+ - fix i_render_color() to properly draw in "normal" mode - ie. when
+   writing to a 1 or 3 channel image the second or fourth channel of
+   the source color was being ignored, it is now significant.
+   https://rt.cpan.org/Ticket/Display.html?id=71564
+
 Imager 0.86 - 31 Oct 2011
 ===========
 
@@ -487,6 +943,8 @@ Imager 0.77_01 - 13 Sep 2010
    preparation for separate distribution.
    https://rt.cpan.org/Ticket/Display.html?id=49616 (partial)
 
+   Note: this removed support for libungif from Imager.
+
  - optimize filled box drawing (color, not fill)
 
 Bug fixes: