From: cristy Date: Mon, 7 Sep 2009 21:45:48 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~10762 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b32b90a7e1ee2275333589072c496b5f69e17fec;p=imagemagick --- diff --git a/ChangeLog b/ChangeLog index a7b300739..fe8642bfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,11 @@ -2009-08-31 6.5.5-6 Cristy +2009-09-07 6.5.5-8 Cristy + * Check that quantum_info is defined before destroying it in the PNG coder. + * Add -interline-spacing option to convert. + +2009-09-03 6.5.5-7 Cristy + * Support multi-page transparent Postscript and PDF. + +2009-09-01 6.5.5-6 Cristy * A union is required when converting a thread ID to an unsigned long. 2009-08-28 6.5.5-5 Cristy diff --git a/ImageMagick.spec b/ImageMagick.spec index 06268d909..d3a89e656 100644 --- a/ImageMagick.spec +++ b/ImageMagick.spec @@ -1,5 +1,5 @@ %define VERSION 6.5.5 -%define Patchlevel 7 +%define Patchlevel 8 Name: ImageMagick Version: %{VERSION} diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index cf3653dd6..75062d04e 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -571,6 +571,15 @@ void Magick::Image::chop( const Geometry &geometry_ ) (void) DestroyExceptionInfo( &exceptionInfo ); } +// contains one or more color corrections and applies the correction to the +// image. +void Magick::Image::cdl ( const std::string &cdl_ ) +{ + modifyImage(); + (void) ColorDecisionListImage( image(), cdl_.c_str() ); + throwImageException(); +} + // Colorize void Magick::Image::colorize ( const unsigned int opacityRed_, const unsigned int opacityGreen_, @@ -737,15 +746,16 @@ void Magick::Image::display( void ) // mapping color lookups of the source image to a new destination image // usally of the same size as the source image, unless 'bestfit' is set to // true. -void Magick::Image::distort ( const DistortImageMethod method, - const unsigned long number_arguments, - const double *arguments, - unsigned int bestfit ) +void Magick::Image::distort ( const DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_, + const bool bestfit_ ) { ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); - MagickCore::Image* newImage = DistortImage ( image(), method, - number_arguments, arguments, (MagickBooleanType) bestfit, &exceptionInfo ); + MagickCore::Image* newImage = DistortImage ( image(), method_, + number_arguments_, arguments_, bestfit_ == true ? MagickTrue : MagickFalse, + &exceptionInfo ); replaceImage( newImage ); throwException( exceptionInfo ); (void) DestroyExceptionInfo( &exceptionInfo ); @@ -1120,6 +1130,14 @@ void Magick::Image::gaussianBlurChannel ( const ChannelType channel_, (void) DestroyExceptionInfo( &exceptionInfo ); } +// Apply a color lookup table (Hald CLUT) to the image. +void Magick::Image::haldClut ( const Image &clutImage_ ) +{ + modifyImage(); + (void) HaldClutImage( image(), clutImage_.constImage() ); + throwImageException(); +} + // Implode image void Magick::Image::implode ( const double factor_ ) { @@ -1606,6 +1624,20 @@ void Magick::Image::read ( const unsigned int width_, (void) DestroyExceptionInfo( &exceptionInfo ); } +// Apply a color matrix to the image channels. The user supplied +// matrix may be of order 1 to 5 (1x1 through 5x5). +void Magick::Image::recolor (const unsigned int order_, + const double *color_matrix_) +{ + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); + MagickCore::Image* newImage = + RecolorImage( image(), order_, color_matrix_, &exceptionInfo ); + replaceImage( newImage ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); +} + // Reduce noise in image void Magick::Image::reduceNoise ( const double order_ ) { diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h index 418be4198..26f9ca40b 100644 --- a/Magick++/lib/Magick++/Image.h +++ b/Magick++/lib/Magick++/Image.h @@ -197,6 +197,11 @@ namespace Magick // horizontal or vertical subregion of image. void chop ( const Geometry &geometry_ ); + + // Accepts a lightweight Color Correction Collection + // (CCC) file which solely contains one or more color corrections and + // applies the correction to the image. + void cdl ( const std::string &cdl_ ); // Colorize image with pen color, using specified percent opacity // for red, green, and blue quantums @@ -262,10 +267,10 @@ namespace Magick // mapping color lookups of the source image to a new destination image // usally of the same size as the source image, unless 'bestfit' is set to // true. - void distort ( const DistortImageMethod method, - const unsigned long number_arguments, - const double *arguments, - unsigned int bestfit = 0 ); + void distort ( const DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_, + const bool bestfit_ = false ); // Draw on image using a single drawable void draw ( const Drawable &drawable_ ); @@ -372,6 +377,10 @@ namespace Magick void gaussianBlurChannel ( const ChannelType channel_, const double width_, const double sigma_ ); + + // Apply a color lookup table (Hald CLUT) to the image. + void haldClut ( const Image &clutImage_ ); + // Implode image (special effect) void implode ( const double factor_ ); @@ -1089,6 +1098,11 @@ typedef struct _ImageStatistics void quantizeTreeDepth ( const unsigned int treeDepth_ ); unsigned int quantizeTreeDepth ( void ) const; + // Apply a color matrix to the image channels. The user supplied + // matrix may be of order 1 to 5 (1x1 through 5x5). + void recolor (const unsigned int order_, + const double *color_matrix_); + // The type of rendering intent void renderingIntent ( const RenderingIntent renderingIntent_ ); RenderingIntent renderingIntent ( void ) const; diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index 7d2b34733..c47d81aad 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -564,6 +564,7 @@ namespace Magick using MagickCore::CoderError; using MagickCore::CoderFatalError; using MagickCore::CoderWarning; + using MagickCore::ColorDecisionListImage; using MagickCore::ColorizeImage; using MagickCore::ColorPacket; using MagickCore::CompositeImage; @@ -748,6 +749,7 @@ namespace Magick using MagickCore::GlobExpression; using MagickCore::GravityAdjustGeometry; using MagickCore::GreaterValue; + using MagickCore::HaldClutImage; using MagickCore::HeightValue; using MagickCore::ImageError; using MagickCore::ImageFatalError; @@ -820,6 +822,7 @@ namespace Magick using MagickCore::RaiseImage; using MagickCore::RandomThresholdImageChannel; using MagickCore::ReadImage; + using MagickCore::RecolorImage; using MagickCore::RectangleInfo; using MagickCore::ReduceNoiseImage; using MagickCore::RegisterMagickInfo; diff --git a/Magick++/lib/Magick++/STL.h b/Magick++/lib/Magick++/STL.h index 432ac49e5..a3262ed59 100644 --- a/Magick++/lib/Magick++/STL.h +++ b/Magick++/lib/Magick++/STL.h @@ -199,6 +199,20 @@ namespace Magick Geometry _geometry; }; + // Accepts a lightweight Color Correction Collection (CCC) file which solely + // contains one or more color corrections and applies the correction to the + // image. + class MagickDLLDecl cdlImage : public std::unary_function + { + public: + cdlImage( const std::string &cdl_ ); + + void operator()( Image &image_ ) const; + + private: + std::string _cdl; + }; + // Colorize image using pen color at specified percent opacity class MagickDLLDecl colorizeImage : public std::unary_function { @@ -314,6 +328,31 @@ namespace Magick private: }; + // Distort image. distorts an image using various distortion methods, by + // mapping color lookups of the source image to a new destination image + // usally of the same size as the source image, unless 'bestfit' is set to + // true. + class MagickDLLDecl distortImage : public std::unary_function + { + public: + distortImage( const Magick::DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_, + const bool bestfit_ ); + + distortImage( const Magick::DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_ ); + + void operator()( Image &image_ ) const; + + private: + DistortImageMethod _method; + unsigned long _number_arguments; + const double *_arguments; + bool _bestfit; + }; + // Draw on image class MagickDLLDecl drawImage : public std::unary_function { @@ -535,6 +574,18 @@ namespace Magick double _sigma; }; + // Apply a color lookup table (Hald CLUT) to the image. + class MagickDLLDecl haldClutImage : public std::unary_function + { + public: + haldClutImage( const Image &haldClutImage_ ); + + void operator()( Image &image_ ) const; + + private: + Image _haldClutImage; + }; + // Implode image (special effect) class MagickDLLDecl implodeImage : public std::unary_function { @@ -787,6 +838,21 @@ namespace Magick bool _raisedFlag; }; + // Apply a color matrix to the image channels. The user supplied + // matrix may be of order 1 to 5 (1x1 through 5x5). + class MagickDLLDecl recolorImage : public std::unary_function + { + public: + recolorImage( const unsigned int order_, + const double *color_matrix_ ); + + void operator()( Image &image_ ) const; + + private: + unsigned int _order; + const double *_color_matrix; + }; + // Reduce noise in image using a noise peak elimination filter class MagickDLLDecl reduceNoiseImage : public std::unary_function { diff --git a/Magick++/lib/STL.cpp b/Magick++/lib/STL.cpp index 7baef8e92..d74b0d183 100644 --- a/Magick++/lib/STL.cpp +++ b/Magick++/lib/STL.cpp @@ -157,6 +157,18 @@ void Magick::chopImage::operator()( Magick::Image &image_ ) const image_.chop( _geometry ); } +// accepts a lightweight Color Correction Collection (CCC) file which solely +// contains one or more color corrections and applies the correction to the +// image. +Magick::cdlImage::cdlImage( const std::string &cdl_ ) + : _cdl ( cdl_ ) +{ +} +void Magick::cdlImage::operator()( Image &image_ ) const +{ + image_.cdl( _cdl.c_str() ); +} + // Colorize image using pen color at specified percent opacity Magick::colorizeImage::colorizeImage( const unsigned int opacityRed_, const unsigned int opacityGreen_, @@ -266,6 +278,34 @@ void Magick::despeckleImage::operator()( Magick::Image &image_ ) const image_.despeckle( ); } +// Distort image. distorts an image using various distortion methods, by +// mapping color lookups of the source image to a new destination image +// usally of the same size as the source image, unless 'bestfit' is set to +// true. +Magick::distortImage::distortImage( const Magick::DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_, + const bool bestfit_ ) + : _method ( method_ ), + _number_arguments ( number_arguments_ ), + _arguments ( arguments_ ), + _bestfit( bestfit_ ) +{ +} +Magick::distortImage::distortImage( const Magick::DistortImageMethod method_, + const unsigned long number_arguments_, + const double *arguments_ ) + : _method ( method_ ), + _number_arguments ( number_arguments_ ), + _arguments ( arguments_ ), + _bestfit( false ) +{ +} +void Magick::distortImage::operator()( Magick::Image &image_ ) const +{ + image_.distort( _method, _number_arguments, _arguments, _bestfit ); +} + // Draw on image Magick::drawImage::drawImage( const Magick::Drawable &drawable_ ) : _drawableList() @@ -520,6 +560,16 @@ void Magick::gaussianBlurImage::operator()( Magick::Image &image_ ) const image_.gaussianBlur( _width, _sigma ); } +// Apply a color lookup table (Hald CLUT) to the image. +Magick::haldClutImage::haldClutImage( const Image &haldClutImage_ ) + : _haldClutImage ( haldClutImage_ ) +{ +} +void Magick::haldClutImage::operator()( Image &image_ ) const +{ + image_.haldClut( _haldClutImage ); +} + // Implode image (special effect) Magick::implodeImage::implodeImage( const double factor_ ) : _factor( factor_ ) @@ -734,6 +784,19 @@ void Magick::raiseImage::operator()( Magick::Image &image_ ) const image_.raise( _geometry, _raisedFlag ); } +// Apply a color matrix to the image channels. The user supplied +// matrix may be of order 1 to 5 (1x1 through 5x5). +Magick::recolorImage::recolorImage( const unsigned int order_, + const double *color_matrix_ ) + : _order( order_ ), + _color_matrix( color_matrix_ ) +{ +} +void Magick::recolorImage::operator()( Image &image_ ) const +{ + image_.recolor( _order, _color_matrix ); +} + // Reduce noise in image using a noise peak elimination filter Magick::reduceNoiseImage::reduceNoiseImage( void ) : _order(3) diff --git a/Makefile.in b/Makefile.in index df972d422..50b4bbb97 100644 --- a/Makefile.in +++ b/Makefile.in @@ -535,7 +535,8 @@ coders_dps_la_OBJECTS = $(am_coders_dps_la_OBJECTS) coders_dps_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(coders_dps_la_LDFLAGS) $(LDFLAGS) -o $@ -@WITH_MODULES_TRUE@am_coders_dps_la_rpath = -rpath $(codersdir) +@DPS_DELEGATE_TRUE@@WITH_MODULES_TRUE@am_coders_dps_la_rpath = -rpath \ +@DPS_DELEGATE_TRUE@@WITH_MODULES_TRUE@ $(codersdir) coders_dpx_la_DEPENDENCIES = $(MAGICKCORE_LIBS) am_coders_dpx_la_OBJECTS = coders/coders_dpx_la-dpx.lo coders_dpx_la_OBJECTS = $(am_coders_dpx_la_OBJECTS) @@ -1383,27 +1384,27 @@ am__magick_libMagickCore_la_SOURCES_DIST = magick/ImageMagick.h \ coders/bmp.c coders/braille.c coders/cals.c coders/caption.c \ coders/cin.c coders/cip.c coders/clip.c coders/cmyk.c \ coders/cut.c coders/dcm.c coders/dds.c coders/dib.c \ - coders/dng.c coders/dot.c coders/dps.c coders/dpx.c \ - coders/fax.c coders/fits.c coders/gif.c coders/gradient.c \ - coders/gray.c coders/hald.c coders/histogram.c coders/hrz.c \ - coders/html.c coders/icon.c coders/info.c coders/inline.c \ - coders/ipl.c coders/label.c coders/magick.c coders/map.c \ - coders/mat.c coders/matte.c coders/meta.c coders/miff.c \ - coders/mono.c coders/mpc.c coders/mpeg.c coders/mpr.c \ - coders/msl.c coders/mtv.c coders/mvg.c coders/null.c \ - coders/otb.c coders/palm.c coders/pattern.c coders/pcd.c \ - coders/pcl.c coders/pcx.c coders/pdb.c coders/pdf.c \ - coders/pict.c coders/pix.c coders/plasma.c coders/pnm.c \ - coders/preview.c coders/ps.c coders/ps2.c coders/ps3.c \ - coders/psd.c coders/pwp.c coders/raw.c coders/rgb.c \ - coders/rla.c coders/rle.c coders/scr.c coders/sct.c \ - coders/sfw.c coders/sgi.c coders/stegano.c coders/sun.c \ - coders/svg.c coders/tga.c coders/thumbnail.c coders/tile.c \ - coders/tim.c coders/ttf.c coders/txt.c coders/uil.c \ - coders/url.c coders/uyvy.c coders/vicar.c coders/vid.c \ - coders/viff.c coders/wbmp.c coders/wpg.c coders/xbm.c \ - coders/xc.c coders/xcf.c coders/xpm.c coders/xps.c \ - coders/ycbcr.c coders/yuv.c coders/djvu.c coders/exr.c \ + coders/dng.c coders/dot.c coders/dpx.c coders/fax.c \ + coders/fits.c coders/gif.c coders/gradient.c coders/gray.c \ + coders/hald.c coders/histogram.c coders/hrz.c coders/html.c \ + coders/icon.c coders/info.c coders/inline.c coders/ipl.c \ + coders/label.c coders/magick.c coders/map.c coders/mat.c \ + coders/matte.c coders/meta.c coders/miff.c coders/mono.c \ + coders/mpc.c coders/mpeg.c coders/mpr.c coders/msl.c \ + coders/mtv.c coders/mvg.c coders/null.c coders/otb.c \ + coders/palm.c coders/pattern.c coders/pcd.c coders/pcl.c \ + coders/pcx.c coders/pdb.c coders/pdf.c coders/pict.c \ + coders/pix.c coders/plasma.c coders/pnm.c coders/preview.c \ + coders/ps.c coders/ps2.c coders/ps3.c coders/psd.c \ + coders/pwp.c coders/raw.c coders/rgb.c coders/rla.c \ + coders/rle.c coders/scr.c coders/sct.c coders/sfw.c \ + coders/sgi.c coders/stegano.c coders/sun.c coders/svg.c \ + coders/tga.c coders/thumbnail.c coders/tile.c coders/tim.c \ + coders/ttf.c coders/txt.c coders/uil.c coders/url.c \ + coders/uyvy.c coders/vicar.c coders/vid.c coders/viff.c \ + coders/wbmp.c coders/wpg.c coders/xbm.c coders/xc.c \ + coders/xcf.c coders/xpm.c coders/xps.c coders/ycbcr.c \ + coders/yuv.c coders/dps.c coders/djvu.c coders/exr.c \ coders/fpx.c coders/clipboard.c coders/emf.c coders/jbig.c \ coders/jpeg.c coders/jp2.c coders/png.c coders/ept.c \ coders/tiff.c coders/wmf.c coders/x.c coders/xwd.c \ @@ -1493,31 +1494,33 @@ am__objects_2 = magick/magick_libMagickCore_la-animate.lo \ @CYGWIN_BUILD_TRUE@@WIN32_NATIVE_BUILD_FALSE@am__objects_3 = magick/magick_libMagickCore_la-nt-feature.lo @WIN32_NATIVE_BUILD_TRUE@am__objects_3 = magick/magick_libMagickCore_la-nt-base.lo \ @WIN32_NATIVE_BUILD_TRUE@ magick/magick_libMagickCore_la-nt-feature.lo -@DJVU_DELEGATE_TRUE@am__objects_4 = \ +@DPS_DELEGATE_TRUE@am__objects_4 = \ +@DPS_DELEGATE_TRUE@ coders/magick_libMagickCore_la-dps.lo +@DJVU_DELEGATE_TRUE@am__objects_5 = \ @DJVU_DELEGATE_TRUE@ coders/magick_libMagickCore_la-djvu.lo -@OPENEXR_DELEGATE_TRUE@am__objects_5 = \ +@OPENEXR_DELEGATE_TRUE@am__objects_6 = \ @OPENEXR_DELEGATE_TRUE@ coders/magick_libMagickCore_la-exr.lo -@FPX_DELEGATE_TRUE@am__objects_6 = \ +@FPX_DELEGATE_TRUE@am__objects_7 = \ @FPX_DELEGATE_TRUE@ coders/magick_libMagickCore_la-fpx.lo -@WINGDI32_DELEGATE_TRUE@am__objects_7 = coders/magick_libMagickCore_la-clipboard.lo \ +@WINGDI32_DELEGATE_TRUE@am__objects_8 = coders/magick_libMagickCore_la-clipboard.lo \ @WINGDI32_DELEGATE_TRUE@ coders/magick_libMagickCore_la-emf.lo -@JBIG_DELEGATE_TRUE@am__objects_8 = \ +@JBIG_DELEGATE_TRUE@am__objects_9 = \ @JBIG_DELEGATE_TRUE@ coders/magick_libMagickCore_la-jbig.lo -@JPEG_DELEGATE_TRUE@am__objects_9 = \ +@JPEG_DELEGATE_TRUE@am__objects_10 = \ @JPEG_DELEGATE_TRUE@ coders/magick_libMagickCore_la-jpeg.lo -@JP2_DELEGATE_TRUE@am__objects_10 = \ +@JP2_DELEGATE_TRUE@am__objects_11 = \ @JP2_DELEGATE_TRUE@ coders/magick_libMagickCore_la-jp2.lo -@PNG_DELEGATE_TRUE@am__objects_11 = \ +@PNG_DELEGATE_TRUE@am__objects_12 = \ @PNG_DELEGATE_TRUE@ coders/magick_libMagickCore_la-png.lo -@TIFF_DELEGATE_TRUE@am__objects_12 = \ +@TIFF_DELEGATE_TRUE@am__objects_13 = \ @TIFF_DELEGATE_TRUE@ coders/magick_libMagickCore_la-ept.lo \ @TIFF_DELEGATE_TRUE@ coders/magick_libMagickCore_la-tiff.lo -@WMF_DELEGATE_TRUE@am__objects_13 = \ +@WMF_DELEGATE_TRUE@am__objects_14 = \ @WMF_DELEGATE_TRUE@ coders/magick_libMagickCore_la-wmf.lo -@X11_DELEGATE_TRUE@am__objects_14 = \ +@X11_DELEGATE_TRUE@am__objects_15 = \ @X11_DELEGATE_TRUE@ coders/magick_libMagickCore_la-x.lo \ @X11_DELEGATE_TRUE@ coders/magick_libMagickCore_la-xwd.lo -am__objects_15 = coders/magick_libMagickCore_la-art.lo \ +am__objects_16 = coders/magick_libMagickCore_la-art.lo \ coders/magick_libMagickCore_la-avi.lo \ coders/magick_libMagickCore_la-avs.lo \ coders/magick_libMagickCore_la-bmp.lo \ @@ -1534,7 +1537,6 @@ am__objects_15 = coders/magick_libMagickCore_la-art.lo \ coders/magick_libMagickCore_la-dib.lo \ coders/magick_libMagickCore_la-dng.lo \ coders/magick_libMagickCore_la-dot.lo \ - coders/magick_libMagickCore_la-dps.lo \ coders/magick_libMagickCore_la-dpx.lo \ coders/magick_libMagickCore_la-fax.lo \ coders/magick_libMagickCore_la-fits.lo \ @@ -1617,11 +1619,11 @@ am__objects_15 = coders/magick_libMagickCore_la-art.lo \ $(am__objects_5) $(am__objects_6) $(am__objects_7) \ $(am__objects_8) $(am__objects_9) $(am__objects_10) \ $(am__objects_11) $(am__objects_12) $(am__objects_13) \ - $(am__objects_14) -am__objects_16 = filters/magick_libMagickCore_la-analyze.lo + $(am__objects_14) $(am__objects_15) +am__objects_17 = filters/magick_libMagickCore_la-analyze.lo @WITH_MODULES_FALSE@am_magick_libMagickCore_la_OBJECTS = \ @WITH_MODULES_FALSE@ $(am__objects_2) $(am__objects_3) \ -@WITH_MODULES_FALSE@ $(am__objects_15) $(am__objects_16) +@WITH_MODULES_FALSE@ $(am__objects_16) $(am__objects_17) @WITH_MODULES_TRUE@am_magick_libMagickCore_la_OBJECTS = \ @WITH_MODULES_TRUE@ $(am__objects_2) $(am__objects_3) magick_libMagickCore_la_OBJECTS = \ @@ -1632,7 +1634,7 @@ magick_libMagickCore_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(LDFLAGS) -o $@ wand_libMagickWand_la_DEPENDENCIES = $(MAGICKCORE_LIBS) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__objects_17 = wand/wand_libMagickWand_la-animate.lo \ +am__objects_18 = wand/wand_libMagickWand_la-animate.lo \ wand/wand_libMagickWand_la-compare.lo \ wand/wand_libMagickWand_la-composite.lo \ wand/wand_libMagickWand_la-conjure.lo \ @@ -1652,7 +1654,7 @@ am__objects_17 = wand/wand_libMagickWand_la-animate.lo \ wand/wand_libMagickWand_la-pixel-wand.lo \ wand/wand_libMagickWand_la-stream.lo \ wand/wand_libMagickWand_la-wand.lo -am_wand_libMagickWand_la_OBJECTS = $(am__objects_17) +am_wand_libMagickWand_la_OBJECTS = $(am__objects_18) wand_libMagickWand_la_OBJECTS = $(am_wand_libMagickWand_la_OBJECTS) wand_libMagickWand_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ @@ -2743,14 +2745,14 @@ ltdl_shl_load_la_LIBADD = $(LIBADD_SHL_LOAD) # Where coder modules get installed codersdir = $(CODER_PATH) +@DPS_DELEGATE_TRUE@MAGICK_DPS_MODULES = coders/dps.la +@DPS_DELEGATE_TRUE@MAGICK_DPS_SRCS = coders/dps.c @DJVU_DELEGATE_TRUE@MAGICK_DJVU_MODULES = coders/djvu.la @DJVU_DELEGATE_TRUE@MAGICK_DJVU_SRCS = coders/djvu.c @OPENEXR_DELEGATE_TRUE@MAGICK_EXR_MODULES = coders/exr.la @OPENEXR_DELEGATE_TRUE@MAGICK_EXR_SRCS = coders/exr.c @FPX_DELEGATE_TRUE@MAGICK_FPX_MODULES = coders/fpx.la @FPX_DELEGATE_TRUE@MAGICK_FPX_SRCS = coders/fpx.c -@WINGDI32_DELEGATE_TRUE@MAGICK_GDI32_MODULES = coders/clipboard.la coders/emf.la -@WINGDI32_DELEGATE_TRUE@MAGICK_GDI32_SRCS = coders/clipboard.c coders/emf.c @JBIG_DELEGATE_TRUE@MAGICK_JBIG_MODULES = coders/jbig.la @JBIG_DELEGATE_TRUE@MAGICK_JBIG_SRCS = coders/jbig.c @JPEG_DELEGATE_TRUE@MAGICK_JPEG_MODULES = coders/jpeg.la @@ -2761,6 +2763,8 @@ codersdir = $(CODER_PATH) @PNG_DELEGATE_TRUE@MAGICK_PNG_SRCS = coders/png.c @TIFF_DELEGATE_TRUE@MAGICK_TIFF_MODULES = coders/ept.la coders/tiff.la @TIFF_DELEGATE_TRUE@MAGICK_TIFF_SRCS = coders/ept.c coders/tiff.c +@WINGDI32_DELEGATE_TRUE@MAGICK_GDI32_MODULES = coders/clipboard.la coders/emf.la +@WINGDI32_DELEGATE_TRUE@MAGICK_GDI32_SRCS = coders/clipboard.c coders/emf.c @WMF_DELEGATE_TRUE@MAGICK_WMF_MODULES = coders/wmf.la @WMF_DELEGATE_TRUE@MAGICK_WMF_SRCS = coders/wmf.c @X11_DELEGATE_TRUE@MAGICK_X11_MODULES = coders/x.la coders/xwd.la @@ -2783,7 +2787,6 @@ MAGICK_CODER_SRCS = \ coders/dib.c \ coders/dng.c \ coders/dot.c \ - coders/dps.c \ coders/dpx.c \ coders/fax.c \ coders/fits.c \ @@ -2863,6 +2866,7 @@ MAGICK_CODER_SRCS = \ coders/xps.c \ coders/ycbcr.c \ coders/yuv.c \ + $(MAGICK_DPS_SRCS) \ $(MAGICK_DJVU_SRCS) \ $(MAGICK_EXR_SRCS) \ $(MAGICK_FPX_SRCS) \ @@ -2894,7 +2898,6 @@ MAGICK_CODER_SRCS = \ @WITH_MODULES_TRUE@ coders/dib.la \ @WITH_MODULES_TRUE@ coders/dng.la \ @WITH_MODULES_TRUE@ coders/dot.la \ -@WITH_MODULES_TRUE@ coders/dps.la \ @WITH_MODULES_TRUE@ coders/dpx.la \ @WITH_MODULES_TRUE@ coders/fax.la \ @WITH_MODULES_TRUE@ coders/fits.la \ @@ -2974,6 +2977,7 @@ MAGICK_CODER_SRCS = \ @WITH_MODULES_TRUE@ coders/xps.la \ @WITH_MODULES_TRUE@ coders/ycbcr.la \ @WITH_MODULES_TRUE@ coders/yuv.la \ +@WITH_MODULES_TRUE@ $(MAGICK_DPS_MODULES) \ @WITH_MODULES_TRUE@ $(MAGICK_DJVU_MODULES) \ @WITH_MODULES_TRUE@ $(MAGICK_EXR_MODULES) \ @WITH_MODULES_TRUE@ $(MAGICK_FPX_MODULES) \ @@ -5583,8 +5587,6 @@ coders/magick_libMagickCore_la-dng.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-dot.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) -coders/magick_libMagickCore_la-dps.lo: coders/$(am__dirstamp) \ - coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-dpx.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-fax.lo: coders/$(am__dirstamp) \ @@ -5743,6 +5745,8 @@ coders/magick_libMagickCore_la-ycbcr.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-yuv.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) +coders/magick_libMagickCore_la-dps.lo: coders/$(am__dirstamp) \ + coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-djvu.lo: coders/$(am__dirstamp) \ coders/$(DEPDIR)/$(am__dirstamp) coders/magick_libMagickCore_la-exr.lo: coders/$(am__dirstamp) \ @@ -9105,14 +9109,6 @@ coders/magick_libMagickCore_la-dot.lo: coders/dot.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/magick_libMagickCore_la-dot.lo `test -f 'coders/dot.c' || echo '$(srcdir)/'`coders/dot.c -coders/magick_libMagickCore_la-dps.lo: coders/dps.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/magick_libMagickCore_la-dps.lo -MD -MP -MF coders/$(DEPDIR)/magick_libMagickCore_la-dps.Tpo -c -o coders/magick_libMagickCore_la-dps.lo `test -f 'coders/dps.c' || echo '$(srcdir)/'`coders/dps.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) coders/$(DEPDIR)/magick_libMagickCore_la-dps.Tpo coders/$(DEPDIR)/magick_libMagickCore_la-dps.Plo -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='coders/dps.c' object='coders/magick_libMagickCore_la-dps.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/magick_libMagickCore_la-dps.lo `test -f 'coders/dps.c' || echo '$(srcdir)/'`coders/dps.c - coders/magick_libMagickCore_la-dpx.lo: coders/dpx.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/magick_libMagickCore_la-dpx.lo -MD -MP -MF coders/$(DEPDIR)/magick_libMagickCore_la-dpx.Tpo -c -o coders/magick_libMagickCore_la-dpx.lo `test -f 'coders/dpx.c' || echo '$(srcdir)/'`coders/dpx.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) coders/$(DEPDIR)/magick_libMagickCore_la-dpx.Tpo coders/$(DEPDIR)/magick_libMagickCore_la-dpx.Plo @@ -9745,6 +9741,14 @@ coders/magick_libMagickCore_la-yuv.lo: coders/yuv.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/magick_libMagickCore_la-yuv.lo `test -f 'coders/yuv.c' || echo '$(srcdir)/'`coders/yuv.c +coders/magick_libMagickCore_la-dps.lo: coders/dps.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/magick_libMagickCore_la-dps.lo -MD -MP -MF coders/$(DEPDIR)/magick_libMagickCore_la-dps.Tpo -c -o coders/magick_libMagickCore_la-dps.lo `test -f 'coders/dps.c' || echo '$(srcdir)/'`coders/dps.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) coders/$(DEPDIR)/magick_libMagickCore_la-dps.Tpo coders/$(DEPDIR)/magick_libMagickCore_la-dps.Plo +@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='coders/dps.c' object='coders/magick_libMagickCore_la-dps.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o coders/magick_libMagickCore_la-dps.lo `test -f 'coders/dps.c' || echo '$(srcdir)/'`coders/dps.c + coders/magick_libMagickCore_la-djvu.lo: coders/djvu.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT coders/magick_libMagickCore_la-djvu.lo -MD -MP -MF coders/$(DEPDIR)/magick_libMagickCore_la-djvu.Tpo -c -o coders/magick_libMagickCore_la-djvu.lo `test -f 'coders/djvu.c' || echo '$(srcdir)/'`coders/djvu.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) coders/$(DEPDIR)/magick_libMagickCore_la-djvu.Tpo coders/$(DEPDIR)/magick_libMagickCore_la-djvu.Plo @@ -10914,7 +10918,7 @@ perl-sources: echo "Linking PerlMagick Sources ..." ; \ imagemagick=`(cd $(VPATH) ; pwd)` && \ ( cd $(PERLMAGICK) && \ - sh $$imagemagick/lndir.sh $$imagemagick/$(PERLMAGICK) ) \ + sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ) \ fi ; \ touch perl-sources diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index 272b1d5b2..a567bbd0c 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -286,6 +286,7 @@ static struct {"encoding", StringReference}, {"affine", ArrayReference}, {"fill-pattern", ImageReference}, {"stroke-pattern", ImageReference}, {"tile", ImageReference}, {"kerning", RealReference}, + {"interline-spacing", RealReference}, {"interword-spacing", RealReference} } }, { "ColorFloodfill", { {"geometry", StringReference}, {"x", IntegerReference}, {"y", IntegerReference}, @@ -319,6 +320,7 @@ static struct {"origin", StringReference}, {"text", StringReference}, {"fill-pattern", ImageReference}, {"stroke-pattern", ImageReference}, {"vector-graphics", StringReference}, {"kerning", RealReference}, + {"interline-spacing", RealReference}, {"interword-spacing", RealReference} } }, { "Equalize", { {"channel", MagickChannelOptions} } }, { "Gamma", { {"gamma", StringReference}, {"channel", MagickChannelOptions}, @@ -7644,7 +7646,9 @@ Mogrify(ref,...) if (attribute_flag[29] != 0) draw_info->kerning=argument_list[29].real_reference; if (attribute_flag[30] != 0) - draw_info->interword_spacing=argument_list[30].real_reference; + draw_info->interline_spacing=argument_list[30].real_reference; + if (attribute_flag[31] != 0) + draw_info->interword_spacing=argument_list[31].real_reference; (void) AnnotateImage(image,draw_info); draw_info=DestroyDrawInfo(draw_info); break; @@ -8142,7 +8146,9 @@ Mogrify(ref,...) if (attribute_flag[29] != 0) draw_info->kerning=argument_list[29].real_reference; if (attribute_flag[30] != 0) - draw_info->interword_spacing=argument_list[30].real_reference; + draw_info->interline_spacing=argument_list[30].real_reference; + if (attribute_flag[31] != 0) + draw_info->interword_spacing=argument_list[31].real_reference; DrawImage(image,draw_info); draw_info=DestroyDrawInfo(draw_info); break; @@ -11354,6 +11360,12 @@ QueryFontMetrics(ref,...) case 'i': case 'I': { + if (LocaleCompare(attribute,"interline-spacing") == 0) + { + flags=ParseGeometry(SvPV(ST(i),na),&geometry_info); + draw_info->interline_spacing=geometry_info.rho; + break; + } if (LocaleCompare(attribute,"interword-spacing") == 0) { flags=ParseGeometry(SvPV(ST(i),na),&geometry_info); diff --git a/PerlMagick/Makefile.am b/PerlMagick/Makefile.am index e23951cb0..85ac09574 100644 --- a/PerlMagick/Makefile.am +++ b/PerlMagick/Makefile.am @@ -22,7 +22,7 @@ perl-sources: echo "Linking PerlMagick Sources ..." ; \ imagemagick=`(cd $(VPATH) ; pwd)` && \ ( cd $(PERLMAGICK) && \ - sh $$imagemagick/lndir.sh $$imagemagick/$(PERLMAGICK) ) \ + sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ) \ fi ; \ touch perl-sources diff --git a/PerlMagick/demo/pixel_fx.pl b/PerlMagick/demo/pixel_fx.pl index 00b855317..7569d66e9 100755 --- a/PerlMagick/demo/pixel_fx.pl +++ b/PerlMagick/demo/pixel_fx.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl # -# Example of Modifying all the pixels in an image (like -fx) +# Example of modifying all the pixels in an image (like -fx). # # Currently this is slow as each pixel is being one one by one. The better # technique of extracting and modifing a whole row of pixels at a time has not diff --git a/coders/Makefile.am b/coders/Makefile.am index fb10ecd2f..6ce099941 100644 --- a/coders/Makefile.am +++ b/coders/Makefile.am @@ -19,6 +19,11 @@ # Where coder modules get installed codersdir = $(CODER_PATH) +if DPS_DELEGATE +MAGICK_DPS_MODULES = coders/dps.la +MAGICK_DPS_SRCS = coders/dps.c +endif + if DJVU_DELEGATE MAGICK_DJVU_MODULES = coders/djvu.la MAGICK_DJVU_SRCS = coders/djvu.c @@ -34,11 +39,6 @@ MAGICK_FPX_MODULES = coders/fpx.la MAGICK_FPX_SRCS = coders/fpx.c endif -if WINGDI32_DELEGATE -MAGICK_GDI32_MODULES = coders/clipboard.la coders/emf.la -MAGICK_GDI32_SRCS = coders/clipboard.c coders/emf.c -endif - if JBIG_DELEGATE MAGICK_JBIG_MODULES = coders/jbig.la MAGICK_JBIG_SRCS = coders/jbig.c @@ -64,6 +64,11 @@ MAGICK_TIFF_MODULES = coders/ept.la coders/tiff.la MAGICK_TIFF_SRCS = coders/ept.c coders/tiff.c endif +if WINGDI32_DELEGATE +MAGICK_GDI32_MODULES = coders/clipboard.la coders/emf.la +MAGICK_GDI32_SRCS = coders/clipboard.c coders/emf.c +endif + if WMF_DELEGATE MAGICK_WMF_MODULES = coders/wmf.la MAGICK_WMF_SRCS = coders/wmf.c @@ -92,7 +97,6 @@ MAGICK_CODER_SRCS = \ coders/dib.c \ coders/dng.c \ coders/dot.c \ - coders/dps.c \ coders/dpx.c \ coders/fax.c \ coders/fits.c \ @@ -172,6 +176,7 @@ MAGICK_CODER_SRCS = \ coders/xps.c \ coders/ycbcr.c \ coders/yuv.c \ + $(MAGICK_DPS_SRCS) \ $(MAGICK_DJVU_SRCS) \ $(MAGICK_EXR_SRCS) \ $(MAGICK_FPX_SRCS) \ @@ -203,7 +208,6 @@ coders_LTLIBRARIES = \ coders/dib.la \ coders/dng.la \ coders/dot.la \ - coders/dps.la \ coders/dpx.la \ coders/fax.la \ coders/fits.la \ @@ -283,6 +287,7 @@ coders_LTLIBRARIES = \ coders/xps.la \ coders/ycbcr.la \ coders/yuv.la \ + $(MAGICK_DPS_MODULES) \ $(MAGICK_DJVU_MODULES) \ $(MAGICK_EXR_MODULES) \ $(MAGICK_FPX_MODULES) \ diff --git a/coders/dpx.c b/coders/dpx.c index bb84e2e5c..69167d146 100644 --- a/coders/dpx.c +++ b/coders/dpx.c @@ -1154,7 +1154,7 @@ static Image *ReadDPXImage(const ImageInfo *image_info,ExceptionInfo *exception) SetQuantumPack(quantum_info,dpx.image.image_element[0].packing == 0 ? MagickTrue : MagickFalse); image_view=AcquireCacheView(image); -#if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP >= 200805) +#if defined(MAGICKCORE_OPENMP_SUPPORT) && (_OPENMP > 200505) #pragma omp parallel for schedule(dynamic,1) shared(row,status,quantum_type) #endif for (y=0; y < (long) image->rows; y++) diff --git a/coders/pcl.c b/coders/pcl.c index 07ef2fcda..dfad73595 100644 --- a/coders/pcl.c +++ b/coders/pcl.c @@ -352,7 +352,7 @@ static Image *ReadPCLImage(const ImageInfo *image_info,ExceptionInfo *exception) read_info->antialias != MagickFalse ? 4 : 1, read_info->antialias != MagickFalse ? 4 : 1,density,options, read_info->filename,input_filename); - status=SystemCommand(read_info->verbose,command) != 0 ? MagickTrue : + status=SystemCommand(read_info->verbose,command,exception) != 0 ? MagickTrue : MagickFalse; image=ReadImage(read_info,exception); (void) RelinquishUniqueFileResource(read_info->filename); diff --git a/coders/pdf.c b/coders/pdf.c index 81aa097ee..f42a5051d 100644 --- a/coders/pdf.c +++ b/coders/pdf.c @@ -102,7 +102,8 @@ static MagickBooleanType % The format of the InvokePostscriptDelegate method is: % % MagickBooleanType InvokePostscriptDelegate( -% const MagickBooleanType verbose,const char *command) +% const MagickBooleanType verbose,const char *command, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -112,10 +113,15 @@ static MagickBooleanType % o command: the address of a character string containing the command to % execute. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType InvokePostscriptDelegate( - const MagickBooleanType verbose,const char *command) + const MagickBooleanType verbose,const char *command,ExceptionInfo *exception) { + int + status; + #if defined(MAGICKCORE_GS_DELEGATE) || defined(__WINDOWS__) char **argv; @@ -128,8 +134,7 @@ static MagickBooleanType InvokePostscriptDelegate( int argc, - code, - status; + code; register long i; @@ -153,7 +158,10 @@ static MagickBooleanType InvokePostscriptDelegate( gs_func_struct.exit=(int (*)(gs_main_instance *)) gsapi_exit; #endif if (gs_func == (GhostscriptVectors *) NULL) - return(SystemCommand(verbose,command) == 0 ? MagickFalse : MagickTrue); + { + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); + } if (verbose != MagickFalse) { (void) fputs("[ghostscript library]",stdout); @@ -161,7 +169,10 @@ static MagickBooleanType InvokePostscriptDelegate( } status=(gs_func->new_instance)(&interpreter,(void *) NULL); if (status < 0) - return(SystemCommand(verbose,command) == 0 ? MagickFalse : MagickTrue); + { + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); + } argv=StringToArgv(command,&argc); status=(gs_func->init_with_args)(interpreter,argc-1,argv+1); if (status == 0) @@ -176,12 +187,22 @@ static MagickBooleanType InvokePostscriptDelegate( argv[i]=DestroyString(argv[i]); argv=(char **) RelinquishMagickMemory(argv); if ((status == 0) || (status == -101)) - return(MagickFalse); + { + char + *message; + + message=GetExceptionMessage(errno); + (void) ThrowMagickException(exception,GetMagickModule(),DelegateError, + "`%s': %s",command,message); + message=DestroyString(message); + return(MagickFalse); + } (void) LogMagickEvent(CoderEvent,GetMagickModule(), "Ghostscript returns status %d, exit code %d",status,code); return(MagickTrue); #else - return(SystemCommand(verbose,command) != 0 ? MagickTrue : MagickFalse); + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); #endif } @@ -544,10 +565,11 @@ static Image *ReadPDFImage(const ImageInfo *image_info,ExceptionInfo *exception) if (cmyk != MagickFalse) delegate_info=GetDelegateInfo("ps:cmyk",(char *) NULL,exception); else - if (LocaleCompare(image_info->magick,"AI") == 0) - delegate_info=GetDelegateInfo("ps:alpha",(char *) NULL,exception); - else - delegate_info=GetDelegateInfo("ps:color",(char *) NULL,exception); +#if defined(MAGICKCORE_PNG_DELEGATE) + delegate_info=GetDelegateInfo("ps:alpha",(char *) NULL,exception); +#else + delegate_info=GetDelegateInfo("ps:color",(char *) NULL,exception); +#endif if (delegate_info == (const DelegateInfo *) NULL) { (void) RelinquishUniqueFileResource(postscript_filename); @@ -596,7 +618,7 @@ static Image *ReadPDFImage(const ImageInfo *image_info,ExceptionInfo *exception) read_info->antialias != MagickFalse ? 4 : 1, read_info->antialias != MagickFalse ? 4 : 1,density,options, read_info->filename,postscript_filename,input_filename); - status=InvokePostscriptDelegate(read_info->verbose,command); + status=InvokePostscriptDelegate(read_info->verbose,command,exception); pdf_image=(Image *) NULL; if ((status == MagickFalse) && (IsPDFRendered(read_info->filename) != MagickFalse)) diff --git a/coders/png.c b/coders/png.c index e0fa7b764..ef2947604 100644 --- a/coders/png.c +++ b/coders/png.c @@ -2619,7 +2619,8 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, } quantum_scanline=(Quantum *) RelinquishMagickMemory(quantum_scanline); } - quantum_info=DestroyQuantumInfo(quantum_info); + if (quantum_info != (QuantumInfo *) NULL) + quantum_info=DestroyQuantumInfo(quantum_info); if (image->storage_class == PseudoClass) (void) SyncImage(image); png_read_end(ping,ping_info); @@ -7595,7 +7596,8 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, } } } - quantum_info=DestroyQuantumInfo(quantum_info); + if (quantum_info != (QuantumInfo *) NULL) + quantum_info=DestroyQuantumInfo(quantum_info); if (logging != MagickFalse) { diff --git a/coders/ps.c b/coders/ps.c index fbba1392c..f69f0d904 100644 --- a/coders/ps.c +++ b/coders/ps.c @@ -96,7 +96,8 @@ static MagickBooleanType % The format of the InvokePostscriptDelegate method is: % % MagickBooleanType InvokePostscriptDelegate( -% const MagickBooleanType verbose,const char *command) +% const MagickBooleanType verbose,const char *command, +% ExceptionInfo *exception) % % A description of each parameter follows: % @@ -106,10 +107,15 @@ static MagickBooleanType % o command: the address of a character string containing the command to % execute. % +% o exception: return any errors or warnings in this structure. +% */ static MagickBooleanType InvokePostscriptDelegate( - const MagickBooleanType verbose,const char *command) + const MagickBooleanType verbose,const char *command,ExceptionInfo *exception) { + int + status; + #if defined(MAGICKCORE_GS_DELEGATE) || defined(__WINDOWS__) char **argv; @@ -122,8 +128,7 @@ static MagickBooleanType InvokePostscriptDelegate( int argc, - code, - status; + code; register long i; @@ -147,7 +152,10 @@ static MagickBooleanType InvokePostscriptDelegate( gs_func_struct.exit=(int (*)(gs_main_instance *)) gsapi_exit; #endif if (gs_func == (GhostscriptVectors *) NULL) - return(SystemCommand(verbose,command) == 0 ? MagickFalse : MagickTrue); + { + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); + } if (verbose != MagickFalse) { (void) fputs("[ghostscript library]",stdout); @@ -155,7 +163,10 @@ static MagickBooleanType InvokePostscriptDelegate( } status=(gs_func->new_instance)(&interpreter,(void *) NULL); if (status < 0) - return(SystemCommand(verbose,command) == 0 ? MagickFalse : MagickTrue); + { + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); + } argv=StringToArgv(command,&argc); status=(gs_func->init_with_args)(interpreter,argc-1,argv+1); if (status == 0) @@ -170,12 +181,22 @@ static MagickBooleanType InvokePostscriptDelegate( argv[i]=DestroyString(argv[i]); argv=(char **) RelinquishMagickMemory(argv); if ((status == 0) || (status == -101)) - return(MagickFalse); + { + char + *message; + + message=GetExceptionMessage(errno); + (void) ThrowMagickException(exception,GetMagickModule(),DelegateError, + "`%s': %s",command,message); + message=DestroyString(message); + return(MagickFalse); + } (void) LogMagickEvent(CoderEvent,GetMagickModule(), "Ghostscript returns status %d, exit code %d",status,code); return(MagickTrue); #else - return(SystemCommand(verbose,command) != 0 ? MagickTrue : MagickFalse); + status=SystemCommand(verbose,command,exception); + return(status != 0 ? MagickTrue : MagickFalse); #endif } @@ -677,10 +698,11 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception) if (cmyk != MagickFalse) delegate_info=GetDelegateInfo("ps:cmyk",(char *) NULL,exception); else - if (pages == 1) - delegate_info=GetDelegateInfo("ps:alpha",(char *) NULL,exception); - else - delegate_info=GetDelegateInfo("ps:color",(char *) NULL,exception); +#if defined(MAGICKCORE_PNG_DELEGATE) + delegate_info=GetDelegateInfo("ps:alpha",(char *) NULL,exception); +#else + delegate_info=GetDelegateInfo("ps:color",(char *) NULL,exception); +#endif if (delegate_info == (const DelegateInfo *) NULL) { (void) RelinquishUniqueFileResource(postscript_filename); @@ -723,12 +745,12 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception) read_info->antialias != MagickFalse ? 4 : 1, read_info->antialias != MagickFalse ? 4 : 1,density,options, read_info->filename,postscript_filename,input_filename); - status=InvokePostscriptDelegate(read_info->verbose,command); + status=InvokePostscriptDelegate(read_info->verbose,command,exception); if ((status != MagickFalse) || (IsPostscriptRendered(read_info->filename) == MagickFalse)) { (void) ConcatenateMagickString(command," -c showpage",MaxTextExtent); - status=InvokePostscriptDelegate(read_info->verbose,command); + status=InvokePostscriptDelegate(read_info->verbose,command,exception); } postscript_image=(Image *) NULL; if (status == MagickFalse) diff --git a/coders/xps.c b/coders/xps.c index e139697f0..3421641d9 100644 --- a/coders/xps.c +++ b/coders/xps.c @@ -309,7 +309,7 @@ static Image *ReadXPSImage(const ImageInfo *image_info,ExceptionInfo *exception) read_info->antialias != MagickFalse ? 4 : 1, read_info->antialias != MagickFalse ? 4 : 1,density,options, read_info->filename,input_filename); - status=SystemCommand(read_info->verbose,command) != 0 ? MagickTrue : + status=SystemCommand(read_info->verbose,command,exception) != 0 ? MagickTrue : MagickFalse; image=ReadImage(read_info,exception); (void) RelinquishUniqueFileResource(read_info->filename); diff --git a/config/configure.xml b/config/configure.xml index 861245391..dc3c99ef8 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -8,8 +8,8 @@ - - + + diff --git a/index.html b/index.html index 81dca951e..6421d86b4 100644 --- a/index.html +++ b/index.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Convert, Edit, and Compose Images @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+
@@ -206,22 +206,22 @@

