Changes since version 5.5.6:
- File descriptor leak prevented temporary disk pixel cache from being
removed under Windows.
- Color profile patches provided by (dge at softec.st).
- West/East geometry was computed with image width rather than height.
- The MNG encoder failed to set the JNG bit in the simplicity profile.
- The MNG encoder failed to write FRAM chunks when all images were JNG.
- The JNG encoder wrote the wrong alpha_sample_depth for opaque images.
- Fixed JPEG EXIF problem.
- Added -thumbnail as an option to the utilities.
- No TIFF preview was written on EPT write (patch provided by
Lars Ruben Skyum).
- NegateImage() now negates the K channel of a CMYK image (patch provided
by Lars Ruben Skyum).
- Parameter 'elevation' misspeclled for PerlMagick Shape() method.
- A number of minor leak/unitialzed memory problems fixed.
- Allocate free nodes from the heap in QuantizeImage().
- Magick-config --version returned gibberish.
- Adopted Bob Friesenhahn's patterns-- use as filename pattern:checkboard,
pattern:bricks, etc.
- We cannot reliably auto rotate PDF files so this feature was removed.
- The conjure program did not correctly handle the gravity attribute.
- The persistent cache reference count was not properly incremented.
- Added $image->Describe() method to PerlMagick to interface to the
DescribeImage() C API method.
- Added support for the EXIF Tag Parsing Library. Currently we simply
display the tags when calling DescribeImage(). In the near future
there will be support for modifying or adding tags.
- Added Bob Friesenhahn's updated Windows installation instructions.
- Interfaced the drawing routines with the new MagickWand API.
MagickWand will be the primary public C interface to ImageMagick in
the near future.
- magick/effect.c: RandomChannelThresholdImage was not handling
PseudoColor, non-gray images correctly.
- png.c would not compile with libpng versions older than libpng-0.95,
due to bugs introduced in ImageMagick version 5.5.2.
- Implemented -random-threshold and -ordered-dither options.
- The locale messaging system now uses a hash for fast lookup.
- Updated libtool to the new released version, 1.5.
- Fixed bug with decoding grayscale PNG images and JNG alpha channel
at Q:32.
- Now recognize 32-bit hex color specifications, patches provided by
Bob Friesenhahn.
- Started API wrappers based on Bob Friesenhahn's method suggestions.
- Text annotations that started with '\n' were not rendered correctly.
- Removed artifacts from images rotated with a small number of degrees.
- Minor bug fix in the ParseGeometry() method.
- Modified the non-public inline AlphaComposite() to use a PixelPacket
pointer; previously it returned a PixelPacket structure.
- You can now specify an image geometry as an image file (e.g. -geometry
image.jpg).
- Use new temporary file manager for JNG components.
- Added support for 12-bit TIFF images.
- Added improved locale message subsystem (contributed by Kyle Shorter).
- Removed a bias from SampleImage() and DrawAffineImage() (bug report
by Glenn Randers-Pehrson).
- PerlMagick now recognizes percent values for fuzz or opacity.
- Not enough memory allocated for reading PCX (bug report by Trevor
Willis).
- There were artifacts when using the Bessel function for resizing
(bug report by Bob Friesenhahn).
- Added -resample to convert to change the resolution of an image.
- Added a temporary file manager that prevents race conditions and
removes any remaining files on exit.
- Prepped ImageMagick to work with Visual C++ 7.0 under Windows.
The Windows configure patches came from William Radcliffe.
- The refresh of the display image window no longer lags when the
magnify window overlay it.
- Numerous code clean-up and minor speed ups based on problem areas
identified in the Graphics-Magick ChangeLog.
Changes are lots of bug fixes and minor enhancements (several pages
worth of it).
XXX Those two should probably be using a Makefile.common instead
XXX of just copying the appropriate bits.
libMagick.so libraries to be API compatible, and they don't want to
handle proper ELF versioning, but have the "real" version number in
the library. To spare us the pkgsrc maintenance nightmare, follow their
example. Bump PKGREVISION.
Changes:
* Verify sanity of sysconf(_SC_PAGE_SIZE) and sysconf(_SC_PHYS_PAGES)
before using their values.
* Corrected bug in image geometry height calculation.
* PingBlob() improperly set the length memory of BlobInfo to zero.
* Fixed Ping() memory leak in PerlMagick.
* Fixed -map problem in convert/mogrify utilities.
* -border with a single value now produces correct results
(e.g. -border 10).
* Set locale type LC_NUMERIC to "C".
* Bug fix for PS2 encoder.
* Added PS-Adobe preamble to PS3 encoder.
* Use ImageMagick release number to allow multiple ImageMagick releases
to co-exist without interference on the same machine.
* Decided that DrawGet functions should return by value.
* Added detailed logging to BMP, PNG, and JPEG codecs, including JPEG
quality estimate.
* Added draw.h "DrawGet" equivalents to most of the "DrawSet" functions.
* Added an array size argument to DrawSetDashPattern and got rid of
the zero-termination garbage.
o Remove 'Set' from the names of draw.h functions which update the
current affine transformation array (e.g. DrawSetRotate becomes
DrawRotate).
* Under Windows, a DllMain function which automatically initializes
ImageMagick (when ImageMagick is built using DLLs) may be added by
defining ProvideDllMain in magick_config.h
* Added resource consumption methods, see magick/resource.c.
* Replaced underscores in commandline options with hyphens. For backward
compatibility, underscores will continue to be recognized.
* Added -blue-primary, -green-primary, -red-primary, -white-point options.
* Added BMP2 and BMP3 output formats.
* Changed chromaticity primary.z from 1.0 to 1.0-(primary.x+primary.y)
in the PNG and PCD codecs.
* Added 'exception' parameter to the ImageMagick progress monitor API.
* Added enumerated types for the dispose member of the Image structure.
* Added -version option to commandline utilities.
* The xcf decoder would sometimes create artifacts when reading RLE-encoded
grayscale images, due to the green and blue samples not being defined.
* Added logging capabilities to the CORE API. This facility is useful
for debugging. Added "events" parameter to the -debug commandline option.
* AcquireImagePixels() did not always return the same pixel values
for virtual pixels when the cache was stored on disk (very rare).
* new -virtual-pixel command line option.
* new PerlMagick virtual-pixel image attribute.
Remove `-p' from mkdir arguments, it is already part of ${MKDIR}.
While here substitute a couple of ${PREFIX} by `%D' in
`@exec ${MKDIR} ...' lines and add a couple of missing `%D' in such lines too!
all dependencies on packages depending on "png" which contain shared
libraries, all for the (imminent) update to the "png" package.
[List courtesy of John Darrow, courtesy of "bulk-build".]
"mogrify -rotate 90 foo.tiff") used to leave the result in
/tmp/magickXXXXXXX with an in-file image comment of
/tmp/magickXXXXXXX.mgk.
Now it writes back to foo.tiff and the in-file comment is correct.
For some reason, working on jpg's didn't exhibit this problem
- Some operations that generate new files from some formats (e.g,
"mogrify -format jpg -rotate 90 foo.tiff") used to leave the result
in /tmp/magickXXXXXXX.jpg.
Now foo.jpg is generated.
For some reason, converting jpg->tiff didn't exhibit this problem.
redefines about which buildlink.mk files would care is BUILDLINK_X11_DIR,
which points to the location of the X11R6 hierarchy used during building.
If x11.buildlink.mk isn't included, then BUILDLINK_X11_DIR defaults to
${X11BASE} (set in bsd.pkg.mk), so its value is always safe to use. Remove
the ifdefs surrounding the use of BUILDLINK_X11_DIR in tk/buildlink.mk and
revert changes to move x11.buildlink.mk before the other buildlink.mk files.
use X11_BUILDLINK_MK as a test value. Generally just reordering the
inclusions so that x11.buildlink.mk comes before the other buildlink.mk
files will make everthing work.
foo-* to foo-[0-9]*. This is to cause the dependencies to match only the
packages whose base package name is "foo", and not those named "foo-bar".
A concrete example is p5-Net-* matching p5-Net-DNS as well as p5-Net. Also
change dependency examples in Packages.txt to reflect this.
A complete list of changes is not available unfortunately. Recent
changes are:
- Text drawing now handles UTF8-encoding.
- Off-by-one GetImagePixels() fix in draw.c
- PingImage() now reports attributes for all images an image sequence.
- magick/image.h: Rename QuantumLeap define to QuantumDepth.
QuantumDepth is set to the values 8 or 16, depend
configuration option.
- Updated PerlMagick signatures to signature algorithm.
- ImageMagick defaults to 16-bit quantum. Set QuantumMagick for 8-bit.
- Changed image->blob from BlobInfo to BlobInfo- so the Image
structure size is not dependent on the large-file defines.
- Added -background to convert prog
- DispatchImage() now properly handles grayscale images.
to ${X11BASE} in the header and library search paths into references to
${LOCALBASE}/share/x11-links. These packages should now be strongly-
buildlinked regardless of whether xpkgwedge is installed.
Changes well-tested on NetBSD-1.5X/i386 with and without xpkgwedge and
lightly-tested on NetBSD-1.5.1/alpha without xpkgwedge.
BUILDLINK_PREFIX.<pkgname>. This allows buildlink to find X11BASE packages
regardless of whether they were installed before or after xpkgwedge was
installed. Idea by Alistair Crooks <agc@pkgsrc.org>.
1.0.1 and up prefix functions with BZ2_ while older versions don't, but
ImageMagick was tested to work with bzip2 1.0.1, so don't change its
expectations.
using the newest PNG library won't work on system with an older one. To
prevent such problems with precompiled binary packages require at least
"png-1.0.9nb1" in all dependences.
- URL's are now understood on Win32 (thanks to libXML and William
Radcliffe).
- ImageMagick defaults to 16-bit per pixel component now.
- Support added for ART images (contributed by Jaroslav Fojtik).
- Added -pause to the animate program.
You can now specify a minimum/maximum delay for an image sequence.
- Added %c to -format to get the image comment (patch provided by Frank
Mattern).
- Over compositing is now the Porter-Duff algorithm (inspired by William
Radcliffe and Alvy Ray Smith).
- You can write SVG output if the input is SVG, MVG, or WMF.
- ImageMagick now can accept AFM, PFB, and PFM fonts.
- The linewidth parameter is deprecated in PerlMagick. Use stroke_width
instead.
- Digital Applications contributed text stroking code.
- You can now specify Truetype fonts directly. No @ prefix is required
(e.g. convert -font Arial.ttf ...)
- Digital Applications contributed line cap and dash pattern rendering
code.
- Added the Multiple composite operator for the creation of drop-shadows
(patch provided by John Harper).
- Support added for CUT images (contributed by Jaroslav Fojtik).
- Bill Radcliffe contributed fast polygoni rendering code. Parts of the
rendering algorithm were inspired by libart.
- Support added for BMP images with a 'BA' chunk (contributed by
Jaroslav Fojtik).
out of date - it was based on a.out OBJECT_FMT, and added entries in the
generated PLISTs to reflect the symlinks that ELF packages uses. It also
tried to be clever, and removed and recreated any symbolic links that were
created, which has resulted in some fun, especially with packages which
use dlopen(3) to load modules. Some recent changes to our ld.so to bring
it more into line with other Operating Systems also exposed some cracks.
+ Modify bsd.pkg.mk and its shared object handling, so that PLISTs now contain
the ELF symlinks.
+ Don't mess about with file system entries when handling shared objects in
bsd.pkg.mk, since it's likely that libtool and the BSD *.mk processing will
have got it right, and have a much better idea than we do.
+ Modify PLISTs to contain "ELF symlinks"
+ On a.out platforms, delete any "ELF symlinks" from the generated PLISTs
+ On ELF platforms, no extra processing needs to be done in bsd.pkg.mk
+ Modify print-PLIST target in bsd.pkg.mk to add dummy symlink entries on
a.out platforms
+ Update the documentation in Packages.txt
With many thanks to Thomas Klausner for keeping me honest with this.
- Support added for the Word Perfect Graphics (WPG) file format
(contributed by Jaroslav Fojtik).
- The pixel 'matte' field is changed to indicate the degree of pixel
transparency rather than the degree of opacity. This makes the pixels
compatable with most popular video cards, and many in-memory image
formats.
When the pixel quantum size is eight bits, the colormap is restricted
to 256 colors, but supports up to 65535 colors when the quantum size is
sixteen bits (when QuantumLeap is defined at compilation time).
- ImageMagick is more memory efficient (by 18%) when the quantum size is
eight bits, and the image is colormapped.
- ImageMagick is (finally) believed to be thread safe under Windows,
since it uses the Windows synchronization APIs to lock shared data.
- Under Unix and Windows, dynamically-loaded format coder modules are
supported. There are currently 72 loadable modules. Support for
loadable modules allows the user to add or remove formats from
ImageMagick by simply adding or removing a file. New modules are
automatically detected so users may add their own modules. This support
is proven to work for Sun Solaris, Linux, and SGI IRIX. Please let us
know about other operating systems they work on. Building a modular
ImageMagick is enabled by specifing the configure options
--enable-shared --with-modules.
- ImageMagick now has a set of modules for streaming. Here pixels are
passed to the application as they are available and deleted after use
ensuring a small memory footprint. This is useful for multi-media
applications such as MPEG.
- Image format identification (based on the file header) is now
configured via an external text file. This allows the user to add
automatic file identification for new formats added via a coder module,
or via a delegate (external program).
- XML files conforming to the W3C SVG DTD are now rendered directly by
ImageMagick. The support is incomplete but still useful.
- The Pilot Image Format (PDB) is now supported.
- The drawing primitives have been extended to support drawing bezier
curves, rounded rectangles, and arcs. There is now support for drawing
compound objects (a sequence of objects) using drawing paths. The
concept of a drawing pen has been split into stroke (for the outline)
and fill (for the objects internal color). If fill is not defined, then
only the object outline is drawn. This substantial change results in
the existing drawing commands for filled objects (fillEllipse,
fillRectangle, fillCircle, and fillPolygon) being deprecated.
- A cache file format is now supported which is a snapshot of an image's
pixel cache as it appears on disk. Images stored in this format (large)
may be loaded instantly by ImageMagick since decoding is not required.
In order to write this format , the argument -cache 0 must be supplied
(e.g. convert -cache 0 file.jpg file.cache).
- The build environment for Windows NT is entirely re-done. There is now
a configure program which generates a set of Visual C++ project files
which satisfy a set of reqirements (e.g. DLL, multi-thread, X11). These
project files are then used to build ImageMagick.
- The C API is significantly modified in order to provide thread-safe
operation via function re-entrancy. ImageMagick is believed to be
thread-safe when used with POSIX threads. It is not yet completely
thread safe under Windows or the Mac. Errors (of type ExceptionInfo)
are now reported by a function argument, or via a member of the current
image.
- The GaussianBlurImage() function (contributed by runger@cs.mcgill.ca)
supports Gaussian bluring an image.
- Functions (OpenCacheView(), CloseCacheView(), GetCacheView(),
SetCacheView(), and SyncCacheView()) are provided in order to support
manipulating multiple pixel views.
- Support added for the Word Perfect Graphics (WPG) file format
(contributed by Jaroslav Fojtik).
- The pixel 'matte' field is changed to indicate the degree of pixel
transparency rather than the degree of opacity. This makes the pixels
compatable with most popular video cards, and many in-memory image
formats.
When the pixel quantum size is eight bits, the colormap is restricted
to 256 colors, but supports up to 65535 colors when the quantum size is
sixteen bits (when QuantumLeap is defined at compilation time).
- ImageMagick is more memory efficient (by 18%) when the quantum size is
eight bits, and the image is colormapped.
- ImageMagick is (finally) believed to be thread safe under Windows,
since it uses the Windows synchronization APIs to lock shared data.
- Under Unix and Windows, dynamically-loaded format coder modules are
supported. There are currently 72 loadable modules. Support for
loadable modules allows the user to add or remove formats from
ImageMagick by simply adding or removing a file. New modules are
automatically detected so users may add their own modules. This support
is proven to work for Sun Solaris, Linux, and SGI IRIX. Please let us
know about other operating systems they work on. Building a modular
ImageMagick is enabled by specifing the configure options
--enable-shared --with-modules.
- ImageMagick now has a set of modules for streaming. Here pixels are
passed to the application as they are available and deleted after use
ensuring a small memory footprint. This is useful for multi-media
applications such as MPEG.
- Image format identification (based on the file header) is now
configured via an external text file. This allows the user to add
automatic file identification for new formats added via a coder module,
or via a delegate (external program).
- XML files conforming to the W3C SVG DTD are now rendered directly by
ImageMagick. The support is incomplete but still useful.
- The Pilot Image Format (PDB) is now supported.
- The drawing primitives have been extended to support drawing bezier
curves, rounded rectangles, and arcs. There is now support for drawing
compound objects (a sequence of objects) using drawing paths. The
concept of a drawing pen has been split into stroke (for the outline)
and fill (for the objects internal color). If fill is not defined, then
only the object outline is drawn. This substantial change results in
the existing drawing commands for filled objects (fillEllipse,
fillRectangle, fillCircle, and fillPolygon) being deprecated.
- A cache file format is now supported which is a snapshot of an image's
pixel cache as it appears on disk. Images stored in this format (large)
may be loaded instantly by ImageMagick since decoding is not required.
In order to write this format , the argument -cache 0 must be supplied
(e.g. convert -cache 0 file.jpg file.cache).
- The build environment for Windows NT is entirely re-done. There is now
a configure program which generates a set of Visual C++ project files
which satisfy a set of reqirements (e.g. DLL, multi-thread, X11). These
project files are then used to build ImageMagick.
- The C API is significantly modified in order to provide thread-safe
operation via function re-entrancy. ImageMagick is believed to be
thread-safe when used with POSIX threads. It is not yet completely
thread safe under Windows or the Mac. Errors (of type ExceptionInfo)
are now reported by a function argument, or via a member of the current
image.
- The GaussianBlurImage() function (contributed by runger@cs.mcgill.ca)
supports Gaussian bluring an image.
- Functions (OpenCacheView(), CloseCacheView(), GetCacheView(),
SetCacheView(), and SyncCacheView()) are provided in order to support
manipulating multiple pixel views.
Add a new USE_LIBTOOL definition that uses the libtool package instead of
pkglibtool which is now considered outdated.
USE_PKGLIBTOOL is available for backwards compatibility with old packages
but is deprecated for new packages.
- ImageMagick has a new logo (contributed by Ofer Tenenbaum).
- Requests for all or part of a pixel row, or multiple complete pixel
rows, are mapped directly to the underlying image in memory, or memory
mapped from a disk file, avoiding performance-robbing pixel copying.
Requested rectangular regions which are narrower than the image width
must still be copied to a scratch space.
- Support for WBMP, Wireless Bitmap (level 0) images (contributed by
Milan Votava)
- Image sizes are limited by physical memory plus available disk space on
the machine, or the file addressing limits of the operating system,
whichever comes first. This means that if you can figure out how to
build a big enough machine (and have plenty of time) terabyte images
can be processed.
- An image cache subsystem and API are provided to map portions (as small
as one pixel or as large as the entire image) of images into memory and
to save any updates.
- Memory mapping is used to access files. This is the most efficient
access mechanism available.
- DirectColor pixels are now stored in an efficient 32-bit structure (or
64-bit when QuantumLeap is enabled).
- PseudoColor indices are now stored separately from the DirectColor
pixels (PseudoColor and DirectColor representations are still available
simultaneously).
- In-memory run-length encoding is eliminated.
- Compressed images are decompressed and compressed incrementally in
order to limit memory consumption.
- Lots of minor C API fixes and improvements.
- Cache threshold setting for setting the boundary between use of RAM or
RAM + disk when processing an image:
- Use the --enable-cache option (e.g. --enable-cache=160) to set the
compiled-in default when running the configure script.
- Use -cache for ImageMagick utilities
- Set the cache_threshold attribute in PerlMagick
- Set the cacheThreshold attribute in Magick++
- The identify utility now displays precise read-time values.
- The Win32 build environment (now called "VisualMagick") is completely
re-done and supports building both multi-thread DLL as well as static
libraries.
- use the autoconf configure script to configure and build (we were
already running configure but using Imake to build!?)
- make use of pkglibtool (package already has full libtool support)
(Note that now that we use Autoconf, this installs in ${LOCALBASE} without
the need for a tool such as xpkgwedge. The configure script automatically
detects all the stuff for which we had used patches in the Imakefiles.)
Also use --without-... to disable optional components for which we have no
explicit dependencies, which can be reenabled by the user in pkgsrc, so
that the built binaries do not have "hidden" dependencies.
Closes PR pkg/7463.
PR pkg/7463 is RE-opened on this subject; someone can take the opportunity
to fix it, perhaps myself if I have the time this weekend.
This is NOT the correct fix.
- New, optional Makefile variable HOMEPAGE, specifies a URL for
the home page of the software if it has one.
- The value of HOMEPAGE is used to add a link from the
README.html files.
- pkglint updated to know about it. The "correct" location for
HOMEPAGE in the Makefile is after MAINTAINER, in that same
section.
(everything but ImageMagick, gs5, and xemacs20). The API hasn't changed
much, say the install instructions, but it isn't binary compatible--bump
shlib version to 1.0.
Implement a new DEPENDS definition, which looks for an installed
package, building it if not present, and use it in preference to
LIB_DEPENDS. This should make the package collection more useful on
NetBSD ELF ports.