Tony Cook [Thu, 14 Sep 2006 07:43:24 +0000 (07:43 +0000)]
This is primarily a feature release:
- a new qtype value 'mixing' has been added to the scale() method.
This is faster than 'normal', slower than 'preview'. This is based on
the method used by pnmscale, and seems to produce less blurry results
than normal.
- the rubthrough() method can now render onto images with an alpha
channel.
- the read_multi() method now falls back to calling doing a single
image read via the read() method and write_multi() will now fall
back to calling write() if a single image is supplied. This means
you can simply call the read_multi() or write_multi() functions
without having to check if the type is formatted by that method.
- the GIF loop extension can now be written. If you don't have
libungif/giflib 4.1.4 (or some distribution's bugfixed equivalent)
you should upgrade.
- getscanline() and setscanline() can now read/write palette index
based data from/to the image for paletted images, by setting type to
'index'.
- we now set the GIF header depending on the features enabled in the
GIF. Since we don't do configure type probes for bugs we have to
enable this based on the gif_lib.h version number, it's enabled for
4.1.0 and later, but requires 4.1.3 and later (maybe 4.1.3) to run
without crashing.
You can avoid this crash by passing --nogifsetversion to Makefile.PL,
or by installing a non-buggy libungif/libgif, if there is such a
thing.
Tony Cook [Fri, 18 Aug 2006 04:35:27 +0000 (04:35 +0000)]
Merged in the scale branch:
- adds a new scaling mechanism 'mixing' based on the method
implemented by pnmscale. Produces better detail when scaling down and
is faster than the 'normal' method.
- the scale() method can now scale non-proportionally if the caller
specifically asks for it with xscalefactor/yscalefactor or by setting
type to 'nonprop'.
Tony Cook [Tue, 25 Jul 2006 04:43:38 +0000 (04:43 +0000)]
bump to 0.52
This is primarily a feature release, but contains a fair few bug
fixes, new features:
- ability to read and write MS Windows ICO and CUR files
- you can now add file format plugins to support new file formats
- add POD coverage tests
- setcolors() and addcolors() now accept color names and so on instead
of requiring Imager::Color objects.
- flood_fill() can now fill to a specified border color instead of
just to the area the same color as the seed.
Bug fixes:
- bounding_box for the T1 driver wasn't converting UTF8 to ascii when
calculating the advance width.
- bounding_box for the T1 driver wasn't including leading and trailing
spaces in the bounding box as the other drivers did, it also produced
strange results for empty strings or strings containing only spaces
- when reading CMYK jpeg images they were being transferred to the
image object as is, producing a four channel image. It only looked
ok due to an old still unfixed Photoshop bug. We now convert from
the inverted CMYK that photoshop (and Corel for example) produce
into RGB.
- reading a CYMK TIFF would result in a 4 channel image, reading any
image with more than 4 channels (eg. RGB with 2 alpha channels)
would result in an error.
- added /usr/local/include to the default include search path, since
we were already searching /usr/local/lib for libraries.
And various minor fixes and documentation updates.
Tony Cook [Thu, 20 Jul 2006 13:42:04 +0000 (13:42 +0000)]
bounding_box() for t1 driver fonts was treating spaces as empty space
when calculating the bounds, which they are, but this is inconsistent
with other drivers. This was especially a problem for strings
containing only spaces where the left bound would end up far to the
right of the right bound, and similarly for the ascent and descent.
calculating the bounding box for an empty string invoked special
behaviour in t1lib, making it unreliable.
Tony Cook [Fri, 14 Jul 2006 14:57:44 +0000 (14:57 +0000)]
CMYK jpeg images were being read as 4 channel images, even though they
have no alpha channel.
The colors were being transferred directly from the JPEG image data,
this only looked correct because of an old bug in photoshop, kept for
compatibility in later versions. Photoshop inverts the ink values in
the file, so max cyan coverage is stored at 0, and min as 255, and so
on.
CMYK jpegs are now read as 3 channel images. The colors are now
converted adjusting for the photoshop bug, cmyk images from the only
other source I have, corel draw 9, are inverted in the same way,
presumably for compatibility with photoshop.
If anyone has an application that produces technically correct CMYK
jpegs, please provide a sample in jpeg and tiff form so I can attempt
to deal with it.
Tony Cook [Sat, 1 Jul 2006 05:38:11 +0000 (05:38 +0000)]
don't include the line number in the From comment so since unrelated edits
were causing changes to APIRef.pm. This is still possible but they should
be a lot less frequence.
Tony Cook [Wed, 19 Apr 2006 12:19:56 +0000 (12:19 +0000)]
- Calling setpixel() with color set to [ 0, 0, 0 ] would crash with
Can't locate object method "new" via package "Imager::Color::Float" ...
- having the color parameter code create floating point colors could
cause other problems too, since most of the underlying functions can't
handle them, so removed the attempt to create float colors.
Tony Cook [Thu, 23 Mar 2006 14:09:57 +0000 (14:09 +0000)]
- added support for registering file readers
- if you supply and unknown type value (or Imager probes and finds
one) then Imager will attempt to load "Imager::File::\Utypecode" (this
can register a file reader.)
- note: these changes may mean slightly different errors if you call
read_multi() with no file or type parameters, since read_multi() now
attempts to do the same file format probe that read() does.