To join the ImageMagick user community, try the discourse server or mailing lists. Both permit you to review questions or comments (with informed responses) posed by ImageMagick users as well as an opportunity to ask your own questions.

- -
- - - -
- - + +
+ + + +
+ + diff --git a/libtool b/libtool index 46183dd72..c3c09755e 100755 --- a/libtool +++ b/libtool @@ -1,7 +1,7 @@ #! /bin/sh # libtool - Provide generalized library-building support services. -# Generated automatically by config.status (ImageMagick) 6.5.5-7 +# Generated automatically by config.status (ImageMagick) 6.5.5-8 # Libtool was configured on host magick.imagemagick.org: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # diff --git a/magick/annotate.c b/magick/annotate.c index bb0933ef8..2890ab995 100644 --- a/magick/annotate.c +++ b/magick/annotate.c @@ -164,6 +164,9 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, primitive[MaxTextExtent], **textlist; + double + height; + DrawInfo *annotate, *annotate_info; @@ -190,7 +193,6 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, metrics; unsigned long - height, number_lines; assert(image != (Image *) NULL); @@ -233,7 +235,9 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, annotate_info->affine.ty=geometry_info.psi-image->page.y; (void) CloneString(&annotate->text,textlist[i]); (void) GetTypeMetrics(image,annotate,&metrics); - height=(unsigned long) (metrics.ascent-metrics.descent+0.5); + height=metrics.height; + if (draw_info->interline_spacing != 0.0) + height+=draw_info->interline_spacing; switch (annotate->gravity) { case UndefinedGravity: @@ -393,7 +397,7 @@ MagickExport MagickBooleanType AnnotateImage(Image *image, undercolor_info->affine.tx=offset.x-draw_info->affine.ry*metrics.ascent; undercolor_info->affine.ty=offset.y-draw_info->affine.sy*metrics.ascent; (void) FormatMagickString(primitive,MaxTextExtent, - "rectangle 0,0 %g,%ld",metrics.origin.x,height); + "rectangle 0,0 %g,%g",metrics.origin.x,height); (void) CloneString(&undercolor_info->primitive,primitive); (void) DrawImage(image,undercolor_info); (void) DestroyDrawInfo(undercolor_info); diff --git a/magick/cache-private.h b/magick/cache-private.h index 3ce29345b..37866dcbf 100644 --- a/magick/cache-private.h +++ b/magick/cache-private.h @@ -192,6 +192,9 @@ extern MagickExport Cache GetImagePixelCache(Image *,const MagickBooleanType,ExceptionInfo *), ReferencePixelCache(Cache); +extern MagickExport CacheType + GetPixelCacheType(const Image *); + extern MagickExport ClassType GetPixelCacheStorageClass(const Cache); @@ -229,6 +232,7 @@ extern MagickExport PixelPacket extern MagickExport void ClonePixelCacheMethods(Cache,const Cache), + GetPixelCacheTileSize(const Image *,unsigned long *,unsigned long *), GetPixelCacheMethods(CacheMethods *), SetPixelCacheMethods(Cache,CacheMethods *); diff --git a/magick/cache.c b/magick/cache.c index f1877938e..80b746622 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -2692,7 +2692,7 @@ MagickExport PixelPacket *GetPixelCacheNexusPixels(const Cache cache, % % % % % % -+ G e t P i x e l C a c h e S t o r a e C l a s s % ++ G e t P i x e l C a c h e S t o r a g e C l a s s % % % % % % % @@ -2730,6 +2730,89 @@ MagickExport ClassType GetPixelCacheStorageClass(const Cache cache) % % % % % % ++ G e t P i x e l C a c h e T i l e S i z e % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% GetPixelCacheTileSize() returns the pixel cache tile size. +% +% The format of the GetPixelCacheTileSize() method is: +% +% void GetPixelCacheTileSize(const Image *image,unsigned long *width, +% unsigned long *height) +% +% A description of each parameter follows: +% +% o image: the image. +% +% o width: the optimize cache tile width in pixels. +% +% o height: the optimize cache tile height in pixels. +% +*/ +MagickExport void GetPixelCacheTileSize(const Image *image,unsigned long *width, + unsigned long *height) +{ + CacheInfo + *cache_info; + + assert(image != (Image *) NULL); + assert(image->signature == MagickSignature); + if (image->debug != MagickFalse) + (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); + assert(image->cache != (Cache) NULL); + cache_info=(CacheInfo *) image->cache; + assert(cache_info->signature == MagickSignature); + *width=2048UL/sizeof(PixelPacket); + if (GetPixelCacheType(image) == DiskCache) + *width=8196UL/sizeof(PixelPacket); + *height=(*width); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % ++ G e t P i x e l C a c h e T y p e % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% GetPixelCacheType() returns the pixel cache type (e.g. memory, disk, etc.). +% +% The format of the GetPixelCacheType() method is: +% +% CacheType GetPixelCacheType(const Image *image) +% +% A description of each parameter follows: +% +% o image: the image. +% +*/ +MagickExport CacheType GetPixelCacheType(const Image *image) +{ + CacheInfo + *cache_info; + + assert(image != (Image *) NULL); + assert(image->signature == MagickSignature); + if (image->debug != MagickFalse) + (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); + assert(image->cache != (Cache) NULL); + cache_info=(CacheInfo *) image->cache; + assert(cache_info->signature == MagickSignature); + return(cache_info->type); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + G e t P i x e l C a c h e V i r t u a l M e t h o d % % % % % diff --git a/magick/delegate.c b/magick/delegate.c index b9f9a9446..416d244da 100644 --- a/magick/delegate.c +++ b/magick/delegate.c @@ -1008,8 +1008,8 @@ MagickExport MagickBooleanType InvokeDelegate(ImageInfo *image_info, */ if (delegate_info->spawn != MagickFalse) (void) ConcatenateString(&command," &"); - status=SystemCommand(image_info->verbose,command) != 0 ? MagickTrue : - MagickFalse; + status=SystemCommand(image_info->verbose,command,exception) != 0 ? + MagickTrue : MagickFalse; if (delegate_info->spawn != MagickFalse) (void) sleep(2); command=DestroyString(command); diff --git a/magick/draw.c b/magick/draw.c index 95f145680..193a325c0 100644 --- a/magick/draw.c +++ b/magick/draw.c @@ -287,6 +287,7 @@ MagickExport DrawInfo *CloneDrawInfo(const ImageInfo *image_info, (void) CloneString(&clone_info->encoding,draw_info->encoding); clone_info->pointsize=draw_info->pointsize; clone_info->kerning=draw_info->kerning; + clone_info->interline_spacing=draw_info->interline_spacing; clone_info->interword_spacing=draw_info->interword_spacing; if (draw_info->density != (char *) NULL) (void) CloneString(&clone_info->density,draw_info->density); @@ -2152,6 +2153,12 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info) graphic_context[n]->compose=(CompositeOperator) compose; break; } + if (LocaleCompare("interline-spacing",keyword) == 0) + { + GetMagickToken(q,&q,token); + graphic_context[n]->interline_spacing=atof(token); + break; + } if (LocaleCompare("interword-spacing",keyword) == 0) { GetMagickToken(q,&q,token); @@ -3617,115 +3624,69 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, const FillRule fill_rule,const long x,const long y, MagickRealType *stroke_opacity) { - long - highwater, - j, - k, - number_edges, - number_points, + int winding_number; - MagickBooleanType - quest; + long + j; MagickRealType + alpha, + beta, distance, - midpoint, subpath_opacity; PointInfo - current_point, - delta, - point, - previous_point; - - register const PointInfo - *q; + delta; register EdgeInfo *p; + register const PointInfo + *q; + register long i; - register MagickRealType - alpha, - beta; - - SegmentInfo - edge, - bounds; - /* Compute fill & stroke opacity for this (x,y) point. */ *stroke_opacity=0.0; subpath_opacity=0.0; - winding_number=0; - quest=MagickTrue; - point.x=(MagickRealType) x; - point.y=(MagickRealType) y; - edge.x1=0.0; - edge.y1=0.0; - edge.x2=0.0; - edge.y2=0.0; p=polygon_info->edges; - number_edges=(long) polygon_info->number_edges; - midpoint=mid+0.5; - for (j=0; j < number_edges; j++, p++) + for (j=0; j < (long) polygon_info->number_edges; j++, p++) { - bounds=p->bounds; - if (point.y <= (bounds.y1-midpoint)) + if (y <= (p->bounds.y1-mid-0.5)) break; - if (point.y > (bounds.y2+midpoint-MagickEpsilon)) + if (y > (p->bounds.y2+mid+0.5)) { - (void) DestroyEdge(polygon_info,(unsigned long) j); - number_edges=(long) polygon_info->number_edges; + (void) DestroyEdge(polygon_info,j); continue; } - if (point.y <= bounds.y1) - quest=MagickFalse; - else - if ((quest != MagickFalse) && (point.y <= bounds.y2) && - (point.x > bounds.x1) && (point.x > bounds.x2)) - winding_number+=p->direction != 0 ? 1 : -1; - if ((point.x <= (bounds.x1-midpoint)) || - (point.x > (bounds.x2+midpoint-MagickEpsilon))) + if ((x <= (p->bounds.x1-mid-0.5)) || (x > (p->bounds.x2+mid+0.5))) continue; - highwater=(long) MagickMax((double) p->highwater,1.0); - number_points=(long) p->number_points; - k=highwater-1; - current_point.y=p->points[k].y; - for (i=highwater; i < number_points; i++) + for (i=MagickMax(p->highwater,1); i < (long) p->number_points; i++) { - previous_point.y=current_point.y; - current_point.y=p->points[i].y; - if (point.y < (previous_point.y-midpoint)) + if (y <= (p->points[i-1].y-mid-0.5)) break; - if (point.y > (current_point.y+midpoint-MagickEpsilon)) + if (y > (p->points[i].y+mid+0.5)) continue; - q=p->points+i-1; - edge.x1=q->x; - edge.y1=q->y; - edge.x2=(q+1)->x; - edge.y2=(q+1)->y; - k=i; - if (p->scanline != point.y) + if (p->scanline != y) { - p->scanline=point.y; - p->highwater=(unsigned long) i; - highwater=i; + p->scanline=y; + p->highwater=i; } /* Compute distance between a point and an edge. */ - delta.x=edge.x2-edge.x1; - delta.y=edge.y2-edge.y1; - beta=delta.x*(point.x-edge.x1)+delta.y*(point.y-edge.y1); + q=p->points+i-1; + delta.x=(q+1)->x-q->x; + delta.y=(q+1)->y-q->y; + beta=delta.x*(x-q->x)+delta.y*(y-q->y); if (beta < 0.0) { - delta.x=point.x-edge.x1; - delta.y=point.y-edge.y1; + delta.x=x-q->x; + delta.y=y-q->y; distance=delta.x*delta.x+delta.y*delta.y; } else @@ -3733,14 +3694,15 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, alpha=delta.x*delta.x+delta.y*delta.y; if (beta > alpha) { - delta.x=point.x-edge.x2; - delta.y=point.y-edge.y2; + delta.x=x-(q+1)->x; + delta.y=y-(q+1)->y; distance=delta.x*delta.x+delta.y*delta.y; } else { - beta=delta.x*(point.y-edge.y1)-delta.y*(point.x-edge.x1); - distance=beta*beta/alpha; + alpha=1.0/alpha; + beta=delta.x*(y-q->y)-delta.y*(x-q->x); + distance=alpha*beta*beta; } } /* @@ -3749,7 +3711,7 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, beta=0.0; if (p->ghostline == MagickFalse) { - alpha=midpoint; + alpha=mid+0.5; if ((*stroke_opacity < 1.0) && (distance <= ((alpha+0.25)*(alpha+0.25)))) { @@ -3761,7 +3723,7 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, beta=1.0; if (distance != 1.0) beta=sqrt((double) distance); - alpha=beta-midpoint; + alpha=beta-mid-0.5; if (*stroke_opacity < ((alpha-0.25)*(alpha-0.25))) *stroke_opacity=(alpha-0.25)*(alpha-0.25); } @@ -3780,32 +3742,12 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, { beta=1.0; if (distance != 1.0) - beta=sqrt((double) distance); + beta=sqrt(distance); } alpha=beta-1.0; - if (subpath_opacity < (alpha*alpha-MagickEpsilon)) + if (subpath_opacity < (alpha*alpha)) subpath_opacity=alpha*alpha; } - /* - Determine winding number. - */ - if ((quest == MagickFalse) || (point.y > bounds.y2) || - (point.x <= bounds.x1) || (point.x > bounds.x2)) - continue; - for (i=highwater; i < number_points; i++) - if (point.y <= p->points[i].y) - break; - if (i != k) - { - q=p->points+i-1; - edge.x1=q->x; - edge.y1=q->y; - edge.x2=(q+1)->x; - edge.y2=(q+1)->y; - } - if (((edge.x2-edge.x1)*(point.y-edge.y1)) <= - ((edge.y2-edge.y1)*(point.x-edge.x1))) - winding_number+=p->direction != 0 ? 1 : -1; } /* Compute fill opacity. @@ -3814,6 +3756,29 @@ static MagickRealType GetPixelOpacity(PolygonInfo *polygon_info, return(0.0); if (subpath_opacity >= 1.0) return(1.0); + /* + Determine winding number. + */ + winding_number=0; + p=polygon_info->edges; + for (j=0; j < (long) polygon_info->number_edges; j++, p++) + { + if (y <= p->bounds.y1) + break; + if ((y > p->bounds.y2) || (x <= p->bounds.x1)) + continue; + if (x > p->bounds.x2) + { + winding_number+=p->direction ? 1 : -1; + continue; + } + for (i=MagickMax(p->highwater,1); i < (long) p->number_points; i++) + if (y <= p->points[i].y) + break; + q=p->points+i-1; + if ((((q+1)->x-q->x)*(y-q->y)) <= (((q+1)->y-q->y)*(x-q->x))) + winding_number+=p->direction ? 1 : -1; + } if (fill_rule != NonZeroRule) { if ((MagickAbsoluteValue(winding_number) & 0x01) != 0) @@ -4196,6 +4161,10 @@ MagickExport MagickBooleanType DrawPrimitive(Image *image, PixelPacket *q; + if ((y < 0) || (y >= (long) image->rows)) + break; + if ((x < 0) || (x >= (long) image->columns)) + break; q=GetCacheViewAuthenticPixels(image_view,x,y,1,1,exception); if (q == (PixelPacket *) NULL) break; @@ -4795,6 +4764,9 @@ MagickExport void GetDrawInfo(const ImageInfo *image_info,DrawInfo *draw_info) option=GetImageOption(clone_info,"kerning"); if (option != (const char *) NULL) draw_info->kerning=atof(option); + option=GetImageOption(clone_info,"interline-spacing"); + if (option != (const char *) NULL) + draw_info->interline_spacing=atof(option); option=GetImageOption(clone_info,"interword-spacing"); if (option != (const char *) NULL) draw_info->interword_spacing=atof(option); diff --git a/magick/draw.h b/magick/draw.h index 909812774..c1a16758b 100644 --- a/magick/draw.h +++ b/magick/draw.h @@ -318,7 +318,8 @@ typedef struct _DrawInfo double kerning, - interword_spacing; + interword_spacing, + interline_spacing; } DrawInfo; typedef struct _PrimitiveInfo diff --git a/magick/monitor.c b/magick/monitor.c index 092c9195d..65fab864f 100644 --- a/magick/monitor.c +++ b/magick/monitor.c @@ -61,7 +61,7 @@ % monitor method looks like this: % % MagickBooleanType MagickProgressMonitor(const char *text, -% const MagickOffsetType offset,const MagickSizeType span, +% const MagickOffsetType offset,const MagickSizeType extent, % void *client_data) % % If the progress monitor returns MagickFalse, the current operation is @@ -110,7 +110,7 @@ MagickExport MagickProgressMonitor SetImageProgressMonitor(Image *image, % progress monitor method looks like this: % % MagickBooleanType MagickProgressMonitor(const char *text, -% const MagickOffsetType offset,const MagickSizeType span, +% const MagickOffsetType offset,const MagickSizeType extent, % void *client_data) % % If the progress monitor returns MagickFalse, the current operation is diff --git a/magick/nt-base.c b/magick/nt-base.c index c46b94aa9..5b6cbb2ae 100644 --- a/magick/nt-base.c +++ b/magick/nt-base.c @@ -962,7 +962,7 @@ static int NTGetLatestGhostscript( void ) int count, i, - gsver, + version, *ver; DWORD version = GetVersion(); @@ -982,13 +982,13 @@ static int NTGetLatestGhostscript( void ) ver=(int *) RelinquishMagickMemory(ver); return FALSE; } - gsver = 0; + version = 0; for (i=1; i<=ver[0]; i++) { - if (ver[i] > gsver) - gsver = ver[i]; + if (ver[i] > version) + version = ver[i]; } ver=(int *) RelinquishMagickMemory(ver); - return(gsver); + return(version); } @@ -1020,17 +1020,17 @@ static int NTGetLatestGhostscript( void ) MagickExport int NTGhostscriptDLL(char *path, int length) { int - gsver; + version; char buf[256]; *path='\0'; - gsver = NTGetLatestGhostscript(); - if ((gsver == FALSE) || (gsver < GS_MINIMUM_VERSION)) + version = NTGetLatestGhostscript(); + if ((version == FALSE) || (version < GS_MINIMUM_VERSION)) return FALSE; - if (!NTGhostscriptGetString(gsver, "GS_DLL", buf, sizeof(buf))) + if (!NTGhostscriptGetString(version, "GS_DLL", buf, sizeof(buf))) return FALSE; (void) CopyMagickString(path,buf,length+1); @@ -1085,36 +1085,34 @@ MagickExport const GhostscriptVectors *NTGhostscriptDLLVectors( void ) % % A description of each parameter follows: % -% o path: Pointer to buffer in which to return result. +% o path: pointer to buffer in which to return result. % -% o length: Length of buffer +% o length: length of buffer. % */ MagickExport int NTGhostscriptEXE(char *path,int length) { - int - gsver; - char - buf[256], + buffer[MaxTexytExtent], *p; + int + version; + (void) CopyMagickString(path,"gswin32c.exe",length); - gsver=NTGetLatestGhostscript(); - if ((gsver == FALSE) || (gsver < GS_MINIMUM_VERSION)) + version=NTGetLatestGhostscript(); + if ((version == FALSE) || (version < GS_MINIMUM_VERSION)) return(FALSE); - if (!NTGhostscriptGetString(gsver, "GS_DLL", buf, sizeof(buf))) + if (NTGhostscriptGetString(version,"GS_DLL",buffer,sizeof(buffer)) == 0) return(FALSE); - p=strrchr(buf, '\\'); - if (p) { - p++; - *p = 0; - (void) CopyMagickString(p,"gswin32c.exe",sizeof(buf)); - (void) CopyMagickString(path,buf,length+1); - return TRUE; - } - - return FALSE; + p=strrchr(buffer, '\\'); + if (p == (char *) NULL) + return(FALSE); + p++; + *p='\0'; + (void) CopyMagickString(p,path,sizeof(buffer)-strlen(buffer)); + (void) CopyMagickString(path,buffer,length); + return(TRUE); } /* @@ -1899,9 +1897,9 @@ MagickExport int NTSyncMemory(void *address,size_t length,int flags) % NTSystemCommand() executes the specified command and waits until it % terminates. The returned value is the exit status of the command. % -% The format of the NTSystemComman method is: +% The format of the NTSystemCommand method is: % -% int NTSystemComman(const char *command) +% int NTSystemCommand(const char *command) % % A description of each parameter follows: % diff --git a/magick/quantum-export.c b/magick/quantum-export.c index c3b9d1827..130315f98 100644 --- a/magick/quantum-export.c +++ b/magick/quantum-export.c @@ -526,10 +526,10 @@ MagickExport size_t ExportQuantumPixels(const Image *image, for (bit=3; bit >= (long) (4-(number_pixels % 4)); bit-=2) { pixel=(unsigned char) *indexes++; - *q|=((pixel & 0x01) << (unsigned char) bit); + *q|=((pixel & 0x01) << (unsigned char) (bit+4)); pixel=(unsigned char) (p->opacity == (Quantum) TransparentOpacity ? 1 : 0); - *q|=((pixel & 0x01) << (unsigned char) (bit-1)); + *q|=((pixel & 0x01) << (unsigned char) (bit+4-1)); p++; } q++; @@ -916,11 +916,11 @@ MagickExport size_t ExportQuantumPixels(const Image *image, for (bit=3; bit >= (long) (4-(number_pixels % 4)); bit-=2) { *q|=(PixelIntensityToQuantum(p) < threshold ? black : white) << - bit; + (bit+4); pixel=(unsigned char) (p->opacity == OpaqueOpacity ? 0x00 : 0x01); *q|=(((int) pixel != 0 ? 0x00 : 0x01) << (unsigned char) - (bit-1)); + (bit+4-1)); p++; } q++; diff --git a/magick/shear.c b/magick/shear.c index 788610caf..c646da42e 100644 --- a/magick/shear.c +++ b/magick/shear.c @@ -1009,8 +1009,6 @@ MagickExport Image *DeskewImage(const Image *image,const double threshold, static Image *IntegralRotateImage(const Image *image,unsigned long rotations, ExceptionInfo *exception) { -#define TileHeight 128 -#define TileWidth 128 #define RotateImageTag "Rotate/Image" CacheView @@ -1036,6 +1034,8 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, assert(image != (Image *) NULL); page=image->page; rotations%=4; + if (rotations == 0) + return(CloneImage(image,0,0,MagickTrue,exception)); if ((rotations == 1) || (rotations == 3)) rotate_image=CloneImage(image,image->rows,image->columns,MagickTrue, exception); @@ -1058,54 +1058,6 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, /* Rotate 0 degrees. */ - for (y=0; y < (long) image->rows; y++) - { - MagickBooleanType - sync; - - register const IndexPacket - *__restrict indexes; - - register const PixelPacket - *__restrict p; - - register IndexPacket - *__restrict rotate_indexes; - - register PixelPacket - *__restrict q; - - if (status == MagickFalse) - continue; - p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); - q=QueueCacheViewAuthenticPixels(rotate_view,0,y,rotate_image->columns,1, - exception); - if ((p == (const PixelPacket *) NULL) || (q == (PixelPacket *) NULL)) - { - status=MagickFalse; - continue; - } - indexes=GetCacheViewVirtualIndexQueue(image_view); - rotate_indexes=GetCacheViewAuthenticIndexQueue(rotate_view); - (void) CopyMagickMemory(q,p,image->columns*sizeof(*p)); - if ((indexes != (IndexPacket *) NULL) && - (rotate_indexes != (IndexPacket *) NULL)) - (void) CopyMagickMemory(rotate_indexes,indexes,image->columns* - sizeof(*indexes)); - sync=SyncCacheViewAuthenticPixels(rotate_view,exception); - if (sync == MagickFalse) - status=MagickFalse; - if (image->progress_monitor != (MagickProgressMonitor) NULL) - { - MagickBooleanType - proceed; - - proceed=SetImageProgress(image,RotateImageTag,progress++, - image->rows); - if (proceed == MagickFalse) - status=MagickFalse; - } - } break; } case 1: @@ -1113,17 +1065,22 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, long tile_y; + unsigned long + tile_height, + tile_width; + /* Rotate 90 degrees. */ - for (tile_y=0; tile_y < (long) image->rows; tile_y+=TileHeight) + GetPixelCacheTileSize(image,&tile_width,&tile_height); + for (tile_y=0; tile_y < (long) image->rows; tile_y+=tile_height) { register long tile_x; if (status == MagickFalse) continue; - for (tile_x=0; tile_x < (long) image->columns; tile_x+=TileWidth) + for (tile_x=0; tile_x < (long) image->columns; tile_x+=tile_width) { MagickBooleanType sync; @@ -1144,26 +1101,26 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, *__restrict q; unsigned long - tile_height, - tile_width; + height, + width; - tile_width=TileWidth; - if ((tile_x+TileWidth) > (long) image->columns) - tile_width=(unsigned long) (TileWidth-(tile_x+TileWidth- + width=tile_width; + if ((tile_x+(long) tile_width) > (long) image->columns) + width=(unsigned long) (tile_width-(tile_x+tile_width- image->columns)); - tile_height=TileHeight; - if ((tile_y+TileHeight) > (long) image->rows) - tile_height=(unsigned long) (TileHeight-(tile_y+TileHeight- + height=tile_height; + if ((tile_y+(long) tile_height) > (long) image->rows) + height=(unsigned long) (tile_height-(tile_y+tile_height- image->rows)); - p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,tile_width, - tile_height,exception); + p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width, + height,exception); if (p == (const PixelPacket *) NULL) { status=MagickFalse; break; } indexes=GetCacheViewVirtualIndexQueue(image_view); - for (y=0; y < (long) tile_width; y++) + for (y=0; y < (long) width; y++) { register const PixelPacket *__restrict tile_pixels; @@ -1172,18 +1129,18 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, x; q=QueueCacheViewAuthenticPixels(rotate_view,(long) - rotate_image->columns-(tile_y+tile_height),y+tile_x,tile_height, + rotate_image->columns-(tile_y+height),y+tile_x,height, 1,exception); if (q == (PixelPacket *) NULL) { status=MagickFalse; break; } - tile_pixels=p+(tile_height-1)*tile_width+y; - for (x=0; x < (long) tile_height; x++) + tile_pixels=p+(height-1)*width+y; + for (x=0; x < (long) height; x++) { *q++=(*tile_pixels); - tile_pixels-=tile_width; + tile_pixels-=width; } rotate_indexes=GetCacheViewAuthenticIndexQueue(rotate_view); if ((indexes != (IndexPacket *) NULL) && @@ -1192,11 +1149,11 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, register const IndexPacket *__restrict tile_indexes; - tile_indexes=indexes+(tile_height-1)*tile_width+y; - for (x=0; x < (long) tile_height; x++) + tile_indexes=indexes+(height-1)*width+y; + for (x=0; x < (long) height; x++) { *rotate_indexes++=(*tile_indexes); - tile_indexes-=tile_width; + tile_indexes-=width; } } sync=SyncCacheViewAuthenticPixels(rotate_view,exception); @@ -1209,12 +1166,13 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, MagickBooleanType proceed; - proceed=SetImageProgress(image,RotateImageTag,progress+=TileHeight, + proceed=SetImageProgress(image,RotateImageTag,progress+=tile_height, image->rows); if (proceed == MagickFalse) status=MagickFalse; } } + (void) SetImageProgress(image,RotateImageTag,image->rows-1,image->rows); Swap(page.width,page.height); Swap(page.x,page.y); if (page.width != 0) @@ -1291,17 +1249,22 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, long tile_y; + unsigned long + tile_height, + tile_width; + /* Rotate 270 degrees. */ - for (tile_y=0; tile_y < (long) image->rows; tile_y+=TileHeight) + GetPixelCacheTileSize(image,&tile_width,&tile_height); + for (tile_y=0; tile_y < (long) image->rows; tile_y+=tile_height) { register long tile_x; if (status == MagickFalse) continue; - for (tile_x=0; tile_x < (long) image->columns; tile_x+=TileWidth) + for (tile_x=0; tile_x < (long) image->columns; tile_x+=tile_width) { MagickBooleanType sync; @@ -1322,26 +1285,26 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, *__restrict q; unsigned long - tile_height, - tile_width; + height, + width; - tile_width=TileWidth; - if ((tile_x+TileWidth) > (long) image->columns) - tile_width=(unsigned long) (TileWidth-(tile_x+TileWidth- + width=tile_width; + if ((tile_x+(long) tile_width) > (long) image->columns) + width=(unsigned long) (tile_width-(tile_x+tile_width- image->columns)); - tile_height=TileHeight; - if ((tile_y+TileHeight) > (long) image->rows) - tile_height=(unsigned long) (TileHeight-(tile_y+TileHeight- + height=tile_height; + if ((tile_y+(long) tile_height) > (long) image->rows) + height=(unsigned long) (tile_height-(tile_y+tile_height- image->rows)); - p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,tile_width, - tile_height,exception); + p=GetCacheViewVirtualPixels(image_view,tile_x,tile_y,width, + height,exception); if (p == (const PixelPacket *) NULL) { status=MagickFalse; break; } indexes=GetCacheViewVirtualIndexQueue(image_view); - for (y=0; y < (long) tile_width; y++) + for (y=0; y < (long) width; y++) { register const PixelPacket *__restrict tile_pixels; @@ -1350,17 +1313,17 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, x; q=QueueCacheViewAuthenticPixels(rotate_view,tile_y,(long) - y+rotate_image->rows-(tile_x+tile_width),tile_height,1,exception); + y+rotate_image->rows-(tile_x+width),height,1,exception); if (q == (PixelPacket *) NULL) { status=MagickFalse; break; } - tile_pixels=p+(tile_width-1)-y; - for (x=0; x < (long) tile_height; x++) + tile_pixels=p+(width-1)-y; + for (x=0; x < (long) height; x++) { *q++=(*tile_pixels); - tile_pixels+=tile_width; + tile_pixels+=width; } rotate_indexes=GetCacheViewAuthenticIndexQueue(rotate_view); if ((indexes != (IndexPacket *) NULL) && @@ -1369,11 +1332,11 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, register const IndexPacket *__restrict tile_indexes; - tile_indexes=indexes+(tile_width-1)-y; - for (x=0; x < (long) tile_height; x++) + tile_indexes=indexes+(width-1)-y; + for (x=0; x < (long) height; x++) { *rotate_indexes++=(*tile_indexes); - tile_indexes+=tile_width; + tile_indexes+=width; } } sync=SyncCacheViewAuthenticPixels(rotate_view,exception); @@ -1386,12 +1349,13 @@ static Image *IntegralRotateImage(const Image *image,unsigned long rotations, MagickBooleanType proceed; - proceed=SetImageProgress(image,RotateImageTag,progress+=TileHeight, + proceed=SetImageProgress(image,RotateImageTag,progress+=tile_height, image->rows); if (proceed == MagickFalse) status=MagickFalse; } } + (void) SetImageProgress(image,RotateImageTag,image->rows-1,image->rows); Swap(page.width,page.height); Swap(page.x,page.y); if (page.height != 0) diff --git a/magick/static.c b/magick/static.c index 63130fe45..e0f2e207a 100644 --- a/magick/static.c +++ b/magick/static.c @@ -183,7 +183,9 @@ MagickExport void RegisterStaticModules(void) (void) RegisterDJVUImage(); #endif (void) RegisterDNGImage(); +#if defined(MAGICKCORE_DPS_DELEGATE) (void) RegisterDPSImage(); +#endif (void) RegisterDPXImage(); #if defined(MAGICKCORE_WINGDI32_DELEGATE) (void) RegisterEMFImage(); @@ -347,7 +349,9 @@ MagickExport void UnregisterStaticModules(void) UnregisterDJVUImage(); #endif UnregisterDNGImage(); +#if defined(MAGICKCORE_DPS_DELEGATE) UnregisterDPSImage(); +#endif UnregisterDPXImage(); #if defined(MAGICKCORE_WINGDI32_DELEGATE) UnregisterEMFImage(); diff --git a/magick/utility.c b/magick/utility.c index c78affa03..84ffd97c2 100644 --- a/magick/utility.c +++ b/magick/utility.c @@ -50,6 +50,7 @@ #include "magick/log.h" #include "magick/memory_.h" #include "magick/option.h" +#include "magick/policy.h" #include "magick/resource_.h" #include "magick/semaphore.h" #include "magick/signature-private.h" @@ -1773,28 +1774,58 @@ MagickExport FILE *OpenMagickStream(const char *path,const char *mode) % % The format of the SystemCommand method is: % -% int SystemCommand(const MagickBooleanType verbose,const char *command) +% int SystemCommand(const MagickBooleanType verbose,const char *command, +% ExceptionInfo *exception) % % A description of each parameter follows: % -% o verbose: A value other than 0 prints the executed command before it is +% o verbose: a value other than 0 prints the executed command before it is % invoked. % -% o command: This string is the command to execute. +% o command: this string is the command to execute. +% +% o exception: return any errors here. % */ MagickExport int SystemCommand(const MagickBooleanType verbose, - const char *command) + const char *command,ExceptionInfo *exception) { + char + **arguments; + int + number_arguments, status; + PolicyDomain + domain; + + PolicyRights + rights; + + register long + i; + + status=(-1); + arguments=StringToArgv(command,&number_arguments); + if (arguments == (char **) NULL) + return(status); + domain=DelegatePolicyDomain; + rights=ExecutePolicyRights; + if (IsRightsAuthorized(domain,rights,arguments[1]) == MagickFalse) + { + (void) ThrowMagickException(exception,GetMagickModule(),PolicyError, + "NotAuthorized","`%s'",arguments[1]); + for (i=0; i < number_arguments; i++) + arguments[i]=DestroyString(arguments[i]); + arguments=(char **) RelinquishMagickMemory(arguments); + return(-1); + } if (verbose != MagickFalse) { (void) fprintf(stderr,"%s\n",command); (void) fflush(stderr); } - status=(-1); #if defined(MAGICKCORE_POSIX_SUPPORT) #if !defined(MAGICKCORE_HAVE_EXECVP) status=system(command); @@ -1803,60 +1834,42 @@ MagickExport int SystemCommand(const MagickBooleanType verbose, status=system(command); else { - char - **arguments; + pid_t + child_pid; - int - number_arguments; - - arguments=StringToArgv(command,&number_arguments); - if (arguments == (char **) NULL) + /* + Call application directly rather than from a shell. + */ + child_pid=fork(); + if (child_pid == (pid_t) -1) status=system(command); else - { - pid_t - child_pid; + if (child_pid == 0) + { + status=execvp(arguments[1],arguments+1); + _exit(1); + } + else + { + int + child_status; - register long - i; + pid_t + pid; - /* - Call application directly rather than from a shell. - */ - child_pid=fork(); - if (child_pid == (pid_t) -1) - status=system(command); - else - if (child_pid == 0) - { - status=execvp(arguments[1],arguments+1); - _exit(1); - } + child_status=0; + pid=waitpid(child_pid,&child_status,0); + if (pid == -1) + status=(-1); else { - int - child_status; - - pid_t - pid; - - child_status=0; - pid=waitpid(child_pid,&child_status,0); - if (pid == -1) - status=(-1); + if (WIFEXITED(child_status) != 0) + status=WEXITSTATUS(child_status); else - { - if (WIFEXITED(child_status) != 0) - status=WEXITSTATUS(child_status); - else - if (WIFSIGNALED(child_status)) - status=(-1); - } + if (WIFSIGNALED(child_status)) + status=(-1); } - for (i=0; i < number_arguments; i++) - arguments[i]=DestroyString(arguments[i]); - arguments=(char **) RelinquishMagickMemory(arguments); - } + } } #endif #elif defined(__WINDOWS__) @@ -1873,16 +1886,13 @@ MagickExport int SystemCommand(const MagickBooleanType verbose, char *message; - ExceptionInfo - *exception; - - exception=AcquireExceptionInfo(); message=GetExceptionMessage(errno); (void) ThrowMagickException(exception,GetMagickModule(),DelegateError, "`%s': %s",command,message); message=DestroyString(message); - CatchException(exception); - exception=DestroyExceptionInfo(exception); } + for (i=0; i < number_arguments; i++) + arguments[i]=DestroyString(arguments[i]); + arguments=(char **) RelinquishMagickMemory(arguments); return(status); } diff --git a/magick/utility.h b/magick/utility.h index 383074024..0ba2e6f2e 100644 --- a/magick/utility.h +++ b/magick/utility.h @@ -44,7 +44,7 @@ extern MagickExport FILE *OpenMagickStream(const char *,const char *); extern MagickExport int - SystemCommand(const MagickBooleanType,const char *); + SystemCommand(const MagickBooleanType,const char *,ExceptionInfo *); extern MagickExport MagickBooleanType AcquireUniqueFilename(char *), diff --git a/magick/version.h b/magick/version.h index ee69c7a4d..72e55e145 100644 --- a/magick/version.h +++ b/magick/version.h @@ -30,9 +30,9 @@ extern "C" { #define MagickLibVersion 0x655 #define MagickLibVersionText "6.5.5" #define MagickLibVersionNumber 2,0,0 -#define MagickLibSubversion "-7" -#define MagickReleaseDate "2009-09-01" -#define MagickChangeDate "20090831" +#define MagickLibSubversion "-8" +#define MagickReleaseDate "2009-09-07" +#define MagickChangeDate "20090907" #define MagickAuthoritativeURL "http://www.imagemagick.org" #define MagickHomeURL "file:///usr/local/share/doc/ImageMagick-6.5.5/index.html" #if (MAGICKCORE_QUANTUM_DEPTH == 8) diff --git a/version.sh b/version.sh index 0cb4dbb8b..ecac70cd7 100644 --- a/version.sh +++ b/version.sh @@ -12,7 +12,7 @@ PACKAGE_NAME='ImageMagick' # PACKAGE_NAME (e.g. "1.0.0"). PACKAGE_VERSION='6.5.5' PACKAGE_LIB_VERSION="0x655" -PACKAGE_RELEASE="7" +PACKAGE_RELEASE="8" PACKAGE_LIB_VERSION_NUMBER="6,5,5,${PACKAGE_RELEASE}" PACKAGE_RELEASE_DATE=`date +%F` PACKAGE_STRING="$PACKAGE_NAME $PACKAGE_VERSION" diff --git a/wand/convert.c b/wand/convert.c index 672391b22..277112dba 100644 --- a/wand/convert.c +++ b/wand/convert.c @@ -347,6 +347,8 @@ static MagickBooleanType ConvertUsage(void) "-green-primary point chromaticity green primary point", "-intent type type of rendering intent when managing the image color", "-interlace type type of image interlacing scheme", + "-interline-spacing value", + " set the space between two text lines", "-interpolate method pixel color interpolation method", "-interword-spacing value", " set the space between two words", @@ -1587,6 +1589,17 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info, argv[i]); break; } + if (LocaleCompare("interline-spacing",option+1) == 0) + { + if (*option == '+') + break; + i++; + if (i == (long) (argc-1)) + ThrowConvertException(OptionError,"MissingArgument",option); + if (IsGeometry(argv[i]) == MagickFalse) + ThrowConvertInvalidArgumentException(option,argv[i]); + break; + } if (LocaleCompare("interpolate",option+1) == 0) { long diff --git a/wand/drawing-wand.c b/wand/drawing-wand.c index 7e7913340..b74dd0bde 100644 --- a/wand/drawing-wand.c +++ b/wand/drawing-wand.c @@ -2272,6 +2272,37 @@ WandExport double DrawGetTextKerning(DrawingWand *wand) % % % % % % +% D r a w G e t T e x t I n t e r L i n e S p a c i n g % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DrawGetTextInterwordSpacing() gets the spacing between lines in text. +% +% The format of the DrawSetFontKerning method is: +% +% double DrawGetTextInterwordSpacing(DrawingWand *wand) +% +% A description of each parameter follows: +% +% o wand: the drawing wand. +% +*/ +WandExport double DrawGetTextInterlineSpacing(DrawingWand *wand) +{ + assert(wand != (DrawingWand *) NULL); + assert(wand->signature == WandSignature); + if (wand->debug != MagickFalse) + (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); + return(CurrentContext->interline_spacing); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % D r a w G e t T e x t I n t e r w o r d S p a c i n g % % % % % @@ -5876,6 +5907,47 @@ WandExport void DrawSetTextKerning(DrawingWand *wand,const double kerning) % % % % % % +% D r a w S e t T e x t I n t e r L i n e S p a c i n g % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% DrawSetTextInterwordSpacing() sets the spacing between line in text. +% +% The format of the DrawSetInterwordSpacing method is: +% +% void DrawSetTextInterwordSpacing(DrawingWand *wand, +% const double interline_spacing) +% +% A description of each parameter follows: +% +% o wand: the drawing wand. +% +% o interline_spacing: text line spacing +% +*/ +WandExport void DrawSetTextInterlineSpacing(DrawingWand *wand, + const double interline_spacing) +{ + assert(wand != (DrawingWand *) NULL); + assert(wand->signature == WandSignature); + + if (wand->debug != MagickFalse) + (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); + if ((wand->filter_off != MagickFalse) && + (CurrentContext->interline_spacing != interline_spacing)) + { + CurrentContext->interline_spacing=interline_spacing; + (void) MvgPrintf(wand,"interline_spacing %lf\n",interline_spacing); + } +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % D r a w S e t T e x t I n t e r w o r d S p a c i n g % % % % % diff --git a/wand/drawing-wand.h b/wand/drawing-wand.h index 6fcb3bb6f..b1e3f34bc 100644 --- a/wand/drawing-wand.h +++ b/wand/drawing-wand.h @@ -53,6 +53,7 @@ extern WandExport double DrawGetStrokeOpacity(const DrawingWand *), DrawGetStrokeWidth(const DrawingWand *), DrawGetTextKerning(DrawingWand *), + DrawGetTextInterlineSpacing(DrawingWand *), DrawGetTextInterwordSpacing(DrawingWand *); extern WandExport DrawInfo @@ -127,6 +128,7 @@ extern WandExport void DrawGetFillColor(const DrawingWand *,PixelWand *), DrawGetStrokeColor(const DrawingWand *,PixelWand *), DrawSetTextKerning(DrawingWand *,const double), + DrawSetTextInterlineSpacing(DrawingWand *,const double), DrawSetTextInterwordSpacing(DrawingWand *,const double), DrawGetTextUnderColor(const DrawingWand *,PixelWand *), DrawLine(DrawingWand *,const double, const double,const double,const double), diff --git a/wand/mogrify.c b/wand/mogrify.c index bb68205e4..4ed492191 100644 --- a/wand/mogrify.c +++ b/wand/mogrify.c @@ -161,7 +161,7 @@ static inline long MagickMax(const long x,const long y) } static MagickBooleanType MonitorProgress(const char *text, - const MagickOffsetType quantum,const MagickSizeType span, + const MagickOffsetType offset,const MagickSizeType extent, void *wand_unused(client_data)) { char @@ -174,7 +174,7 @@ static MagickBooleanType MonitorProgress(const char *text, register char *p; - if (span < 2) + if (extent < 2) return(MagickTrue); (void) CopyMagickMemory(tag,text,MaxTextExtent); p=strrchr(tag,'/'); @@ -185,12 +185,13 @@ static MagickBooleanType MonitorProgress(const char *text, if (locale_message == message) locale_message=tag; if (p == (char *) NULL) - (void) fprintf(stderr,"%s: %02ld%%\r",locale_message,(long) - (100L*quantum/(span-1))); + (void) fprintf(stderr,"%s: %ld of %lu, %02ld%% complete\r",locale_message, + (long) offset,(unsigned long) extent,(long) (100L*offset/(extent-1))); else - (void) fprintf(stderr,"%s: %02ld%% [%s]\r",locale_message,(long) - (100L*quantum/(span-1)),p+1); - if ((MagickSizeType) quantum == (span-1)) + (void) fprintf(stderr,"%s[%s]: %ld of %lu, %02ld%% complete\r", + locale_message,p+1,(long) offset,(unsigned long) extent,(long) + (100L*offset/(extent-1))); + if (offset == (MagickOffsetType) (extent-1)) (void) fprintf(stderr,"\n"); (void) fflush(stderr); return(MagickTrue); @@ -1748,6 +1749,15 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, *image=implode_image; break; } + if (LocaleCompare("interline-spacing",option+1) == 0) + { + if (*option == '+') + (void) ParseGeometry("0",&geometry_info); + else + (void) ParseGeometry(argv[i+1],&geometry_info); + draw_info->interline_spacing=geometry_info.rho; + break; + } if (LocaleCompare("interword-spacing",option+1) == 0) { if (*option == '+') @@ -3625,6 +3635,8 @@ static MagickBooleanType MogrifyUsage(void) "-green-primary point chromaticity green primary point", "-intent type type of rendering intent when managing the image color", "-interlace type type of image interlacing scheme", + "-interline-spacing value", + " set the space between two text lines", "-interpolate method pixel color interpolation method", "-interword-spacing value", " set the space between two words", @@ -4832,6 +4844,17 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, argv[i]); break; } + if (LocaleCompare("interline-spacing",option+1) == 0) + { + if (*option == '+') + break; + i++; + if (i == (long) (argc-1)) + ThrowMogrifyException(OptionError,"MissingArgument",option); + if (IsGeometry(argv[i]) == MagickFalse) + ThrowMogrifyInvalidArgumentException(option,argv[i]); + break; + } if (LocaleCompare("interpolate",option+1) == 0) { long @@ -6508,6 +6531,16 @@ WandExport MagickBooleanType MogrifyImageInfo(ImageInfo *image_info, (void) SetImageOption(image_info,option+1,argv[i+1]); break; } + if (LocaleCompare("interline-spacing",option+1) == 0) + { + if (*option == '+') + { + (void) SetImageOption(image_info,option+1,"undefined"); + break; + } + (void) SetImageOption(image_info,option+1,argv[i+1]); + break; + } if (LocaleCompare("interpolate",option+1) == 0) { if (*option == '+') diff --git a/www/ImageMagickObject.html b/www/ImageMagickObject.html index 9922060aa..95de05de0 100644 --- a/www/ImageMagickObject.html +++ b/www/ImageMagickObject.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Install the ImageMagickObject COM+ Component @@ -24,30 +24,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -78,7 +78,7 @@ -
+
@@ -103,22 +103,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

