From: cristy Date: Thu, 15 Sep 2011 13:27:36 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~7001 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=633f0c61bb0414b644dccf4f335576a10bca0329;p=imagemagick --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index 9ae4c158e..1d53b7cbd 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -515,7 +515,7 @@ void Magick::Image::border( const Geometry &geometry_ ) ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); MagickCore::Image* newImage = - BorderImage( image(), &borderInfo, &exceptionInfo); + BorderImage( image(), &borderInfo, image()->compose, &exceptionInfo); replaceImage( newImage ); throwException( exceptionInfo ); (void) DestroyExceptionInfo( &exceptionInfo ); @@ -1126,7 +1126,7 @@ void Magick::Image::frame ( const Geometry &geometry_ ) ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); MagickCore::Image* newImage = - FrameImage( image(), &info, &exceptionInfo ); + FrameImage( image(), &info, image()->compose, &exceptionInfo ); replaceImage( newImage ); throwException( exceptionInfo ); (void) DestroyExceptionInfo( &exceptionInfo ); @@ -1146,7 +1146,7 @@ void Magick::Image::frame ( const size_t width_, ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); MagickCore::Image* newImage = - FrameImage( image(), &info, &exceptionInfo ); + FrameImage( image(), &info, image()->compose, &exceptionInfo ); replaceImage( newImage ); throwException( exceptionInfo ); (void) DestroyExceptionInfo( &exceptionInfo ); diff --git a/MagickCore/decorate.c b/MagickCore/decorate.c index 4b8f3f431..8cc3176ca 100644 --- a/MagickCore/decorate.c +++ b/MagickCore/decorate.c @@ -86,19 +86,22 @@ % The format of the BorderImage method is: % % Image *BorderImage(const Image *image,const RectangleInfo *border_info, -% ExceptionInfo *exception) +% const CompositeOperator compose,ExceptionInfo *exception) % % A description of each parameter follows: % % o image: the image. % -% o border_info: Define the width and height of the border. +% o border_info: define the width and height of the border. +% +% o compose: the composite operator. % % o exception: return any errors or warnings in this structure. % */ MagickExport Image *BorderImage(const Image *image, - const RectangleInfo *border_info,ExceptionInfo *exception) + const RectangleInfo *border_info,const CompositeOperator compose, + ExceptionInfo *exception) { Image *border_image, @@ -122,7 +125,7 @@ MagickExport Image *BorderImage(const Image *image, if (clone_image == (Image *) NULL) return((Image *) NULL); clone_image->matte_color=image->border_color; - border_image=FrameImage(clone_image,&frame_info,exception); + border_image=FrameImage(clone_image,&frame_info,compose,exception); clone_image=DestroyImage(clone_image); if (border_image != (Image *) NULL) border_image->matte_color=image->matte_color; @@ -149,7 +152,7 @@ MagickExport Image *BorderImage(const Image *image, % The format of the FrameImage method is: % % Image *FrameImage(const Image *image,const FrameInfo *frame_info, -% ExceptionInfo *exception) +% const CompositeOperator compose,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -157,11 +160,13 @@ MagickExport Image *BorderImage(const Image *image, % % o frame_info: Define the width and height of the frame and its bevels. % +% o compose: the composite operator. +% % o exception: return any errors or warnings in this structure. % */ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info, - ExceptionInfo *exception) + const CompositeOperator compose,ExceptionInfo *exception) { #define FrameImageTag "Frame/Image" @@ -425,8 +430,8 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info, /* Set frame interior to interior color. */ - if ((image->compose != CopyCompositeOp) && - ((image->compose != OverCompositeOp) || (image->matte != MagickFalse))) + if ((compose != CopyCompositeOp) && ((compose != OverCompositeOp) || + (image->matte != MagickFalse))) for (x=0; x < (ssize_t) image->columns; x++) { SetPixelPixelInfo(frame_image,&interior,q); @@ -584,14 +589,14 @@ MagickExport Image *FrameImage(const Image *image,const FrameInfo *frame_info, } frame_view=DestroyCacheView(frame_view); image_view=DestroyCacheView(image_view); - if ((image->compose != CopyCompositeOp) && - ((image->compose != OverCompositeOp) || (image->matte != MagickFalse))) + if ((compose != CopyCompositeOp) && ((compose != OverCompositeOp) || + (image->matte != MagickFalse))) { x=(ssize_t) (frame_info->outer_bevel+(frame_info->x-bevel_width)+ frame_info->inner_bevel); y=(ssize_t) (frame_info->outer_bevel+(frame_info->y-bevel_width)+ frame_info->inner_bevel); - (void) CompositeImage(frame_image,image->compose,image,x,y); + (void) CompositeImage(frame_image,compose,image,x,y); } return(frame_image); } diff --git a/MagickCore/decorate.h b/MagickCore/decorate.h index 30ba0887e..4b8fdddf4 100644 --- a/MagickCore/decorate.h +++ b/MagickCore/decorate.h @@ -38,8 +38,10 @@ typedef struct _FrameInfo } FrameInfo; extern MagickExport Image - *BorderImage(const Image *,const RectangleInfo *,ExceptionInfo *), - *FrameImage(const Image *,const FrameInfo *,ExceptionInfo *); + *BorderImage(const Image *,const RectangleInfo *,const CompositeOperator, + ExceptionInfo *), + *FrameImage(const Image *,const FrameInfo *,const CompositeOperator, + ExceptionInfo *); extern MagickExport MagickBooleanType RaiseImage(Image *,const RectangleInfo *,const MagickBooleanType, diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c index 5d77b19eb..049b11d0e 100644 --- a/MagickCore/delegate.c +++ b/MagickCore/delegate.c @@ -96,8 +96,8 @@ static const char " " " " " " - " " - " " + " " + " " " " " " " " diff --git a/MagickCore/display.c b/MagickCore/display.c index b86406da2..555cbe699 100644 --- a/MagickCore/display.c +++ b/MagickCore/display.c @@ -8861,7 +8861,8 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, exception); (void) ParsePageGeometry(*image,geometry,&page_geometry, exception); - border_image=BorderImage(*image,&page_geometry,exception); + border_image=BorderImage(*image,&page_geometry,(*image)->compose, + exception); if (border_image != (Image *) NULL) { *image=DestroyImage(*image); @@ -8917,7 +8918,7 @@ static Image *XMagickCommand(Display *display,XResourceInfo *resource_info, frame_info.y=(ssize_t) frame_info.height; frame_info.width=(*image)->columns+2*frame_info.width; frame_info.height=(*image)->rows+2*frame_info.height; - frame_image=FrameImage(*image,&frame_info,exception); + frame_image=FrameImage(*image,&frame_info,(*image)->compose,exception); if (frame_image != (Image *) NULL) { *image=DestroyImage(*image); diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 7c741a52e..ac036f695 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -4163,7 +4163,7 @@ MagickExport Image *ShadowImage(const Image *image,const double opacity, border_info.x=0; border_info.y=0; (void) QueryColorDatabase("none",&clone_image->border_color,exception); - border_image=BorderImage(clone_image,&border_info,exception); + border_image=BorderImage(clone_image,&border_info,image->compose,exception); clone_image=DestroyImage(clone_image); if (border_image == (Image *) NULL) return((Image *) NULL); diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index dd61047ab..88c4ce443 100644 --- a/MagickCore/magick-config.h +++ b/MagickCore/magick-config.h @@ -435,15 +435,15 @@ #endif /* Define if you have the header file. */ -/* #undef HAVE_LCMS2_H */ +#ifndef MAGICKCORE_HAVE_LCMS2_H +#define MAGICKCORE_HAVE_LCMS2_H 1 +#endif /* Define if you have the header file. */ /* #undef HAVE_LCMS2_LCMS2_H */ /* Define if you have the header file. */ -#ifndef MAGICKCORE_HAVE_LCMS_H -#define MAGICKCORE_HAVE_LCMS_H 1 -#endif +/* #undef HAVE_LCMS_H */ /* Define if you have the header file. */ /* #undef HAVE_LCMS_LCMS_H */ @@ -1166,9 +1166,7 @@ #endif /* Define if you have JBIG library */ -#ifndef MAGICKCORE_JBIG_DELEGATE -#define MAGICKCORE_JBIG_DELEGATE 1 -#endif +/* #undef JBIG_DELEGATE */ /* Define if you have JPEG version 2 "Jasper" library */ #ifndef MAGICKCORE_JP2_DELEGATE @@ -1197,9 +1195,7 @@ #endif /* Define if you have LQR library */ -#ifndef MAGICKCORE_LQR_DELEGATE -#define MAGICKCORE_LQR_DELEGATE 1 -#endif +/* #undef LQR_DELEGATE */ /* Define if using libltdl to support dynamically loadable modules */ #ifndef MAGICKCORE_LTDL_DELEGATE @@ -1211,7 +1207,7 @@ /* Define to the system default library search path. */ #ifndef MAGICKCORE_LT_DLSEARCH_PATH -#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/qt-3.3/lib:/usr/lib64/xulrunner-2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/alliance/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/usr/lib64/kicad:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mpich2/lib/:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/octave/3.4.2:/usr/lib64/openmotif:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1458,9 +1454,7 @@ /* Define if you have WEBP library */ -#ifndef MAGICKCORE_WEBP_DELEGATE -#define MAGICKCORE_WEBP_DELEGATE 1 -#endif +/* #undef WEBP_DELEGATE */ /* Define to use the Windows GDI32 library */ /* #undef WINGDI32_DELEGATE */ @@ -1504,9 +1498,7 @@ /* #undef X_DISPLAY_MISSING */ /* Build self-contained, embeddable, zero-configuration ImageMagick */ -#ifndef MAGICKCORE_ZERO_CONFIGURATION_SUPPORT -#define MAGICKCORE_ZERO_CONFIGURATION_SUPPORT 1 -#endif +/* #undef ZERO_CONFIGURATION_SUPPORT */ /* Define if you have zlib compression library */ #ifndef MAGICKCORE_ZLIB_DELEGATE diff --git a/MagickCore/montage.c b/MagickCore/montage.c index 8a112fe38..95bba690c 100644 --- a/MagickCore/montage.c +++ b/MagickCore/montage.c @@ -750,7 +750,7 @@ MagickExport Image *MontageImageList(const ImageInfo *image_info, border_info.width=(width-image->columns+1)/2; border_info.height=(height-image->rows+1)/2; } - border_image=BorderImage(image,&border_info,exception); + border_image=BorderImage(image,&border_info,image->compose,exception); if (border_image != (Image *) NULL) { image=DestroyImage(image); @@ -795,7 +795,7 @@ MagickExport Image *MontageImageList(const ImageInfo *image_info, if (value != (const char *) NULL) extract_info.height+=(size_t) ((metrics.ascent- metrics.descent+4)*MultilineCensus(value)); - frame_image=FrameImage(image,&extract_info,exception); + frame_image=FrameImage(image,&extract_info,image->compose,exception); if (frame_image != (Image *) NULL) { image=DestroyImage(image); diff --git a/MagickCore/shear.c b/MagickCore/shear.c index a36e0805d..4cc777203 100644 --- a/MagickCore/shear.c +++ b/MagickCore/shear.c @@ -1972,7 +1972,8 @@ MagickExport Image *RotateImage(const Image *image,const double degrees, integral_image->compose=CopyCompositeOp; border_info.width=(size_t) x_offset; border_info.height=(size_t) y_offset; - rotate_image=BorderImage(integral_image,&border_info,exception); + rotate_image=BorderImage(integral_image,&border_info,image->compose, + exception); integral_image=DestroyImage(integral_image); if (rotate_image == (Image *) NULL) ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); @@ -2117,7 +2118,7 @@ MagickExport Image *ShearImage(const Image *image,const double x_shear, integral_image->compose=CopyCompositeOp; border_info.width=(size_t) x_offset; border_info.height=(size_t) y_offset; - shear_image=BorderImage(integral_image,&border_info,exception); + shear_image=BorderImage(integral_image,&border_info,image->compose,exception); integral_image=DestroyImage(integral_image); if (shear_image == (Image *) NULL) ThrowImageException(ResourceLimitError,"MemoryAllocationFailed"); diff --git a/MagickCore/version.h b/MagickCore/version.h index 9b5d7d3fc..666099538 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -34,7 +34,7 @@ extern "C" { #define MagickLibAddendum "-0" #define MagickLibInterface 7 #define MagickLibMinInterface 7 -#define MagickReleaseDate "2011-09-13" +#define MagickReleaseDate "2011-09-15" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index e8954483e..793b16c12 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -944,7 +944,7 @@ WandExport MagickBooleanType MagickBlurImage(MagickWand *wand, % % MagickBooleanType MagickBorderImage(MagickWand *wand, % const PixelWand *bordercolor,const size_t width, -% const size_t height) +% const size_t height,const CompositeOperator compose) % % A description of each parameter follows: % @@ -956,10 +956,12 @@ WandExport MagickBooleanType MagickBlurImage(MagickWand *wand, % % o height: the border height. % +% o compose: the composite operator. +% */ WandExport MagickBooleanType MagickBorderImage(MagickWand *wand, - const PixelWand *bordercolor,const size_t width, - const size_t height) + const PixelWand *bordercolor,const size_t width,const size_t height, + const CompositeOperator compose) { Image *border_image; @@ -978,7 +980,7 @@ WandExport MagickBooleanType MagickBorderImage(MagickWand *wand, border_info.x=0; border_info.y=0; PixelGetQuantumPacket(bordercolor,&wand->images->border_color); - border_image=BorderImage(wand->images,&border_info,wand->exception); + border_image=BorderImage(wand->images,&border_info,compose,wand->exception); if (border_image == (Image *) NULL) return(MagickFalse); ReplaceImageInList(&wand->images,border_image); @@ -3141,7 +3143,7 @@ WandExport MagickBooleanType MagickForwardFourierTransformImage( % MagickBooleanType MagickFrameImage(MagickWand *wand, % const PixelWand *matte_color,const size_t width, % const size_t height,const ssize_t inner_bevel, -% const ssize_t outer_bevel) +% const ssize_t outer_bevel,const CompositeOperator compose) % % A description of each parameter follows: % @@ -3157,10 +3159,13 @@ WandExport MagickBooleanType MagickForwardFourierTransformImage( % % o outer_bevel: the outer bevel width. % +% o compose: the composite operator. +% */ WandExport MagickBooleanType MagickFrameImage(MagickWand *wand, - const PixelWand *matte_color,const size_t width, - const size_t height,const ssize_t inner_bevel,const ssize_t outer_bevel) + const PixelWand *matte_color,const size_t width,const size_t height, + const ssize_t inner_bevel,const ssize_t outer_bevel, + const CompositeOperator compose) { Image *frame_image; @@ -3182,7 +3187,7 @@ WandExport MagickBooleanType MagickFrameImage(MagickWand *wand, frame_info.inner_bevel=inner_bevel; frame_info.outer_bevel=outer_bevel; PixelGetQuantumPacket(matte_color,&wand->images->matte_color); - frame_image=FrameImage(wand->images,&frame_info,wand->exception); + frame_image=FrameImage(wand->images,&frame_info,compose,wand->exception); if (frame_image == (Image *) NULL) return(MagickFalse); ReplaceImageInList(&wand->images,frame_image); diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h index 9af410145..0fec2635a 100644 --- a/MagickWand/magick-image.h +++ b/MagickWand/magick-image.h @@ -89,7 +89,8 @@ extern WandExport MagickBooleanType MagickBlackThresholdImage(MagickWand *,const PixelWand *), MagickBlueShiftImage(MagickWand *,const double), MagickBlurImage(MagickWand *,const double,const double,const double), - MagickBorderImage(MagickWand *,const PixelWand *,const size_t,const size_t), + MagickBorderImage(MagickWand *,const PixelWand *,const size_t,const size_t, + const CompositeOperator compose), MagickBrightnessContrastImage(MagickWand *,const double,const double), MagickCharcoalImage(MagickWand *,const double,const double,const double), MagickChopImage(MagickWand *,const size_t,const size_t,const ssize_t, @@ -136,7 +137,7 @@ extern WandExport MagickBooleanType MagickFlopImage(MagickWand *), MagickForwardFourierTransformImage(MagickWand *,const MagickBooleanType), MagickFrameImage(MagickWand *,const PixelWand *,const size_t,const size_t, - const ssize_t,const ssize_t), + const ssize_t,const ssize_t,const CompositeOperator), MagickFunctionImage(MagickWand *,const MagickFunction,const size_t, const double *), MagickGammaImage(MagickWand *,const double), diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index 34241782f..152cbc854 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -617,6 +617,9 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, ChannelType channel; + CompositeOperator + compose; + const char *format, *option; @@ -672,6 +675,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, SetGeometryInfo(&geometry_info); GetPixelInfo(*image,&fill); SetPixelInfoPacket(*image,&(*image)->background_color,&fill); + compose=(*image)->compose; interpolate_method=UndefinedInterpolatePixel; channel=mogrify_info->channel; format=GetImageOption(mogrify_info,"format"); @@ -923,7 +927,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, flags=ParsePageGeometry(*image,argv[i+1],&geometry,exception); if ((flags & SigmaValue) == 0) geometry.height=geometry.width; - mogrify_image=BorderImage(*image,&geometry,exception); + mogrify_image=BorderImage(*image,&geometry,compose,exception); break; } if (LocaleCompare("bordercolor",option+1) == 0) @@ -1170,6 +1174,13 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, InheritException(exception,&(*image)->exception); break; } + if (LocaleCompare("compose",option+1) == 0) + { + (void) SyncImageSettings(mogrify_info,*image); + compose=(CompositeOperator) ParseCommandOption(MagickComposeOptions, + MagickFalse,argv[i+1]); + break; + } if (LocaleCompare("contrast",option+1) == 0) { (void) SyncImageSettings(mogrify_info,*image); @@ -1624,7 +1635,7 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, frame_info.y=(ssize_t) frame_info.height; frame_info.width=(*image)->columns+2*frame_info.width; frame_info.height=(*image)->rows+2*frame_info.height; - mogrify_image=FrameImage(*image,&frame_info,exception); + mogrify_image=FrameImage(*image,&frame_info,compose,exception); break; } if (LocaleCompare("function",option+1) == 0) diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index 42bc53a46..fb29f6fed 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -7518,6 +7518,9 @@ Mogrify(ref,...) } case 5: /* Border */ { + CompositeOperator + compose; + geometry.width=0; geometry.height=0; if (attribute_flag[0] != 0) @@ -7540,9 +7543,10 @@ Mogrify(ref,...) if (attribute_flag[5] != 0) QueryColorDatabase(argument_list[5].string_reference, &image->border_color,exception); + compose=image->compose; if (attribute_flag[6] != 0) - image->compose=(CompositeOperator) argument_list[6].integer_reference; - image=BorderImage(image,&geometry,exception); + compose=(CompositeOperator) argument_list[6].integer_reference; + image=BorderImage(image,&geometry,compose,exception); break; } case 6: /* Blur */ @@ -7653,6 +7657,9 @@ Mogrify(ref,...) } case 15: /* Frame */ { + CompositeOperator + compose; + FrameInfo frame_info; @@ -7687,10 +7694,10 @@ Mogrify(ref,...) frame_info.height=image->rows+2*frame_info.y; if ((attribute_flag[5] != 0) || (attribute_flag[6] != 0)) image->matte_color=fill_color; + compose=image->compose; if (attribute_flag[7] != 0) - image->compose=(CompositeOperator) - argument_list[7].integer_reference; - image=FrameImage(image,&frame_info,exception); + compose=(CompositeOperator) argument_list[7].integer_reference; + image=FrameImage(image,&frame_info,compose,exception); break; } case 16: /* Implode */ diff --git a/coders/msl.c b/coders/msl.c index a11f25ed5..220e48ce4 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -1351,7 +1351,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } border_image=BorderImage(msl_info->image[n],&geometry, - &msl_info->image[n]->exception); + msl_info->image[n]->compose,&msl_info->image[n]->exception); if (border_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3158,7 +3158,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, frame_info.width=msl_info->image[n]->columns+2*frame_info.x; frame_info.height=msl_info->image[n]->rows+2*frame_info.y; frame_image=FrameImage(msl_info->image[n],&frame_info, - &msl_info->image[n]->exception); + msl_info->image[n]->compose,&msl_info->image[n]->exception); if (frame_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); diff --git a/coders/pcd.c b/coders/pcd.c index 527821842..4828eb382 100644 --- a/coders/pcd.c +++ b/coders/pcd.c @@ -1005,7 +1005,8 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, */ border_info.width=(geometry.width-tile_image->columns+1) >> 1; border_info.height=(geometry.height-tile_image->rows+1) >> 1; - bordered_image=BorderImage(tile_image,&border_info,&image->exception); + bordered_image=BorderImage(tile_image,&border_info,image->compose, + &image->exception); if (bordered_image == (Image *) NULL) return(MagickFalse); tile_image=DestroyImage(tile_image);