]> git.imager.perl.org - imager.git/blobdiff - Changes
- added many bad BMP files to test various code paths in bmp.c, and
[imager.git] / Changes
diff --git a/Changes b/Changes
index ec35eaac0f3cf300c83b2726c6e60f1b91249b2c..9e2059d371034fb8462e5139ef144a8a326d6328 100644 (file)
--- a/Changes
+++ b/Changes
@@ -557,11 +557,358 @@ Revision history for Perl extension Imager.
         - tiff reading now uses the error stack
         - use the error stack value from reading bmp files
         - fix an error message in bmp.c
+        - added has_chars() method to Imager::Font::FreeType2
+        - freetype 2 bounding box function didn't know UTF8 (doh!)
+        - write paletted images as paletted to tiff
+       - initialize counter for packing 4 bit data
+        - don't allocate hashboxes as locals since it overflows the 
+         stack by default in Darwin
+        - applied T1 afm patch from Claes Jacobsson
+        - split IM_INCPATH and IM_LIBPATH with $Config{path_sep}, so they
+          work on Windows
+        - Added memory pools for easy cleanup of temp buffers
+        - Added read support for sgi .rgb files.
+        - io_new_fd() now creates a FDSEEK io object
+        - implemented i_readgif_wiol()
+        - Imager->read() now uses i_readgif_wiol();
+        - extend callback iolayers at C and Perl levels
+        - implemented i_writegif_wiol()
+        - split out Perl iolayer initialization into private methods
+        - add tests for each type of iolayer in t50basicoo.t
+        - read/write multi-image tiff files
+        - tests in t50basicoo.t for multi-image/file
+        - ASCII PBM files were reading white as dark gray (255 vs 1)
+        - modify the Freetype2 font code to pick it's own encoding
+          rather than using whatever strange translation FT2 happens to 
+          pick
+        - modify the FT1 font code to use the first encoding as a default
+          if we don't find a unicode encoding
+        - use the glyph bbox to calculate the glyph bitmaps for rendering
+          with FT1 rather than the global ascender/descender.  This helps
+          with fonts that have broken metrics.
+       - fix calculation of descender for FT2, it was calculating the
+         minimum decent rather than the maximum for the characters in 
+         the string
+       - didn't set default for bounding_box() utf8 parameter (caused a
+         warning when calling bounding_box() on a FT2 font with no utf8
+         parameter)
+       - Added lib/Imager/Draw.pod documentation of primitives.
+       - Added lib/Imager/Transformations.pod, some docs of simple transforms.
+       - Added lib/Imager/ImageTypes.pod, draft of ImageType pod.
+       - Added lib/Imager/Filters.pod, draft of Filters pod.
+       - Added lib/Imager/Engines.pod, draft of Engines pod.
+        - added getpixel() and setpixel() methods
+        - added Artur's OSX dlload() emulation, with minor changes
+        - modified _color() to work around a 5.6.0 bug
+        - replaced old gif options with tags
+        - we now log which memory block is being freed before giving 
+          an error on it being re-freed
+        - fixed stupid bug in deleting tags
+       - fixed minor pod errors involving >
+
+0.40pre2
+        - make t1log optional, defaulting to off.  You can enable the log
+          with Imager::init(t1log=>1) (Ticket #369)
+        - quote a few hash key strings to prevent warnings on 5.004
+        - modify quantization code to handle 1 channel images 
+          correctly (Ticket #365)
+        - make channel pointer to i_gsamp() const int * so we can pass
+          const arrays
+        - handle the presence of the default broken giflib better,
+          by giving them some more prose about the problem, and skipping
+          all but the first test that fails with the broken giflib
+        - i_box_cfill() went into an infinite loop on fountain fills
+          or fills on images with more than 8-bits/sample
+        - hide more of our Darwin dlload emulation to prevent runtime
+          symbol conflicts
+        - use INT2PTR() and PTR2IV() macros instead of direct casts to
+          prevent pointer vs int size warnings on 64-bit builds of perl.
+        - add our own INT2PTR and PTR2IV definitions when perl doesn't
+          supply them
+        - difference() method
+        - hide (with static) or rename many symbols that could possibly
+          cause conflicts with other libraries or perl
+        - Fix runaway cache problem for freetype1 font cache.
+        - Added version logging when log is started.
+
+0.40
+        - difference() wasn't setting an alpha channel when the input
+          image didn't have one
+        - improve crop() documentation, see
+          http://perlmonks.org/index.pl?lastnode_id=155767&node_id=155428
+        - handle the first "buggy giflib" test more portably.  Previously
+          it used fork() which caused problems on systems that didn't have
+          a real fork().
+
+0.41
+        - skip() in testtools should be skipn() and it should use the 
+          loop variable for the test number
+
+0.42
+        - quote the 'min' parameter to scale in Imager::Transformations
+          and at least mention it in the docs beyond the examples
+        - document the values for the read() and write() method type 
+          parameter
+        - support UTF8 text with Freetype 1.x 
+        - second parameter to SvPV() must be of type STRLEN
+        - Doc pathces from cogent.
+        - Fixed out of bounds access on bitmap for flood fills.
+        - some char * vs unsigned char * casts missing on OSF1 v4.0
+        - some enums had , on the last item in datatypes.h, which OSF1
+          didn't like
+        - Compaq C 6.4 (OSF1) claims to be C99 but doesn't provide 
+          stdint.h, don't try to use it under OSF
+        - fix missing initialization in tags.c
+        - Change i_draw to i_line and have it use Bresenham's line
+          drawing algorithm.
+        - support has_chars() method for Freetype 1.x
+        - fixed log message for i_ft2_has_chars()
+        - fixed some broken checking for UTF8 in FT2 code
+        - handle UTF8 strings passed to T1 low-level functions
+        - handle flags for underline, strikethrough and overline for T1
+          low-level output functions
+        - OO interfaces to UTF8 and flags, for now leaving the flags as
+          specific to Imager::Font::Type1
+        - mc_web_map was storing colors with an alpha of 0
+        - update the URLs for libpng and zlib
+        - Fixed empty string handling for tt font driver.
+        - Fixed tiff handling of images all contained in a 
+          single strip (rowsperstrip = -1) and added a hack
+          for images missing the rowsperstrip tag.
+        - Fixed default parameters for crop()
+        - Added Preliminary specialized scaling code.
+        - Added image type detection.
+        - added smoke test for win32 font bounding_box() method, and
+          fixed the problem reported in ticket #1748.
+        - update t37w32font.t to use i_line() instead of i_draw()
+        - replaced non-portable call to rint() with (int)(dy+0.5) (so we
+          can build on Win32)
+        - the default tifflib warning handler was crashing on Win32
+          under ActivePerl, when an unrecognized tag was read from the 
+          file.  For now we'll just drop the warnings in the bit bucket.
+          (Ticket #1513)
+        - the code to read multiple tiffs didn't handle files with more
+          than five images correctly, causing a memory overrun.
+        - fix some minor test code hiccups
+        - implemented i_t1_has_chars(), tests for same
+        - added ExistenceTest.{pfb,afm,ttf} for testing $font->has_chars
+        - tests for Imager::Font::Type1::has_chars();
+        - tests for Imager::Font::Truetype::has_chars();
+        - internal and external bounding box calculations now use
+          the same hint flags as text output for Freetype 2.x
+        - made the i_foo_bbox() interface more expandable by using
+          symbolic constants for the sizes and array offsets
+        - added a / character to the ExistenceTest.foo fonts that 
+          overlaps the right side of the character cell, to test the 
+          advance width reporting.
+        - added advance width to the i_foo_bbox() interface, and 
+          implemented it for FT2, FT1 and Type 1
+        - Imager::Font::bounding_box() now returns an Imager::Font::BBox
+          object in scalar context.
+        - implemented $font->align() text output method, for simple output
+          of aligned text
+        - created Imager::Font::Wrap::wrap_text to perform simple text 
+          wrapping
+        - FT1, FT2 and T1 fonts now support the face_name method
+        - FT1, FT2 and T1 now support the glyph_names() method
+        - Debian woody supplied FT2.0.9, which didn't support 
+          FT_Has_PS_Names(), so we use the FT_HAS_GLYPH_NAMES() macro 
+          instead.
+        - some older FT1 don't define TT_MS_LANGID_ENGLISH_GENERAL,
+          which we use, define it if freetype doesn't.
+        - Added extra options to rubthrough() so only a subpart of
+          source image is used.
+        - the image fills didn't handle filling with source images of
+          less than four channels correctly
+        - added comment support the postfix transform2() expression
+          parser
+        - transform2() can now produce images with other than 3 channels.
+        - added a correct T_AVREF input mapping to the typemap to 
+          simplify parameter lists
+       - shut off one of the align subtests in the ft2 test.  The triggering
+         is likely an ft2 bug.
+        - removed some half written scaling optimization code.
+       - added /sw/lib and /sw/include to the Makefile.PL code for osX.
+       - removed all references to the www.eecs.umich.edu page and changed
+         them to imager.perl.org ones.
+
+0.43
+       - added log() and exp() functions to transform2()
+       - change the getpN() functions in transform2() to set a 
+         reasonable alpha if the input image has no alpha
+       - document the constants that transform2() defines
+       - skip the right number of tests when FT2 isn't available
+       - This version pushed to CPAN because of skip problem in FT2 test.
+
+0.43_01 Fri 8 Oct 2004
+       - only call FT_Get_Postscript_Name() on FT 2.0.6 and later
+       - put the IM_LIBPATH and IM_INCPATH values first in the search
+         path so the builder gets their local versions if desired rather
+         than the system versions they might be trying to avoid
+       - document the exp() and log() transform2() functions
+       - document the constants normally set by transform2().
+       - refer the user to appropriate documents in the example in 
+         Imager.pm
+       - change the list of documents in Imager.pm to move the document 
+         names out of the =item lines so we can make them into links
+       - the scale() method now produces a warning when called in
+         void context.
+       - font.c now only uses the defined T1Lib error codes
+       - update ppport.h and remove the duplicate definitions from
+         Imager.xs.  Had to mangle ppport.h to prevent duplicate global
+         function definitions.
+       - newer versions of tifflib require that all of the function
+         pointers passed to TIFFClientOpen be non-NULL, the mmap() and
+         munmap() pointers were always NULL and the sizeproc was
+         sometimes NULL.
+        - there would be a link or load time error on m_init_log() if
+          Imager was built with IM_NOLOG, fixed by renamed init_log()
+          to m_init_log() in log.c (thanks to Takumi Yamani)
+        - moved some variable definitions to the right place
+        - the Win32 font driver bounding box function now returns the 
+          right number of values (both thanks to Takumi Yamani)
+        - the Win32 font driver now uses DEFAULT_CHARSET rather than
+          ANSI_CHARSET are the lfCharSet value for the LOGFONT,
+          as suggested by Takumi Yamani.
+        - fontfiles/ExistenceTest.{pfb,ttf} weren't marked as
+          binary in the CVS repository (caused test failures if you
+          built from CVS on Win32)
+        - Makefile.PL should now handle INCLUDE or LIB with spaces in them
+          correctly on Win32.
+        - the pnm reader read maxval for ppm/pgm files and then ignored it,
+          it's now validated (0 < maxval < 65536) and used to scale
+          samples.  Note that binary ppm/pgm files (P6/P5) with maxval >
+          255 result in an error, since I didn't want to add new features
+          just yet, just get the code that's there working correctly.
+          Thanks to Elthek on rhizo for reporting this and help in 
+          tracking it down.
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=7465
+        - added a bunch of tests for reading pnm files.
+        - previously, if you supplied to_paletted and empty color map
+          and set make_colors to 'none', quant_translate() would segfault.
+          This was because it was making the reasonable assumption that
+          you'd have colors to map to.  quant_translate() now checks there
+          is at least one color and return NULL if there isn't.
+        - i_img_to_pal() now does error checking of the value returned by
+          quant_translate().
+        - Imager::to_paletted() now checks for success/failure of 
+          i_img_to_pal() correctly and does appropriate error handling.
+        - i_writegif_low() did no error checking on the result of
+          quant_translate(), it now does
+        - we now test that trying to write a GIF image with no palette
+          allowable by the quant options is a failure.
+        - Imager::write() was doing nothing with the result of the call 
+          to i_writegif_gen(), in particular it wasn't returning () on 
+          failure.
+        - added tests for paletted image handling and the methods
+          specific to those images
+        - the XS for i_setcolors() was missing the OUTPUT clause for
+          RETVAL, and hence wasn't returning failure on failure.
+        - supplying a sufficiently small scaling value could make the
+          scale() method return an image with zero height or width.
+          Several of the above together resolve 
+          https://rt.cpan.org/Ticket/Display.html?id=7467
+        - the void context warning for scale() now includes the callers
+          filename/line (instead of the default of Imager.pm line 15xx)
+        - Imager->new will now return undef if the dimensions or number of
+          channels specified for an image are out of range.  An error
+          message can be retrieved with Imager->errstr.
+        - added the C<builtin> color specifier and the 
+          Imager::Color::Table class which defines those colors.
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=2593
+        - added the equals() method to Imager::Color.
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=2238
+        - prevent a test warning introduced by the above
+        - the rotate() and matrix_transform() methods now accept a 'back'
+          parameter specifying a background color.  This is only used
+          where there is no source data (think of the corners around an
+          image rotated 45 degrees) and it not combined with transparent
+          pixels from the source image.
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=6140
+        - removed a warning generated by the new matrix_transform() test
+        - added a method index to Imager.pm
+        - corrected "flood fill" to "flood_fill" in Imager/Draw.pod
+        - removed compose() method from Imager/Transformations.pod since
+          it isn't implemented yet
+        - the image resulting from a crop is now the same type as the
+          source image (paletted vs direct, bits/sample)
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=7578
+        - the parameters to crop() weren't handled correctly in most 
+          cases other than supplying left,top,right,bottom.
+        - clarified the documentation for crop() providing more detail
+          and more examples
+        - the edges of the cropped area are now cropped against the 
+          edges of the source image
+        - cropping to zero width/height is treated as an error (no
+          image is returned and $src->errstr has a message)
+          Resolves https://rt.cpan.org/Ticket/Display.html?id=7581
+        - built 0.43_01 for testing
+
+0.43_02 Mon 26 Oct 2004
+
+- the changes to scale() had some problems with integer vs floating point
+  calculations (only caught in tests under perl 5.8.5 <sigh>)
+- the FT2 glyph_names() method didn't do correct error handling
+  when the string parameter wasn't supplied
+- i_ft2_glyph_name() accepted only an unsigned char as the
+  character code to get the name for, which meant it
+  didn't work for unicode characters \x{100} or above
+- the XS for i_ft2_glyph_name() had a similar problem
+- added NameTest.ttf to be used in checking unicode glyph
+  names
+- added reliable_only optional parameter to the glyph_names()
+  method so you can ignore theresult of FT_Has_PS_Glyph_Names()
+- handle errors given by i_ft2_glyph_name() a bit more
+  correctly
+- the FT1 glyph_names() method didn't do correct error handling 
+  when the string parameter wasn't supplied
+- some memory allocated when creating a callback IO object (io_new_cb)
+  wasn't being released (detected with valgrind)
+- the testtools.pl match[nx]() functions escapes the test string on 
+  test failure a bit better
+- the XS code for i_tt_glyph_name() used unsigned char to store a 
+  unicode character when it should have used unsigned long.
+- the XS code for i_t1_glyph_name() used unsigned char to store a 
+  unicode character when it should have used unsigned long.
+- resolves https://rt.cpan.org/Ticket/Display.html?id=7949
+- the type 1 glyph_names() method didn't do correct error handling 
+  when the string parameter wasn't supplied
+- renamed io.h to imio.h to prevent problems building under cygwin.
+  resolve https://rt.cpan.org/Ticket/Display.html?id=7948
+- i_writegif_low() wasn't setting the returned global palette, which
+  meant a rubbish palette was returned to the user (detected with valgrind)
+
+0.43_03
+
+- change the "double-include" protection macro that imio.h uses.
+- updated download locations for the various libraries that Imager 
+  depends on.  Added some advice for cygwin.
+- more information on gif library versions in README and Makefile.PL
+- creating an image where the size of the allocated image buffer would
+  overflow an integer would cause too small a buffer to be allocated.
+  This could potentially be a security hole.
+  partly resolves https://rt.cpan.org/Ticket/Display.html?id=8213
+- set i_format to jpeg for jpeg files and test for it
+- set i_format to png when reading png files and test for it
+- i_yres was being set to the xres when reading a png file
+- added many bad BMP files to test various code paths in bmp.c, and 
+  made many minor fixes to bmp.c to make them work:
+  - it was possible for various types of read failures to SEGV, both
+    as NULL pointer dereferences and buffer overflows
+  - some errors, like palettes being too large for the number of bits
+    per pixel, were not being caught
+  - failing to read all of a packed data structure would not cause
+    a read failure
+  - invalid compression types were not always caught
+  - error messages are more consistent (still not always great messages,
+    but one step at a time)
+- added bmp_compression_name, bmp_used_colors, bmp_filesize, bmp_bit_count 
+  tags on reading a BMP file
 
 =================================================================
 
         For latest versions check the Imager-devel pages:
-        http://www.eecs.umich.edu/~addi/perl/Imager/devel/
+        http://imager.perl.org/
 
 =================================================================