Introduction to the ImageMagickObject COM+ Object

@@ -193,22 +193,22 @@

Use MagickCMD to exercise ImageMagickObject to verify that it is working properly.

- - - - - -
- - + + + + + +
+ + diff --git a/www/advanced-unix-installation.html b/www/advanced-unix-installation.html index 0e58394fb..47ae76894 100644 --- a/www/advanced-unix-installation.html +++ b/www/advanced-unix-installation.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Advanced Unix Source Installation @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- - + + +
+ +
+ +
@@ -583,22 +583,22 @@ Options used to compile and link:

If PerlMagick fails to link with a message similar to libperl.a is not found, rerun configure with the --enable-shared or --enable-shared --with-modules options.

- -
- - - -
- - + + + + + +
+ + diff --git a/www/advanced-windows-installation.html b/www/advanced-windows-installation.html index 1cb8af3cb..315261d8e 100644 --- a/www/advanced-windows-installation.html +++ b/www/advanced-windows-installation.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Advanced Windows Source Installation @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- - + + +
+ + - - - -
- - + + + + + +
+ + diff --git a/www/animate.html b/www/animate.html index 82071e396..6d6e06595 100644 --- a/www/animate.html +++ b/www/animate.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Animate @@ -24,30 +24,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -78,7 +78,7 @@ -
+
@@ -103,22 +103,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

Use the animate program to animate an image sequence on any X server. See Command Line Processing for advice on how to structure your animate command or see below for example usages of the command.

@@ -593,22 +593,22 @@ transparent, extract, background, or shape the alpha channel - -
- - - -
- - + + + + + +
+ + diff --git a/www/api.html b/www/api.html index 199a64f75..873af7ece 100644 --- a/www/api.html +++ b/www/api.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Application Program Interfaces @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

ImageMagick includes a number of ready-made ImageMagick interfaces. This makes it possible to modify or create images automagically and dynamically.

@@ -271,22 +271,22 @@

RemoteMagick is an XML-RPC web service that creates image thumbnails.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/animate.html b/www/api/animate.html index b67fb72ed..469f882cd 100644 --- a/www/api/animate.html +++ b/www/api/animate.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Interactively Animate an Image Sequence @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

AnimateImages

    the image.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/annotate.html b/www/api/annotate.html index 4881f3f03..524b70642 100644 --- a/www/api/annotate.html +++ b/www/api/annotate.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Annotate an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

GetTypeMetrics

    Return the font metrics in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/blob.html b/www/api/blob.html index 647f9764f..002434418 100644 --- a/www/api/blob.html +++ b/www/api/blob.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Read or Write Binary Large OBjects @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

InjectImageBlob

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/cache-view.html b/www/api/cache-view.html index 8251c5508..faf7eb9b5 100644 --- a/www/api/cache-view.html +++ b/www/api/cache-view.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Cache Views @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/cache.html b/www/api/cache.html index 3e94c2263..ff9839f59 100644 --- a/www/api/cache.html +++ b/www/api/cache.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Get or Set Image Pixels @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/cipher.html b/www/api/cipher.html index 7c841f358..6260620f0 100644 --- a/www/api/cipher.html +++ b/www/api/cipher.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Convert to and from Cipher Pixels @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/color.html b/www/api/color.html index ca2e86c3f..1db48f74b 100644 --- a/www/api/color.html +++ b/www/api/color.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Count the Colors in an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/compare.html b/www/api/compare.html index 23a14095a..18f300a96 100644 --- a/www/api/compare.html +++ b/www/api/compare.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Compare an Image to a Reconstructed Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

SimilarityImage

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/composite.html b/www/api/composite.html index 1f93f44b8..abf3067ec 100644 --- a/www/api/composite.html +++ b/www/api/composite.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Composite an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

CompositeImageChannel

Previous to IM v6.5.3-3 this was called "modify-outside-overlay"

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/constitute.html b/www/api/constitute.html index f5f555272..84af00cde 100644 --- a/www/api/constitute.html +++ b/www/api/constitute.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Constitute an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

WriteImages

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/decorate.html b/www/api/decorate.html index 7525eebe4..3d015d77b 100644 --- a/www/api/decorate.html +++ b/www/api/decorate.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Decorate an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

RaiseImage

    A value other than zero creates a 3-D raise effect, otherwise it has a lowered effect.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/deprecate.html b/www/api/deprecate.html index 2879c2671..a34f8dd8e 100644 --- a/www/api/deprecate.html +++ b/www/api/deprecate.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Deprecated Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

UnshiftImageList

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/display.html b/www/api/display.html index 53702f182..1c345851e 100644 --- a/www/api/display.html +++ b/www/api/display.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Interactively Display and Edit an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/distort.html b/www/api/distort.html index 251b28481..7597c98ec 100644 --- a/www/api/distort.html +++ b/www/api/distort.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Image Distortions @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

SparseColorImage

    return any errors or warnings in this structure

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/draw.html b/www/api/draw.html index ccd67cb12..03a92a78a 100644 --- a/www/api/draw.html +++ b/www/api/draw.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Draw on an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/drawing-wand.html b/www/api/drawing-wand.html index 08e43476f..fb5278683 100644 --- a/www/api/drawing-wand.html +++ b/www/api/drawing-wand.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Drawing Wand Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

PushDrawingWand

    the drawing wand.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/effect.html b/www/api/effect.html index 3413fb6c9..4ad9d4749 100644 --- a/www/api/effect.html +++ b/www/api/effect.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Add an Effect @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/enhance.html b/www/api/enhance.html index 003da540f..08c80c40d 100644 --- a/www/api/enhance.html +++ b/www/api/enhance.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Enhance an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/exception.html b/www/api/exception.html index d47845848..88f5c1885 100644 --- a/www/api/exception.html +++ b/www/api/exception.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Dealing with Exceptions @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/fx.html b/www/api/fx.html index b107e3876..ee39c7d7d 100644 --- a/www/api/fx.html +++ b/www/api/fx.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Add a Special Effect @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/histogram.html b/www/api/histogram.html index f0c62617f..2201ef0b4 100644 --- a/www/api/histogram.html +++ b/www/api/histogram.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Image Histograms @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

MinMaxStretchImage

    Move the Black/White Point inward from the minimum and maximum points by this color value.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/image.html b/www/api/image.html index 72d917379..742052845 100644 --- a/www/api/image.html +++ b/www/api/image.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Image Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/layer.html b/www/api/layer.html index 71be18b8a..66756fafc 100644 --- a/www/api/layer.html +++ b/www/api/layer.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Dealing with Image Layers @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/list.html b/www/api/list.html index b62f815fc..fa2078258 100644 --- a/www/api/list.html +++ b/www/api/list.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Working with Image Lists @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/magick-deprecate.html b/www/api/magick-deprecate.html index 56c4f8aa9..e2a56b962 100644 --- a/www/api/magick-deprecate.html +++ b/www/api/magick-deprecate.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Deprecated Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/magick-image.html b/www/api/magick-image.html index 859ca18cd..f9434b84d 100644 --- a/www/api/magick-image.html +++ b/www/api/magick-image.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Image Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

MagickWriteImagesFile

    the file descriptor.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/magick-property.html b/www/api/magick-property.html index cdccc04aa..4fc0b2f0e 100644 --- a/www/api/magick-property.html +++ b/www/api/magick-property.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Property Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

MagickSetType

    the image type: UndefinedType, BilevelType, GrayscaleType, GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType, TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType, or OptimizeType.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/magick-wand.html b/www/api/magick-wand.html index d921f465e..ab011ef7f 100644 --- a/www/api/magick-wand.html +++ b/www/api/magick-wand.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Wand Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/magick.html b/www/api/magick.html index 55836ad9f..e5d77e35c 100644 --- a/www/api/magick.html +++ b/www/api/magick.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Read or List Image formats @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/memory.html b/www/api/memory.html index 6b981a7cf..55fb0caba 100644 --- a/www/api/memory.html +++ b/www/api/memory.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Memory Allocation @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/module.html b/www/api/module.html index ad88c90be..558581793 100644 --- a/www/api/module.html +++ b/www/api/module.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Loadable Modules @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/monitor.html b/www/api/monitor.html index 447a730e5..f5bb34f48 100644 --- a/www/api/monitor.html +++ b/www/api/monitor.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Monitor the Progress of an Image Operation @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/montage.html b/www/api/montage.html index 88c31a311..eeb809e24 100644 --- a/www/api/montage.html +++ b/www/api/montage.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Create an Image Thumbnail @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

MontageImageList

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/paint.html b/www/api/paint.html index 95abee762..b6fd8e830 100644 --- a/www/api/paint.html +++ b/www/api/paint.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Paint on an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/pixel-iterator.html b/www/api/pixel-iterator.html index dc2841596..7966b253b 100644 --- a/www/api/pixel-iterator.html +++ b/www/api/pixel-iterator.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Pixel Iterator Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/pixel-view.html b/www/api/pixel-view.html index 32252b204..da4d77bdc 100644 --- a/www/api/pixel-view.html +++ b/www/api/pixel-view.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Pixel View Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/pixel-wand.html b/www/api/pixel-wand.html index 9f079bc6a..8b1696d86 100644 --- a/www/api/pixel-wand.html +++ b/www/api/pixel-wand.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickWand, C API for ImageMagick: Pixel Wand Methods @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/profile.html b/www/api/profile.html index b9c1e3b9d..28a5af23a 100644 --- a/www/api/profile.html +++ b/www/api/profile.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Dealing with Image Profiles @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/property.html b/www/api/property.html index 1fff76aa7..416d88799 100644 --- a/www/api/property.html +++ b/www/api/property.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Get/Set Image Properties @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/quantize.html b/www/api/quantize.html index 1c81dc897..8e32263a1 100644 --- a/www/api/quantize.html +++ b/www/api/quantize.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Reduce the Number of Unique Colors in an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/registry.html b/www/api/registry.html index 20bb91e55..2ef8edf9e 100644 --- a/www/api/registry.html +++ b/www/api/registry.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: The Image Registry @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/resize.html b/www/api/resize.html index 7fdee91ca..2d3d85cd0 100644 --- a/www/api/resize.html +++ b/www/api/resize.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Resize an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

ZoomImage

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/resource.html b/www/api/resource.html index 42967d260..d40232994 100644 --- a/www/api/resource.html +++ b/www/api/resource.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Monitor or Limit Resource Consumption @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/segment.html b/www/api/segment.html index ced20e961..4bb053d45 100644 --- a/www/api/segment.html +++ b/www/api/segment.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Segment an Image with Thresholding Fuzzy c-Means @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

SegmentImage

    the smoothing threshold eliminates noise in the second derivative of the histogram. As the value is increased, you can expect a smoother second derivative.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/shear.html b/www/api/shear.html index 09b93e759..8cf29d32b 100644 --- a/www/api/shear.html +++ b/www/api/shear.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Shear or Rotate an Image by an Arbitrary Angle @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

ShearImage

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/signature.html b/www/api/signature.html index a58e76c96..1d1cb4764 100644 --- a/www/api/signature.html +++ b/www/api/signature.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Compute a Message Digest for an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/api/stream.html b/www/api/stream.html index 5197971a9..ed535c39e 100644 --- a/www/api/stream.html +++ b/www/api/stream.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: The Pixel FIFO @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

WriteStream

    A callback method.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/transform.html b/www/api/transform.html index df11055d8..5e093a406 100644 --- a/www/api/transform.html +++ b/www/api/transform.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Transform an Image @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+

TrimImage

    return any errors or warnings in this structure.

- - - - - -
- - + + + + + +
+ + diff --git a/www/api/version.html b/www/api/version.html index df753833a..8e60e95bc 100644 --- a/www/api/version.html +++ b/www/api/version.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: MagickCore, C API for ImageMagick: Get the Version and Copyrights @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ + - - - - - -
- - + + + + + +
+ + diff --git a/www/architecture.html b/www/architecture.html index 0066a0cf8..b24dc541d 100644 --- a/www/architecture.html +++ b/www/architecture.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Architecture @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- - - + + +
+ +
+ + +
@@ -1206,22 +1206,22 @@ ModuleExport unsigned long analyzeImage(Image **images,const int argc,

We provide the Magick Filter Kit to help you get started writing your own custom image filter.

- -
- - - -
- - + + + + + +
+ + diff --git a/www/binary-releases.html b/www/binary-releases.html index e3c6a99a9..848504130 100644 --- a/www/binary-releases.html +++ b/www/binary-releases.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Install from Binary Distribution @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- - + + +
+ +
+ +
@@ -359,22 +359,22 @@

Congratulations, you have a working ImageMagick distribution under Windows and you are ready to use ImageMagick to convert, compose, or edit your images or perhaps you'll want to use one of the Application Program Interfaces for C, C++, Perl, and others.

- -
- - - -
- - + + + + + +
+ + diff --git a/www/changelog.html b/www/changelog.html index c8b9297f8..b71b1e139 100644 --- a/www/changelog.html +++ b/www/changelog.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Changelog @@ -23,30 +23,30 @@ - - - - - -
- + + + + + +
+ -
+
@@ -77,7 +77,7 @@ -
+
@@ -102,22 +102,22 @@ -
+
-
+
-
+
-
+
- - - - -
- + + +
+ +
+
    2009-08-31 6.5.5-6 Cristy <quetzlzacatenango@image...>
  • A union is required when converting a thread ID to an unsigned long.

  • 2009-08-28 6.5.5-5 Cristy <quetzlzacatenango@image...>
    @@ -1206,22 +1206,22 @@
  • Set AppendImage() matte channel only when image has matte attribute set.
  • The -crop with negative offsets do not modify the virtual canvas.
  • Caption: Given both the width and height ("-size") of the area to fill, adjust the fonts "-pointsize" until the text just filles the whole space without overflowing.
  • -
  • Generate proper Windows icon image files (patch provided by Robert M. Jansen).
-
- - - -
- - +
  • Generate proper Windows icon image files (patch provided by Robert M. Jansen). + + + + +
    + + diff --git a/www/cipher.html b/www/cipher.html index d6f088536..8c0d2a4b3 100644 --- a/www/cipher.html +++ b/www/cipher.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Encipher or Decipher an Image @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Introduction to Enciphering and Deciphering Images

    @@ -191,22 +191,22 @@

    Currently only ImageMagick can restore your enciphered image content. We use a standard cipher and mode so other vendors are encouraged to support enciphered image content.

    -
    - - - - -
    - - + + + + + +
    + + diff --git a/www/color.html b/www/color.html index d286577be..b55fa9b16 100644 --- a/www/color.html +++ b/www/color.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Color Names @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -4978,22 +4978,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/command-line-options.html b/www/command-line-options.html index 3a5339c91..7eaf20a4e 100644 --- a/www/command-line-options.html +++ b/www/command-line-options.html @@ -1,16 +1,16 @@ - - - - - - - - - - + + + + + + + + + + ImageMagick: Command-line Options @@ -27,30 +27,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -81,7 +81,7 @@ -
    +
    @@ -106,22 +106,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    + @@ -5503,22 +5503,22 @@ percentage, which defaults to 100 percent (no color change).

    Use -compress to specify the type of image compression.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/command-line-processing.html b/www/command-line-processing.html index 929c896c9..ebd54c0d2 100644 --- a/www/command-line-processing.html +++ b/www/command-line-processing.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Command-line Processing @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - - - + + +
    + +
    + + + +

    The ImageMagick command line can be as simple as this.

    @@ -618,22 +618,22 @@ above.

    - - - - - -
    - - + + + + + +
    + + diff --git a/www/command-line-tools.html b/www/command-line-tools.html index ca36224f6..2cd2d327d 100644 --- a/www/command-line-tools.html +++ b/www/command-line-tools.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Command-line Tools @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    ImageMagick includes a number of command-line utilities for manipulating images. Most of you are probably accustomed to editing images one at a time with a graphical user interface (GUI) with such programs as gimp or Photoshop. However, a GUI is not always convenient. Suppose you want to process an image dynamically from a web script or you want to apply the same operations to many images or repeat a specific operation at different times to the same or different image. For these types of operations, the command-line image processing utility is appropriate.

    @@ -221,22 +221,22 @@

    a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats. It writes the pixel components as they are read from the input image a row at a time making stream desirable when working with large images or when you require raw pixel components.

    - - - - - -
    - - + + + + + +
    + + diff --git a/www/compare.html b/www/compare.html index ad599c5b3..79748d040 100644 --- a/www/compare.html +++ b/www/compare.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Compare @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Use the compare program to mathematically and visually annotate the difference between an image and its reconstruction. See Command Line Processing for advice on how to structure your compare command or see below for example usages of the command.

    @@ -382,22 +382,22 @@ transparent, extract, background, or shape the alpha channel - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/composite.html b/www/composite.html index fbbfdc436..1b14ac2f6 100644 --- a/www/composite.html +++ b/www/composite.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Composite @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Use the composite program to overlap one image over another. See Command Line Processing for advice on how to structure your composite command or see below for example usages of the command.

    @@ -586,22 +586,22 @@ transparent, extract, background, or shape the alpha channel - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/conjure.html b/www/conjure.html index 2439d84bd..fe6070070 100644 --- a/www/conjure.html +++ b/www/conjure.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Conjure @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -292,22 +292,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/contact.html b/www/contact.html index 382c4d0ab..587c019fe 100644 --- a/www/contact.html +++ b/www/contact.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Contact the Development Team @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -204,22 +204,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/convert.html b/www/convert.html index 96aa286b8..b542e2a8a 100644 --- a/www/convert.html +++ b/www/convert.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Convert @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -1236,22 +1236,22 @@ transparent, extract, background, or shape the alpha channel
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/display.html b/www/display.html index fad3da660..335e614fb 100644 --- a/www/display.html +++ b/www/display.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Display @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -624,22 +624,22 @@ transparent, extract, background, or shape the alpha channel
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/download.html b/www/download.html index 1837fc18a..c70a43ef6 100644 --- a/www/download.html +++ b/www/download.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Downloads @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors around the world listed below. ImageMagick stable and development source releases are also available from Subversion. Before you download, you may want to review recent changes to the ImageMagick distribution.

    The latest release of ImageMagick is version 6.5.5-6.

    @@ -195,22 +195,22 @@
    rsync://mirror.imagemagick.org/magick_svn/ (Subversion repository mirror)

    If you want to add a new mirror, please contact us.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/escape.html b/www/escape.html index 4605cb396..8c60944ad 100644 --- a/www/escape.html +++ b/www/escape.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Format and Print Image Properties @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Use the -format option to print properties associated with an image in a format of your choosing. You can include the image filename, type, width, height, EXIF data, or other image attributes by embedding special format characters:

    @@ -427,22 +427,22 @@ for an image with filename bird.miff and whose width is 512 and heigh 9:10 Confirmed ObjectData Size - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/examples.html b/www/examples.html index 0a1847336..66cce0e07 100644 --- a/www/examples.html +++ b/www/examples.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Examples of ImageMagick Usage @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Here are a few examples of what you can do with an image using ImageMagick from the command line, a program interface, or script. You can generate this image yourself with this PerlMagick script, examples.pl.


    [ImageMagick]
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/exception.html b/www/exception.html index 0e93a08c6..b4af46ee0 100644 --- a/www/exception.html +++ b/www/exception.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Exceptions @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    ImageMagick returns a status of 0 whenever a command or algorithm successfully complete without complaint. A warning code generally is typically just a notice that something unusual occurred but the command or algorithm still completed and most likely the results are still usable. An error means the command or algorithm could not complete as expected and any results are unreliable. A fatal error means the command or algorithm could not complete and the process exits prematurely and no results are returned.

    @@ -340,22 +340,22 @@
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/formats.html b/www/formats.html index 0f21672d8..0221eaaf9 100644 --- a/www/formats.html +++ b/www/formats.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Formats @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Introducing Image Formats

    @@ -1728,22 +1728,22 @@ the supported image formats.

    - - - - - -
    - - + + + + + +
    + + diff --git a/www/fx.html b/www/fx.html index ce5a8cdea..d174ba6f4 100644 --- a/www/fx.html +++ b/www/fx.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: The Fx Special Effects Image Operator @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    The Fx Special Effects Image Operator

    @@ -452,22 +452,22 @@
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/high-dynamic-range.html b/www/high-dynamic-range.html index 0dddc85e6..5a8488aae 100644 --- a/www/high-dynamic-range.html +++ b/www/high-dynamic-range.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: High Dynamic-Range Images @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - + + +
    + +
    + +

    Introduction to High Dynamic-Range Images

    @@ -178,22 +178,22 @@

    $magick> identify -versionVersion: ImageMagick 6.5.5-6 2009-09-01 Q16 HDRI http://www.imagemagick.org

    - - - - - -
    - - + + + + + +
    + + diff --git a/www/history.html b/www/history.html index 968929cfc..38d879b05 100644 --- a/www/history.html +++ b/www/history.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: History @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - -

    -I swear by my life and my love of it that I will never live for the sake of another man, nor ask another man to live for mine.
    -- John Galt in "Atlas Shrugged", by Ayn Rand

    - -

    ImageMagick started with a request from my DuPont supervisor, Dr. David Pensak, to display computer-generated images on a monitor only capable of showing 256 unique colors simultaneously. In 1987, monitors that could display 24-bit true color images were rare and quite expensive. There are a plethora of Chemists and Biologists at DuPont, but very were few Computer Scientists to confer with. Instead, I turned to Usenet for help, and posted a request for an algorithm to reduce 24-bit images to 256 colors. Paul Raveling of the USC Information Sciences Institute responded, with not only a solution, but one that was already in source code and available from his FTP site. Over the course of the next few years, I had frequent opportunities to get help with other vexing computer science problems I encountered in the course of doing my job at DuPont. Eventually, I felt compelled to give thanks for the help I received from the knowledgeable folks on Usenet. I decided to freely release the image processing tools I developed to the world so that others could benefit from my efforts.

    - -

    In 1990 there were few freely available image processing tools so I expected an enthusiastic reception. Before a release was possible, Dr. Pensak had to convince upper management at DuPont to give away what they what they might perceive as valuable intellectual property. I suspect they agreed simply because ImageMagick was not chemically or biologically based, so they did not understand its value to the company. Either way, ImageMagick would not be available today without DuPont's permission to distribute it. ImageMagick was posted to Usenet's comp.archives group on August 1st, 1990.

    - -

    After ImageMagick's release, I got the occasional request for an enhancement, a report of a bug, or a contribution to the source base. In the mid 90's, I released the culmination of these efforts, ImageMagick 4.2.9. At the time I thought ImageMagick was complete. It was being utilized by thousands of users world-wide, and it was even showing up as part of a new operating system being distributed freely, called "Linux".

    - -

    The next generation of ImageMagick, version 5, started when Bob Friesenhahn contacted me and suggested I improve the application programming interface so users could leverage the image-processing algorithms from other languages or scripts. Bob also wrote a C++ wrapper for ImageMagick called Magick++, and began contributing enhancements such as the module loader facility, automatic file identification, and test suites. In the mean-time, the project picked up a few other notable contributors: Glenn Randers-Pehrson, William Radcliffe, and Leonard Rosenthol. By now, ImageMagick was being utilized by tens of thousands of users, who reacted gruffly when a new release broke an existing API call or script. The other members of the group wanted to freeze the API and command line but I was not quite ready, since ImageMagick was not quite what I had envisioned it could be. Bob and the others created a fork of ImageMagick. I alone continued to develop ImageMagick.

    - -

    I did not work alone for long. Anthony Thyssen contacted me about deficiencies in the ImageMagick command line programs. He pointed out that the command line was confusing when dealing with more than one image. He suggested an orderly, well-defined method for dealing with the command line, and this became ImageMagick version 6 (the current release). His efforts are detailed on his web pages, Examples of ImageMagick Usage. I highly recommend that you peruse his site. He has illustrated the power of ImageMagick in ways that even I did not know were possible.

    - -

    It has been 20 years since ImageMagick was first conceived, and it looks likely that it will be here for another 20 and beyond. The command line and the application programming interface are stable, but there is still work to do. We are currently working on improving the conjure utility, Scalable Vector Graphics (SVG) support, and adding better support for video formats.

    - -

    Cristy
    Principal ImageMagick Architect

    - -
    - - - -
    - - + + + + +
    + +

    +I swear by my life and my love of it that I will never live for the sake of another man, nor ask another man to live for mine.
    -- John Galt in "Atlas Shrugged", by Ayn Rand

    + +

    ImageMagick started with a request from my DuPont supervisor, Dr. David Pensak, to display computer-generated images on a monitor only capable of showing 256 unique colors simultaneously. In 1987, monitors that could display 24-bit true color images were rare and quite expensive. There are a plethora of Chemists and Biologists at DuPont, but very were few Computer Scientists to confer with. Instead, I turned to Usenet for help, and posted a request for an algorithm to reduce 24-bit images to 256 colors. Paul Raveling of the USC Information Sciences Institute responded, with not only a solution, but one that was already in source code and available from his FTP site. Over the course of the next few years, I had frequent opportunities to get help with other vexing computer science problems I encountered in the course of doing my job at DuPont. Eventually, I felt compelled to give thanks for the help I received from the knowledgeable folks on Usenet. I decided to freely release the image processing tools I developed to the world so that others could benefit from my efforts.

    + +

    In 1990 there were few freely available image processing tools so I expected an enthusiastic reception. Before a release was possible, Dr. Pensak had to convince upper management at DuPont to give away what they what they might perceive as valuable intellectual property. I suspect they agreed simply because ImageMagick was not chemically or biologically based, so they did not understand its value to the company. Either way, ImageMagick would not be available today without DuPont's permission to distribute it. ImageMagick was posted to Usenet's comp.archives group on August 1st, 1990.

    + +

    After ImageMagick's release, I got the occasional request for an enhancement, a report of a bug, or a contribution to the source base. In the mid 90's, I released the culmination of these efforts, ImageMagick 4.2.9. At the time I thought ImageMagick was complete. It was being utilized by thousands of users world-wide, and it was even showing up as part of a new operating system being distributed freely, called "Linux".

    + +

    The next generation of ImageMagick, version 5, started when Bob Friesenhahn contacted me and suggested I improve the application programming interface so users could leverage the image-processing algorithms from other languages or scripts. Bob also wrote a C++ wrapper for ImageMagick called Magick++, and began contributing enhancements such as the module loader facility, automatic file identification, and test suites. In the mean-time, the project picked up a few other notable contributors: Glenn Randers-Pehrson, William Radcliffe, and Leonard Rosenthol. By now, ImageMagick was being utilized by tens of thousands of users, who reacted gruffly when a new release broke an existing API call or script. The other members of the group wanted to freeze the API and command line but I was not quite ready, since ImageMagick was not quite what I had envisioned it could be. Bob and the others created a fork of ImageMagick. I alone continued to develop ImageMagick.

    + +

    I did not work alone for long. Anthony Thyssen contacted me about deficiencies in the ImageMagick command line programs. He pointed out that the command line was confusing when dealing with more than one image. He suggested an orderly, well-defined method for dealing with the command line, and this became ImageMagick version 6 (the current release). His efforts are detailed on his web pages, Examples of ImageMagick Usage. I highly recommend that you peruse his site. He has illustrated the power of ImageMagick in ways that even I did not know were possible.

    + +

    It has been 20 years since ImageMagick was first conceived, and it looks likely that it will be here for another 20 and beyond. The command line and the application programming interface are stable, but there is still work to do. We are currently working on improving the conjure utility, Scalable Vector Graphics (SVG) support, and adding better support for video formats.

    + +

    Cristy
    Principal ImageMagick Architect

    + +
    + + + +
    + + diff --git a/www/identify.html b/www/identify.html index 89be80b0d..2455bb6d0 100644 --- a/www/identify.html +++ b/www/identify.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Command-line Tools: Identify @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - - + + +
    + +
    + + +
    @@ -401,22 +401,22 @@ transparent, extract, background, or shape the alpha channel
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/import.html b/www/import.html index 0d43b0bc6..98d1cb169 100644 --- a/www/import.html +++ b/www/import.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Import @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -481,22 +481,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/index.html b/www/index.html index d7de3cfa3..86c0deeaf 100644 --- a/www/index.html +++ b/www/index.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Convert, Edit, and Compose Images @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -206,22 +206,22 @@

    To join the ImageMagick user community, try the discourse server or mailing lists. Both permit you to review questions or comments (with informed responses) posed by ImageMagick users as well as an opportunity to ask your own questions.

    - -
    - - - -
    - - + +
    + + + +
    + + diff --git a/www/install-source.html b/www/install-source.html index a92cdef14..b4d3162ec 100644 --- a/www/install-source.html +++ b/www/install-source.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Install from Source @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - + + +
    + +
    + +
    @@ -209,22 +209,22 @@ to compile the program and on completion run the program.

    The above instructions will satisfy a great number of ImageMagick users, but we suspect a few will have additional questions or problems to consider. For example, what does one do if ImageMagick fails to configure or compile? Or what if you want to install ImageMagick in a place other than the ImageMagick-6.5.5/VisualMagick/bin folder? Or perhaps you want to build and install the ImageMagickObject COM+ component. You will find the answer to these questions, and more, in Advanced Windows Source Installation.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/jp2.html b/www/jp2.html index da0a2ecc0..3e5745068 100644 --- a/www/jp2.html +++ b/www/jp2.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: JP2 Encoding Options @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    ImageMagick's JPEG-2000 image formats, JP2 and JPC, accept a plethora of encoding options as detailed below. As an example, suppose you are interested in these options:

    @@ -248,22 +248,22 @@
    numgbits=n
    Set the number of guard bits to n.
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/license.html b/www/license.html index 7eeb6bc51..ccac8eba4 100644 --- a/www/license.html +++ b/www/license.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: License @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Before we get to the text of the license lets just review what the license says in simple terms:

    @@ -263,22 +263,22 @@ License for the specific language governing permissions and limitations under the License. - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/links.html b/www/links.html index 7f8aca779..89c528ff4 100644 --- a/www/links.html +++ b/www/links.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Links @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Listed here are a number of external web sites that are related to ImageMagick. ImageMagick Studio does not maintain or endorse these sites, excepting the Wizard's Toolkit site, but we feel they are a helpful adjunct to the ImageMagick web site.

    @@ -256,22 +256,22 @@
    Computational Simulation of Multi-Body Interactions with O(n) Scaling
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/magick-core.html b/www/magick-core.html index 2465839b8..ba349c2da 100644 --- a/www/magick-core.html +++ b/www/magick-core.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: MagickCore, Low-level C API for ImageMagick @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    The MagickCore API is a low-level interface between the C programming language and the ImageMagick image processing libraries and is recommended for wizard-level programmers only. Unlike the MagickWand C API which uses only a few opaque types and accessors, with MagickCore you almost exlusively access the structure members directly. A description of the MagickCore public methods are found here:

    @@ -271,22 +271,22 @@ }
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/magick-vector-graphics.html b/www/magick-vector-graphics.html index 2fb0ecf4b..90e62c206 100644 --- a/www/magick-vector-graphics.html +++ b/www/magick-vector-graphics.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Magick Vector Graphics @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - + + +
    + +
    + +

    Introduction to Vector Graphics

    @@ -1039,22 +1039,22 @@ command line, from an MVG file, from an SVG
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/magick-wand.html b/www/magick-wand.html index 1a78dce99..f2723d22c 100644 --- a/www/magick-wand.html +++ b/www/magick-wand.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: MagickWand, C API for ImageMagick @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    The MagickWand API is the recommended interface between the C programming language and the ImageMagick image processing libraries. Unlike the MagickCore C API, MagickWand uses only a few opaque types. Accessors are available to set or get important wand properties. A description of the MagickWand public methods are found here:

    @@ -444,22 +444,22 @@ int main(int argc,char **argv) }
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/mailing-list.html b/www/mailing-list.html index 385dcea98..b0e88e0e5 100644 --- a/www/mailing-list.html +++ b/www/mailing-list.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Mailing Lists @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    The ImageMagick mailing lists are a low noise and subject oriented. The subject is the discussion of ImageMagick software and its use. Although the lists are unmoderated, do not post off-topic or test messages to the lists. Off-topic postings could result in the offender being silently removed from the lists and prevented from rejoining.

    @@ -173,22 +173,22 @@

    Announcements pertaining to ImageMagick, or ImageMagick related software. This list is moderated and is not used for any discussion

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/miff.html b/www/miff.html index c1744803d..559459383 100644 --- a/www/miff.html +++ b/www/miff.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Magick Image File Format @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -294,22 +294,22 @@ or fewer colors in the image, each byte of image data contains an index value. I

    MIFF files may contain more than one image. Simply concatenate each individual image (composed of a header and image data) into one file.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/mirrors.html b/www/mirrors.html index 5ff91d30c..b7bcef2cf 100644 --- a/www/mirrors.html +++ b/www/mirrors.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Mirrors @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    The ImageMagick web site is available from a variety of web mirrors around the world listed below.

    France
    @@ -153,22 +153,22 @@
    http://www.imagemagick.org/

    If you want to add a new web-site mirror, please contact us.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/mogrify.html b/www/mogrify.html index 1362887ca..227ebdae4 100644 --- a/www/mogrify.html +++ b/www/mogrify.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Mogrify @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -1234,22 +1234,22 @@ transparent, extract, background, or shape the alpha channel
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/montage.html b/www/montage.html index 2a61b9017..76bc09202 100644 --- a/www/montage.html +++ b/www/montage.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Montage @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -684,22 +684,22 @@ transparent, extract, background, or shape the alpha channel
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/motion-picture.html b/www/motion-picture.html index 48e7762f5..22a3a129c 100644 --- a/www/motion-picture.html +++ b/www/motion-picture.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Motion Picture Digital Images @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    Introduction to Motion Picture Formats

    @@ -265,22 +265,22 @@
    - - - - - -
    - - + + + + + +
    + + diff --git a/www/perl-magick.html b/www/perl-magick.html index 6cf3438e5..f0adfa037 100644 --- a/www/perl-magick.html +++ b/www/perl-magick.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: PerlMagick, Perl API for ImageMagick @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - + + +
    + + - - - -
    - - + + + + + +
    + + diff --git a/www/quantize.html b/www/quantize.html index b54353670..d9637fd32 100644 --- a/www/quantize.html +++ b/www/quantize.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Color Reduction Utilizing Adaptive Spatial Subdivision @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -271,22 +271,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/resources.html b/www/resources.html index 770e725c9..177f6a1de 100644 --- a/www/resources.html +++ b/www/resources.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Resources @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -391,22 +391,22 @@ file or data stream.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/search.html b/www/search.html index 696bc1fc5..c28721334 100644 --- a/www/search.html +++ b/www/search.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Search @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -152,22 +152,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/sitemap.html b/www/sitemap.html index 94afc1217..68c77fc52 100644 --- a/www/sitemap.html +++ b/www/sitemap.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Site Map @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - - -

    Use this ImageMagick sitemap to quickly jump to one of the areas of interest listed below. If you can't find what you want on this page, try our site search.

    - -
    -

    ImageMagick Overview

    -
    - -
    -
    Introduction: convert, edit, and compose images from the command-line or program interface.
    -
    Examples of ImageMagick usage: a few examples that show what you can do with an image using ImageMagick.
    -
    Anthony Thyssen's examples of ImageMagick usage: a comprehensive tutorial of using ImageMagick from the command line.
    -
    Color names: how to specify a color name, a hex color, or a numerical RGB, RGBA, HSL, HSLA, CMYK, or CMYKA color.
    -
    Resources: ImageMagick depends on external resources including configuration files, loadable modules, fonts, and environment variables.
    -
    Architecture: get to know more about the software and algorithms behind ImageMagick.
    -
    License: the legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick.
    -
    - -
    -

    Download ImageMagick

    -
    - -
    -
    Download ImageMagick: ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors.
    - -
    - -
    -

    Install ImageMagick

    -
    - -
    -
    You can install ImageMagick from source. However, if don't have a proper development environment or if you're anxious to get started, download a ready-to-run Unix or Windows executable.
    - -
    - -
    -

    Command-line Tools

    -
    - -
    -
    Command-line tools: overview of the ImageMagick commands.
    -
      -
      animate: animates an image sequence on any X server.
      -
      compare: mathematically and visually annotate the difference between an image and its reconstruction.
      -
      composite: overlaps one image over another.
      -
      conjure: interprets and executes scripts written in the Magick Scripting Language (MSL).
      -
      convert: convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and more.
      -
      display: displays an image or image sequence on any X server.
      -
      identify: describes the format and characteristics of one or more image files.
      -
      import: saves any visible window on an X server and outputs it as an image file.
      -
      mogrify: resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and more.
      -
      montage: create a composite image by combining several separate images.
      -
      stream: a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats.
      -
    -
    Command line processing: the anatomy of the command line.
    -
    Command line options: annotated list of all options that can appear on the command-line.
    -
    Fx: apply a mathematical expression to an image or image channels.
    -
    Fred's ImageMagick Scripts: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.
    -
    - -
    -

    Program Interfaces

    -
    - -
    -
    Program interfaces: application programming interfaces.
    -
      -
      ChMagick: is a Ch an embeddable MagickCore C/C++ interpreter for cross-platform scripting.
      -
      CL-Magick: provides a Common Lisp interface to the ImageMagick library.
      -
      G2F: implements an Ada 95 binding to a subset of the low-level MagickCore library.
      -
      Magick++: provides an object-oriented C++ interface to ImageMagick.
      -
      IMagick: is a native PHP extension to create and modify images using the ImageMagick API.
      -
      JMagick: provides an object-oriented Java interface to ImageMagick.
      -
      MagickCore: C API, recommended for wizard-level developers.
      -
      MagickWand: convert, compose, and edit images from the C language.
      -
      MagickWand for PHP: a native PHP-extension to the ImageMagick MagickWand API.
      -
      nMagick: is a port of the ImageMagick library to the haXe and Neko platforms.
      -
      PascalMagick: a Pascal binding for the MagickWand API and also the low-level MagickCore library.
      -
      PerlMagick: convert, compose, and edit images from the Perl language.
      -
      PythonMagick: an object-oriented Python interface to ImageMagick.
      -
      RMagick: is an interface between the Ruby programming language and ImageMagick.
      -
      TclMagick: a native Tcl-extension to the ImageMagick MagickWand API.
      -
    -
    - -
    -

    Image Formats

    -
    -
    -
    Supported image formats: annotated list of all image formats that ImageMagick can read and/or write.
    -
    Motion picture digital images: use SMPTE DPX Version 2.0 to process images used by the motion picture (film and high-definition) industry.
    -
    High dynamic-range images: accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.
    -
    - -
    -

    Getting Help

    -
    - -
    -
    Definitive Guide to ImageMagick: this book explains ImageMagick in a practical, learn-by-example fashion.
    -
    ImageMagick Tricks: this book is packed with examples of photo manipulations, logo creation, animations, and complete web projects.
    -
    Discourse server: get help from fellow ImageMagick users and developers, post to these forums.
    -
    Mailing list: get help from fellow ImageMagick users and developers, post to these mailing lists.
    -
    Contact the Wizards: for issues outside the scope of the discourse server and mailing list, contact the wizards.
    -
    - -
    -

    Support ImageMagick

    -
    - -
    -
    Report bugs and vulnerabilities: our highest priority is to fix security defects and bug reports, usually within 48 hours of your report. The bug discourse server requires that you register. If you do not want to register, you can contact the ImageMagick developers with a convenient web form.
    -
    Sponsor ImageMagick: contribute bug fixes, enhancements, hardware, funds, etc. to ensure the ImageMagick project thrives.
    -
    ImageMagick t-shirt: donate $25 USD and we acknowledge your gift with a logoed t-shirt.
    -
    - -
    -

    Miscellaneous Topics

    -
    - -
    -
    Color reduction: color reduction utilizing adaptive spatial subdivision.
    -
    Magick Image File Format: MIFF is ImageMagick's own platform-independent format for storing bitmap images.
    -
    Magick Vector Graphics: a modularized language for describing two-dimensional vector and mixed vector/raster graphics in ImageMagick.
    -
    Format and Print Image Properties: print properties associated with an image in a format of your choosing.
    -
    Encipher or decipher an image: convert ordinary images into unintelligible gibberish and back again.
    -
    ImageMagick change log: recent ImageMagick bug fixes and enhancements.
    -
    ImageMagick history: the humble beginnings of ImageMagick.
    -
    Web-site mirrors: the web site is available from a variety of web mirrors around the world.
    -
    - -
    -

    Technology Sandbox

    -
    -
    -
    Fast Fourier Transforms Toolkit
    -
    Tests Of FFT Processing
    -
    - - -
    - - - -
    - - + + + + +
    + + + +

    Use this ImageMagick sitemap to quickly jump to one of the areas of interest listed below. If you can't find what you want on this page, try our site search.

    + +
    +

    ImageMagick Overview

    +
    + +
    +
    Introduction: convert, edit, and compose images from the command-line or program interface.
    +
    Examples of ImageMagick usage: a few examples that show what you can do with an image using ImageMagick.
    +
    Anthony Thyssen's examples of ImageMagick usage: a comprehensive tutorial of using ImageMagick from the command line.
    +
    Color names: how to specify a color name, a hex color, or a numerical RGB, RGBA, HSL, HSLA, CMYK, or CMYKA color.
    +
    Resources: ImageMagick depends on external resources including configuration files, loadable modules, fonts, and environment variables.
    +
    Architecture: get to know more about the software and algorithms behind ImageMagick.
    +
    License: the legally binding and authoritative terms and conditions for use, reproduction, and distribution of ImageMagick.
    +
    + +
    +

    Download ImageMagick

    +
    + +
    +
    Download ImageMagick: ImageMagick source and binary distributions are available from a variety of FTP and Web mirrors.
    + +
    + +
    +

    Install ImageMagick

    +
    + +
    +
    You can install ImageMagick from source. However, if don't have a proper development environment or if you're anxious to get started, download a ready-to-run Unix or Windows executable.
    + +
    + +
    +

    Command-line Tools

    +
    + +
    +
    Command-line tools: overview of the ImageMagick commands.
    +
      +
      animate: animates an image sequence on any X server.
      +
      compare: mathematically and visually annotate the difference between an image and its reconstruction.
      +
      composite: overlaps one image over another.
      +
      conjure: interprets and executes scripts written in the Magick Scripting Language (MSL).
      +
      convert: convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and more.
      +
      display: displays an image or image sequence on any X server.
      +
      identify: describes the format and characteristics of one or more image files.
      +
      import: saves any visible window on an X server and outputs it as an image file.
      +
      mogrify: resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and more.
      +
      montage: create a composite image by combining several separate images.
      +
      stream: a lightweight tool to stream one or more pixel components of the image or portion of the image to your choice of storage formats.
      +
    +
    Command line processing: the anatomy of the command line.
    +
    Command line options: annotated list of all options that can appear on the command-line.
    +
    Fx: apply a mathematical expression to an image or image channels.
    +
    Fred's ImageMagick Scripts: a plethora of command-line scripts that perform geometric transforms, blurs, sharpens, edging, noise removal, and color manipulations.
    +
    + +
    +

    Program Interfaces

    +
    + +
    +
    Program interfaces: application programming interfaces.
    +
      +
      ChMagick: is a Ch an embeddable MagickCore C/C++ interpreter for cross-platform scripting.
      +
      CL-Magick: provides a Common Lisp interface to the ImageMagick library.
      +
      G2F: implements an Ada 95 binding to a subset of the low-level MagickCore library.
      +
      Magick++: provides an object-oriented C++ interface to ImageMagick.
      +
      IMagick: is a native PHP extension to create and modify images using the ImageMagick API.
      +
      JMagick: provides an object-oriented Java interface to ImageMagick.
      +
      MagickCore: C API, recommended for wizard-level developers.
      +
      MagickWand: convert, compose, and edit images from the C language.
      +
      MagickWand for PHP: a native PHP-extension to the ImageMagick MagickWand API.
      +
      nMagick: is a port of the ImageMagick library to the haXe and Neko platforms.
      +
      PascalMagick: a Pascal binding for the MagickWand API and also the low-level MagickCore library.
      +
      PerlMagick: convert, compose, and edit images from the Perl language.
      +
      PythonMagick: an object-oriented Python interface to ImageMagick.
      +
      RMagick: is an interface between the Ruby programming language and ImageMagick.
      +
      TclMagick: a native Tcl-extension to the ImageMagick MagickWand API.
      +
    +
    + +
    +

    Image Formats

    +
    +
    +
    Supported image formats: annotated list of all image formats that ImageMagick can read and/or write.
    +
    Motion picture digital images: use SMPTE DPX Version 2.0 to process images used by the motion picture (film and high-definition) industry.
    +
    High dynamic-range images: accurately represent the wide range of intensity levels found in real scenes ranging from the brightest direct sunlight to the deepest darkest shadows.
    +
    + +
    +

    Getting Help

    +
    + +
    +
    Definitive Guide to ImageMagick: this book explains ImageMagick in a practical, learn-by-example fashion.
    +
    ImageMagick Tricks: this book is packed with examples of photo manipulations, logo creation, animations, and complete web projects.
    +
    Discourse server: get help from fellow ImageMagick users and developers, post to these forums.
    +
    Mailing list: get help from fellow ImageMagick users and developers, post to these mailing lists.
    +
    Contact the Wizards: for issues outside the scope of the discourse server and mailing list, contact the wizards.
    +
    + +
    +

    Support ImageMagick

    +
    + +
    +
    Report bugs and vulnerabilities: our highest priority is to fix security defects and bug reports, usually within 48 hours of your report. The bug discourse server requires that you register. If you do not want to register, you can contact the ImageMagick developers with a convenient web form.
    +
    Sponsor ImageMagick: contribute bug fixes, enhancements, hardware, funds, etc. to ensure the ImageMagick project thrives.
    +
    ImageMagick t-shirt: donate $25 USD and we acknowledge your gift with a logoed t-shirt.
    +
    + +
    +

    Miscellaneous Topics

    +
    + +
    +
    Color reduction: color reduction utilizing adaptive spatial subdivision.
    +
    Magick Image File Format: MIFF is ImageMagick's own platform-independent format for storing bitmap images.
    +
    Magick Vector Graphics: a modularized language for describing two-dimensional vector and mixed vector/raster graphics in ImageMagick.
    +
    Format and Print Image Properties: print properties associated with an image in a format of your choosing.
    +
    Encipher or decipher an image: convert ordinary images into unintelligible gibberish and back again.
    +
    ImageMagick change log: recent ImageMagick bug fixes and enhancements.
    +
    ImageMagick history: the humble beginnings of ImageMagick.
    +
    Web-site mirrors: the web site is available from a variety of web mirrors around the world.
    +
    + +
    +

    Technology Sandbox

    +
    +
    +
    Fast Fourier Transforms Toolkit
    +
    Tests Of FFT Processing
    +
    + + +
    + + + +
    + + diff --git a/www/sponsors.html b/www/sponsors.html index d3c48f731..ffcf0dec8 100644 --- a/www/sponsors.html +++ b/www/sponsors.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Sponsors @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + + - - - - - -
    - - + + + + + +
    + + diff --git a/www/stream.html b/www/stream.html index 1b63987c2..016729ce8 100644 --- a/www/stream.html +++ b/www/stream.html @@ -1,13 +1,13 @@ - - - - - - - + + + + + + + ImageMagick: Command-line Tools: Stream @@ -24,30 +24,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -78,7 +78,7 @@ -
    +
    @@ -103,22 +103,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +
    @@ -327,22 +327,22 @@
    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/subversion.html b/www/subversion.html index 7b47a90ec..b8f1d23ac 100644 --- a/www/subversion.html +++ b/www/subversion.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Subversion @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - - + + +
    + +
    + +

    The ImageMagick stable and development source releases are available from Subversion. This a convenient way for developers to download the ImageMagick source, fix bugs, or add new features.

    @@ -162,22 +162,22 @@ ImageMagick-6.5.5

    $magick> svn update

    and only the files which have changed are updated.

    - -
    - - - -
    - - + + + + + +
    + + diff --git a/www/t-shirt.html b/www/t-shirt.html index 9f1f34b43..8921e47a7 100644 --- a/www/t-shirt.html +++ b/www/t-shirt.html @@ -1,12 +1,12 @@ - - - - - - + + + + + + ImageMagick: Logo T-Shirt @@ -23,30 +23,30 @@ - - - - - -
    - + + + + + +
    + -
    +
    @@ -77,7 +77,7 @@ -
    +
    @@ -102,22 +102,22 @@ -
    +
    -
    +
    -
    +
    -
    +
    - - - - -
    - + + +
    + +
    +

    [ImageMagick T-Shirt]

    @@ -177,22 +177,22 @@

    Be sure to specify your address and your preferred size, M (medium), L (large), or XL (extra-large). Other sizes may be available but check with us first.

    Shipping is free in the USA. Add $4.00 USD for shipping to Canada and Mexico. Add $8.00 USD for all other locations.

    - -
    - - - -
    - - + + + + + +
    + +