From: anthony Date: Thu, 19 Apr 2012 14:43:00 +0000 (+0000) Subject: Fix define setting and geometry testing X-Git-Tag: 7.0.1-0~5766 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=22de2722b682eb405b60ec6022a7546df994674e;p=imagemagick Fix define setting and geometry testing --- diff --git a/MagickCore/distort.c b/MagickCore/distort.c index d1ce18d23..f65a68e98 100644 --- a/MagickCore/distort.c +++ b/MagickCore/distort.c @@ -1948,13 +1948,19 @@ MagickExport Image *DistortImage(const Image *image,DistortImageMethod method, { const char *artifact=GetImageArtifact(image,"distort:viewport"); viewport_given = MagickFalse; if ( artifact != (const char *) NULL ) { - (void) ParseAbsoluteGeometry(artifact,&geometry); - viewport_given = MagickTrue; + if (IfMagickFalse(IsGeometry(artifact))) + (void) ThrowMagickException(exception,GetMagickModule(), + OptionWarning,"InvalidSetting","'%s' '%s'", + "distort:viewport",artifact); + else { + (void) ParseAbsoluteGeometry(artifact,&geometry); + viewport_given = MagickTrue; + } } } /* Verbose output */ - if ( IfMagickTrue(IsStringTrue(GetImageArtifact(image,"verbose"))) ) { + if ( IfStringTrue(GetImageArtifact(image,"verbose")) ) { register ssize_t i; char image_gen[MaxTextExtent]; @@ -2939,7 +2945,7 @@ MagickExport Image *SparseColorImage(const Image *image, } /* Verbose output */ - if ( IfMagickTrue(IsStringTrue(GetImageArtifact(image,"verbose"))) ) { + if ( IfStringTrue(GetImageArtifact(image,"verbose")) ) { switch (sparse_method) { case BarycentricColorInterpolate: diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c index 2bd8cff9d..485a84fa1 100644 --- a/MagickCore/morphology.c +++ b/MagickCore/morphology.c @@ -2446,7 +2446,9 @@ static void CalcKernelMetaData(KernelInfo *kernel) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % MorphologyApply() applies a morphological method, multiple times using -% a list of multiple kernels. +% a list of multiple kernels. This is the method that should be called by +% other 'operators' that internally use morphology operations as part of +% their processing. % % It is basically equivalent to as MorphologyImage() (see below) but % without any user controls. This allows internel programs to use this @@ -2456,10 +2458,9 @@ static void CalcKernelMetaData(KernelInfo *kernel) % It is MorphologyImage() task to extract any such user controls, and % pass them to this function for processing. % -% More specifically kernels are not normalized/scaled/blended by the -% 'convolve:scale' Image Artifact (setting), nor is the convolve bias -% ('convolve:bias' artifact) looked at, but must be supplied from the -% function arguments. +% More specifically all given kernels should already be scaled, normalised, +% and blended appropriatally before being parred to this routine. The +% appropriate bias, and compose (typically 'UndefinedComposeOp') given. % % The format of the MorphologyApply method is: % @@ -3745,7 +3746,7 @@ static ssize_t MorphologyPrimitiveDirect(Image *image, ** composition or re-iteration of results, and compound morphology methods ** that is based on multiple low-level (staged) morphology methods. ** -** Basically this provides the complex grue between the requested morphology +** Basically this provides the complex glue between the requested morphology ** method and raw low-level implementation (above). */ MagickPrivate Image *MorphologyApply(const Image *image, @@ -4215,20 +4216,20 @@ exit_cleanup: % the above internal function MorphologyApply(). % % User defined settings include... -% * Output Bias for Convolution and correlation ('-define convolve:bias=??") -% * Kernel Scale/normalize settings ("-define convolve:scale=??") +% * Output Bias for Convolution and correlation ("-define convolve:bias=??") +% * Kernel Scale/normalize settings ("-define convolve:scale=??") % This can also includes the addition of a scaled unity kernel. -% * Show Kernel being applied ("-define showkernel=1") +% * Show Kernel being applied ("-define showkernel=1") +% +% Other operators that do not want user supplied options interfering, +% especially "convolve:bias" and "showkernel" should use MorphologyApply() +% directly. % % The format of the MorphologyImage method is: % % Image *MorphologyImage(const Image *image,MorphologyMethod method, % const ssize_t iterations,KernelInfo *kernel,ExceptionInfo *exception) % -% Image *MorphologyImage(const Image *image, const ChannelType -% channel,MorphologyMethod method,const ssize_t iterations, -% KernelInfo *kernel,ExceptionInfo *exception) -% % A description of each parameter follows: % % o image: the image. @@ -4262,38 +4263,50 @@ MagickExport Image *MorphologyImage(const Image *image, double bias; + curr_kernel = (KernelInfo *) kernel; + bias=0.0; + compose = (ssize_t)UndefinedCompositeOp; /* use default for method */ + /* Apply Convolve/Correlate Normalization and Scaling Factors. * This is done BEFORE the ShowKernelInfo() function is called so that * users can see the results of the 'option:convolve:scale' option. */ - curr_kernel = (KernelInfo *) kernel; - bias=0.0; /* curr_kernel->bias; should we get from kernel */ - if ( method == ConvolveMorphology || method == CorrelateMorphology ) - { + if ( method == ConvolveMorphology || method == CorrelateMorphology ) { const char *artifact; + /* Get the bias value as it will be needed */ + artifact = GetImageArtifact(image,"convolve:bias"); + if ( artifact != (const char *) NULL) { + if (IfMagickFalse(IsGeometry(artifact))) + (void) ThrowMagickException(exception,GetMagickModule(), + OptionWarning,"InvalidSetting","'%s' '%s'", + "convolve:bias",artifact); + else + bias=StringToDoubleInterval(artifact,(double) QuantumRange+1.0); + } + + /* Scale kernel according to user wishes */ artifact = GetImageArtifact(image,"convolve:scale"); if ( artifact != (const char *)NULL ) { - if ( curr_kernel == kernel ) - curr_kernel = CloneKernelInfo(kernel); - if (curr_kernel == (KernelInfo *) NULL) { - curr_kernel=DestroyKernelInfo(curr_kernel); - return((Image *) NULL); + if (IfMagickFalse(IsGeometry(artifact))) + (void) ThrowMagickException(exception,GetMagickModule(), + OptionWarning,"InvalidSetting","'%s' '%s'", + "convolve:scale",artifact); + else { + if ( curr_kernel == kernel ) + curr_kernel = CloneKernelInfo(kernel); + if (curr_kernel == (KernelInfo *) NULL) + return((Image *) NULL); + ScaleGeometryKernelInfo(curr_kernel, artifact); } - ScaleGeometryKernelInfo(curr_kernel, artifact); } - - artifact = GetImageArtifact(image,"convolve:bias"); - compose = UndefinedCompositeOp; /* use default for method */ - if ( artifact != (const char *) NULL) - bias=StringToDouble(artifact, (char **) NULL); } /* display the (normalized) kernel via stderr */ - if ( IfMagickTrue(IsStringTrue(GetImageArtifact(image,"showkernel"))) - || IfMagickTrue(IsStringTrue(GetImageArtifact(image,"convolve:showkernel"))) - || IfMagickTrue(IsStringTrue(GetImageArtifact(image,"morphology:showkernel"))) ) + if ( IfStringTrue(GetImageArtifact(image,"showkernel")) + || IfStringTrue(GetImageArtifact(image,"convolve:showkernel")) + || IfStringTrue(GetImageArtifact(image,"morphology:showkernel")) ) ShowKernelInfo(curr_kernel); /* Override the default handling of multi-kernel morphology results @@ -4304,11 +4317,20 @@ MagickExport Image *MorphologyImage(const Image *image, */ { const char *artifact; - compose = UndefinedCompositeOp; /* use default for method */ + ssize_t + parse; + artifact = GetImageArtifact(image,"morphology:compose"); - if ( artifact != (const char *) NULL) - compose=(CompositeOperator) ParseCommandOption(MagickComposeOptions, + if ( artifact != (const char *) NULL) { + parse=ParseCommandOption(MagickComposeOptions, MagickFalse,artifact); + if ( parse < 0 ) + (void) ThrowMagickException(exception,GetMagickModule(), + OptionWarning,"UnrecognizedComposeOperator","'%s' '%s'", + "morphology:compose",artifact); + else + compose=(CompositeOperator)parse; + } } /* Apply the Morphology */ morphology_image = MorphologyApply(image,method,iterations, @@ -4558,13 +4580,14 @@ static void RotateKernelInfo(KernelInfo *kernel, double angle) MagickExport void ScaleGeometryKernelInfo (KernelInfo *kernel, const char *geometry) { - GeometryFlags + //GeometryFlags + int flags; GeometryInfo args; SetGeometryInfo(&args); - flags = (GeometryFlags) ParseGeometry(geometry, &args); + flags = ParseGeometry(geometry, &args); #if 0 /* For Debugging Geometry Input */ diff --git a/MagickCore/morphology.h b/MagickCore/morphology.h index 3c942e12a..62311845f 100644 --- a/MagickCore/morphology.h +++ b/MagickCore/morphology.h @@ -117,8 +117,7 @@ typedef struct _KernelInfo maximum, negative_range, positive_range, - angle, - bias; + angle; struct _KernelInfo *next; diff --git a/MagickCore/option.h b/MagickCore/option.h index 88526b4f7..a235380f3 100644 --- a/MagickCore/option.h +++ b/MagickCore/option.h @@ -137,7 +137,7 @@ typedef enum ImageInfoOptionFlag = 0x0001, /* Setting stored in ImageInfo */ DrawInfoOptionFlag = 0x0002, /* Setting stored in DrawInfo */ QuantizeInfoOptionFlag = 0x0004, /* Setting stored in QuantizeInfo */ - GlobalOptionFlag = 0x0008, /* Global Setting */ + GlobalOptionFlag = 0x0008, /* Global Setting or Control */ SettingOptionFlags = 0x000F, /* mask for all setting options */ SimpleOperatorOptionFlag = 0x0010, /* Simple Image processing operator */ diff --git a/MagickCore/resize.c b/MagickCore/resize.c index fdf87d2be..a547ef14e 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -804,7 +804,7 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(UndefinedFilter < filter && filter < SentinelFilter); assert(exception != (ExceptionInfo *) NULL); @@ -820,7 +820,7 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image, filter_type=mapping[filter].filter; window_type=mapping[filter].window; /* Promote 1D Windowed Sinc Filters to a 2D Windowed Jinc filters */ - if ((cylindrical != MagickFalse) && (filter_type == SincFastFilter) && + if( IfMagickTrue(cylindrical) && (filter_type == SincFastFilter) && (filter != SincFastFilter)) filter_type=JincFilter; /* 1D Windowed Sinc => 2D Windowed Jinc filters */ /* Expert filter setting override */ @@ -864,8 +864,8 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image, option=ParseCommandOption(MagickFilterOptions,MagickFalse,artifact); if ((UndefinedFilter < option) && (option < SentinelFilter)) { - filter_type=cylindrical != MagickFalse ? JincFilter : - SincFastFilter; + filter_type= IfMagickTrue(cylindrical) ? JincFilter + : SincFastFilter; window_type=(FilterTypes) option; } } @@ -881,7 +881,7 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image, /* Filter Modifications for orthogonal/cylindrical usage. */ - if (cylindrical != MagickFalse) + if( IfMagickTrue(cylindrical) ) switch (filter_type) { case BoxFilter: @@ -1053,8 +1053,7 @@ MagickPrivate ResizeFilter *AcquireResizeFilter(const Image *image, #pragma omp master { #endif - artifact=GetImageArtifact(image,"filter:verbose"); - if (IfMagickTrue(IsStringTrue(artifact))) + if (IfStringTrue(GetImageArtifact(image,"filter:verbose"))) { double support, @@ -1557,7 +1556,7 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -1568,7 +1567,7 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, resize_image=CloneImage(image,columns,rows,MagickTrue,exception); if (resize_image == (Image *) NULL) return((Image *) NULL); - if (SetImageStorageClass(resize_image,DirectClass,exception) == MagickFalse) + if( IfMagickFalse(SetImageStorageClass(resize_image,DirectClass,exception)) ) { resize_image=DestroyImage(resize_image); return((Image *) NULL); @@ -1593,7 +1592,7 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, register ssize_t x; - if (status == MagickFalse) + if( IfMagickFalse(status) ) continue; q=QueueCacheViewAuthenticPixels(resize_view,0,y,resize_image->columns,1, exception); @@ -1631,7 +1630,7 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, } q+=GetPixelChannels(resize_image); } - if (SyncCacheViewAuthenticPixels(resize_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(resize_view,exception)) ) continue; if (image->progress_monitor != (MagickProgressMonitor) NULL) { @@ -1643,13 +1642,13 @@ MagickExport Image *InterpolativeResizeImage(const Image *image, #endif proceed=SetImageProgress(image,InterpolativeResizeImageTag,progress++, image->rows); - if (proceed == MagickFalse) + if( IfMagickFalse(proceed) ) status=MagickFalse; } } resize_view=DestroyCacheView(resize_view); image_view=DestroyCacheView(image_view); - if (status == MagickFalse) + if( IfMagickFalse(status) ) resize_image=DestroyImage(resize_image); return(resize_image); } @@ -1730,7 +1729,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -1777,7 +1776,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, register ssize_t x; - if (status == MagickFalse) + if( IfMagickFalse(status) ) continue; p=GetCacheViewVirtualPixels(image_view,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) @@ -1813,7 +1812,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, pixels=(gfloat *) RelinquishMagickMemory(pixels); return((Image *) NULL); } - if (SetImageStorageClass(rescale_image,DirectClass,exception) == MagickFalse) + if( IfMagickFalse(SetImageStorageClass(rescale_image,DirectClass,exception)) ) { pixels=(gfloat *) RelinquishMagickMemory(pixels); rescale_image=DestroyImage(rescale_image); @@ -1851,7 +1850,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image,const size_t columns, SetPixelChannel(rescale_image,channel,ClampToQuantum(QuantumRange* packet[i]),q); } - if (SyncCacheViewAuthenticPixels(rescale_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(rescale_view,exception)) ) break; } rescale_view=DestroyCacheView(rescale_view); @@ -1866,7 +1865,7 @@ MagickExport Image *LiquidRescaleImage(const Image *image, { assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -1908,7 +1907,7 @@ MagickExport Image *MagnifyImage(const Image *image,ExceptionInfo *exception) assert(image != (Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -1949,7 +1948,7 @@ MagickExport Image *MinifyImage(const Image *image,ExceptionInfo *exception) assert(image != (Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -2009,7 +2008,7 @@ MagickExport Image *ResampleImage(const Image *image,const double x_resolution, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -2166,7 +2165,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, scale=MagickMax(1.0/x_factor+MagickEpsilon,1.0); support=scale*GetResizeFilterSupport(resize_filter); storage_class=support > 0.5 ? DirectClass : image->storage_class; - if (SetImageStorageClass(resize_image,storage_class,exception) == MagickFalse) + if( IfMagickFalse(SetImageStorageClass(resize_image,storage_class,exception)) ) return(MagickFalse); if (support < 0.5) { @@ -2213,7 +2212,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, start, stop; - if (status == MagickFalse) + if( IfMagickFalse(status) ) continue; bisect=(MagickRealType) (x+0.5)/x_factor+MagickEpsilon; start=(ssize_t) MagickMax(bisect-support+0.5,0.0); @@ -2328,7 +2327,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, } q+=GetPixelChannels(resize_image); } - if (SyncCacheViewAuthenticPixels(resize_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(resize_view,exception)) ) status=MagickFalse; if (image->progress_monitor != (MagickProgressMonitor) NULL) { @@ -2339,7 +2338,7 @@ static MagickBooleanType HorizontalFilter(const ResizeFilter *resize_filter, #pragma omp critical (MagickCore_HorizontalFilter) #endif proceed=SetImageProgress(image,ResizeImageTag,(*offset)++,span); - if (proceed == MagickFalse) + if( IfMagickFalse(proceed) ) status=MagickFalse; } } @@ -2382,7 +2381,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, scale=MagickMax(1.0/y_factor+MagickEpsilon,1.0); support=scale*GetResizeFilterSupport(resize_filter); storage_class=support > 0.5 ? DirectClass : image->storage_class; - if (SetImageStorageClass(resize_image,storage_class,exception) == MagickFalse) + if( IfMagickFalse(SetImageStorageClass(resize_image,storage_class,exception)) ) return(MagickFalse); if (support < 0.5) { @@ -2430,7 +2429,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, start, stop; - if (status == MagickFalse) + if( IfMagickFalse(status) ) continue; bisect=(MagickRealType) (y+0.5)/y_factor+MagickEpsilon; start=(ssize_t) MagickMax(bisect-support+0.5,0.0); @@ -2543,7 +2542,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, } q+=GetPixelChannels(resize_image); } - if (SyncCacheViewAuthenticPixels(resize_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(resize_view,exception)) ) status=MagickFalse; if (image->progress_monitor != (MagickProgressMonitor) NULL) { @@ -2554,7 +2553,7 @@ static MagickBooleanType VerticalFilter(const ResizeFilter *resize_filter, #pragma omp critical (MagickCore_VerticalFilter) #endif proceed=SetImageProgress(image,ResizeImageTag,(*offset)++,span); - if (proceed == MagickFalse) + if( IfMagickFalse(proceed) ) status=MagickFalse; } } @@ -2597,7 +2596,7 @@ MagickExport Image *ResizeImage(const Image *image,const size_t columns, */ assert(image != (Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -2628,7 +2627,8 @@ MagickExport Image *ResizeImage(const Image *image,const size_t columns, filter_type=PointFilter; else if ((image->storage_class == PseudoClass) || - (image->matte != MagickFalse) || ((x_factor*y_factor) > 1.0)) + IfMagickTrue(image->matte) || + ((x_factor*y_factor) > 1.0)) filter_type=MitchellFilter; resize_filter=AcquireResizeFilter(image,filter_type,MagickFalse,exception); /* @@ -2656,7 +2656,7 @@ MagickExport Image *ResizeImage(const Image *image,const size_t columns, */ filter_image=DestroyImage(filter_image); resize_filter=DestroyResizeFilter(resize_filter); - if (status == MagickFalse) + if( IfMagickFalse(status) ) { resize_image=DestroyImage(resize_image); return((Image *) NULL); @@ -2726,7 +2726,7 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -2774,7 +2774,7 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, ssize_t y_offset; - if (status == MagickFalse) + if( IfMagickFalse(status) ) continue; y_offset=(ssize_t) (((MagickRealType) y+0.5)*image->rows/ sample_image->rows); @@ -2820,7 +2820,7 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, } q+=GetPixelChannels(sample_image); } - if (SyncCacheViewAuthenticPixels(sample_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(sample_view,exception)) ) status=MagickFalse; if (image->progress_monitor != (MagickProgressMonitor) NULL) { @@ -2831,7 +2831,7 @@ MagickExport Image *SampleImage(const Image *image,const size_t columns, #pragma omp critical (MagickCore_SampleImage) #endif proceed=SetImageProgress(image,SampleImageTag,progress++,image->rows); - if (proceed == MagickFalse) + if( IfMagickFalse(proceed) ) status=MagickFalse; } } @@ -2921,7 +2921,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, */ assert(image != (const Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -2932,7 +2932,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, scale_image=CloneImage(image,columns,rows,MagickTrue,exception); if (scale_image == (Image *) NULL) return((Image *) NULL); - if (SetImageStorageClass(scale_image,DirectClass,exception) == MagickFalse) + if( IfMagickFalse(SetImageStorageClass(scale_image,DirectClass,exception)) ) { scale_image=DestroyImage(scale_image); return((Image *) NULL); @@ -3030,8 +3030,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, */ while (scale.y < span.y) { - if ((next_row != MagickFalse) && - (number_rows < (ssize_t) image->rows)) + if( IfMagickTrue(next_row) && (number_rows < (ssize_t) image->rows)) { /* Read a new scanline. @@ -3078,7 +3077,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, scale.y=(double) scale_image->rows/(double) image->rows; next_row=MagickTrue; } - if ((next_row != MagickFalse) && (number_rows < (ssize_t) image->rows)) + if( IfMagickTrue(next_row) && (number_rows < (ssize_t) image->rows)) { /* Read a new scanline. @@ -3193,7 +3192,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, scale.x=(double) scale_image->columns/(double) image->columns; while (scale.x >= span.x) { - if (next_column != MagickFalse) + if( IfMagickTrue(next_column) ) { for (i=0; i < (ssize_t) GetPixelChannels(image); i++) pixel[i]=0.0; @@ -3220,7 +3219,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, } if (scale.x > 0) { - if (next_column != MagickFalse) + if( IfMagickTrue(next_column) ) { for (i=0; i < (ssize_t) GetPixelChannels(image); i++) pixel[i]=0.0; @@ -3237,7 +3236,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, for (i=0; i < (ssize_t) GetPixelChannels(image); i++) pixel[i]+=span.x*scanline[(x-1)*GetPixelChannels(image)+i]; } - if ((next_column == MagickFalse) && + if( IfMagickFalse(next_column) && ((ssize_t) n < (ssize_t) scale_image->columns)) for (i=0; i < (ssize_t) GetPixelChannels(image); i++) { @@ -3277,11 +3276,11 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, q+=GetPixelChannels(scale_image); } } - if (SyncCacheViewAuthenticPixels(scale_view,exception) == MagickFalse) + if( IfMagickFalse(SyncCacheViewAuthenticPixels(scale_view,exception)) ) break; proceed=SetImageProgress(image,ScaleImageTag,(MagickOffsetType) y, image->rows); - if (proceed == MagickFalse) + if( IfMagickFalse(proceed) ) break; } scale_view=DestroyCacheView(scale_view); @@ -3355,7 +3354,7 @@ MagickExport Image *ThumbnailImage(const Image *image,const size_t columns, assert(image != (Image *) NULL); assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) + if( IfMagickTrue(image->debug) ) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); assert(exception != (ExceptionInfo *) NULL); assert(exception->signature == MagickSignature); @@ -3382,7 +3381,7 @@ MagickExport Image *ThumbnailImage(const Image *image,const size_t columns, if (thumbnail_image == (Image *) NULL) return(thumbnail_image); (void) ParseAbsoluteGeometry("0x0+0+0",&thumbnail_image->page); - if (thumbnail_image->matte == MagickFalse) + if( IfMagickFalse(thumbnail_image->matte) ) (void) SetImageAlphaChannel(thumbnail_image,OpaqueAlphaChannel,exception); thumbnail_image->depth=8; thumbnail_image->interlace=NoInterlace; @@ -3406,7 +3405,7 @@ MagickExport Image *ThumbnailImage(const Image *image,const size_t columns, image->magick_filename); (void) SetImageProperty(thumbnail_image,"Thumb::URI",value,exception); (void) CopyMagickString(value,image->magick_filename,MaxTextExtent); - if (GetPathAttributes(image->filename,&attributes) != MagickFalse) + if( IfMagickTrue(GetPathAttributes(image->filename,&attributes)) ) { (void) FormatLocaleString(value,MaxTextExtent,"%.20g",(double) attributes.st_mtime); diff --git a/MagickWand/operation.c b/MagickWand/operation.c index 180df6739..d259a863e 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -75,6 +75,11 @@ static const char BackgroundColor[] = "#fff", /* white */ BorderColor[] = "#dfdfdf", /* sRGB gray */ MatteColor[] = "#bdbdbd"; /* slightly darker gray */ + +/* For Debugging Geometry Input */ +#define ReportGeometry(flags,info) \ + (void) FormatLocaleFile(stderr, "Geometry = 0x%04X : %lg x %lg %+lg %+lg\n", \ + flags, info.rho, info.sigma, info.xi, info.psi ) /* ** Function to report on the progress of image operations @@ -1689,9 +1694,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("adaptive-blur",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=AdaptiveBlurImage(_image,geometry_info.rho, @@ -1710,9 +1715,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("adaptive-sharpen",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=AdaptiveSharpenImage(_image,geometry_info.rho, @@ -1735,10 +1740,10 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, *text, geometry[MaxTextExtent]; - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); SetGeometryInfo(&geometry_info); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; text=InterpretImageProperties(_image_info,_image,arg2, @@ -1834,18 +1839,18 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { geometry_info.rho=1.5; if (IfNormalOp) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); } new_image=BlueShiftImage(_image,geometry_info.rho,_exception); break; } if (LocaleCompare("blur",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=BlurImage(_image,geometry_info.rho,geometry_info.sigma, @@ -1860,8 +1865,11 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, const char* value; - if (IfMagickFalse(IsGeometry(arg1))) + flags=ParsePageGeometry(_image,arg1,&geometry,_exception); + if ((flags & RhoValue) == 0) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); + if ((flags & SigmaValue) == 0) + geometry.height=geometry.width; value=GetImageOption(_image_info,"compose"); if (value != (const char *) NULL) @@ -1870,9 +1878,6 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, else compose=OverCompositeOp; /* use Over not _image->compose */ - flags=ParsePageGeometry(_image,arg1,&geometry,_exception); - if ((flags & SigmaValue) == 0) - geometry.height=geometry.width; new_image=BorderImage(_image,&geometry,compose,_exception); break; } @@ -1888,9 +1893,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, MagickStatusType flags; - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); brightness=geometry_info.rho; contrast=0.0; if ((flags & SigmaValue) != 0) @@ -1920,9 +1925,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("charcoal",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; if ((flags & XiValue) == 0) @@ -2078,9 +2083,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, MagickStatusType flags; - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); black_point=geometry_info.rho; white_point=(flags & SigmaValue) != 0 ? geometry_info.sigma : black_point; @@ -2102,8 +2107,8 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, kernel_info=AcquireKernelInfo(arg1); if (kernel_info == (KernelInfo *) NULL) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); - /* kernel_info->bias=_image->bias; -- FUTURE: check this path! */ - new_image=ConvolveImage(_image,kernel_info,_exception); + new_image=MorphologyImage(_image,ConvolveMorphology,1,kernel_info, + _exception); kernel_info=DestroyKernelInfo(kernel_info); break; } @@ -2234,9 +2239,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("edge",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=EdgeImage(_image,geometry_info.rho,geometry_info.sigma, @@ -2513,9 +2518,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("lat",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & PercentValue) != 0) geometry_info.xi=(double) QuantumRange*geometry_info.xi/100.0; new_image=AdaptiveThresholdImage(_image,(size_t) geometry_info.rho, @@ -2533,9 +2538,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, MagickStatusType flags; - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); black_point=geometry_info.rho; white_point=(MagickRealType) QuantumRange; if ((flags & SigmaValue) != 0) @@ -2604,9 +2609,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, MagickStatusType flags; - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); black_point=geometry_info.rho; white_point=(MagickRealType) _image->columns*_image->rows; if ((flags & SigmaValue) != 0) @@ -2739,9 +2744,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("motion-blur",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=MotionBlurImage(_image,geometry_info.rho, @@ -2813,7 +2818,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("paint",option+1) == 0) { - (void) ParseGeometry(arg1,&geometry_info); + flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); new_image=OilPaintImage(_image,geometry_info.rho,geometry_info.sigma, _exception); break; @@ -2835,9 +2842,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, random_info=DestroyRandomInfo(random_info); } else { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); angle=geometry_info.rho; } caption=GetImageProperty(_image,"caption",_exception); @@ -2847,9 +2854,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("posterize",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) + flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); - (void) ParseGeometry(arg1,&geometry_info); (void) PosterizeImage(_image,(size_t) geometry_info.rho, _quantize_info->dither,_exception); break; @@ -2932,9 +2939,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("radial-blur",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); new_image=RadialBlurImage(_image,geometry_info.rho,_exception); break; } @@ -2988,9 +2995,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, if (LocaleCompare("resample",option+1) == 0) { /* FUTURE: Roll into a resize special operation */ - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; new_image=ResampleImage(_image,geometry_info.rho, @@ -3016,15 +3023,13 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("rotate",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) + flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); - if (strchr(arg1,'>') != (char *) NULL) - if (_image->columns <= _image->rows) - break; - if (strchr(arg1,'<') != (char *) NULL) - if (_image->columns >= _image->rows) - break; - (void) ParseGeometry(arg1,&geometry_info); + if ((flags & GreaterValue) != 0 && (_image->columns >= _image->rows)) + break; + if ((flags & LessValue) != 0 && (_image->columns >= _image->rows)) + break; new_image=RotateImage(_image,geometry_info.rho,_exception); break; } @@ -3054,9 +3059,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("segment",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; (void) SegmentImage(_image,_image->colorspace, @@ -3066,9 +3071,11 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("selective-blur",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); + if ((flags & SigmaValue) == 0) + geometry_info.sigma=1.0; if ((flags & PercentValue) != 0) geometry_info.xi=(double) QuantumRange*geometry_info.xi/100.0; new_image=SelectiveBlurImage(_image,geometry_info.rho, @@ -3126,20 +3133,18 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("shade",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); - if ((flags & SigmaValue) == 0) - geometry_info.sigma=1.0; + if (((flags & RhoValue) == 0) || ((flags & SigmaValue) == 0)) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); new_image=ShadeImage(_image,normal_op,geometry_info.rho, geometry_info.sigma,_exception); break; } if (LocaleCompare("shadow",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; if ((flags & XiValue) == 0) @@ -3153,9 +3158,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("sharpen",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; if ((flags & XiValue) == 0) @@ -3174,9 +3179,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("shear",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; new_image=ShearImage(_image,geometry_info.rho, @@ -3185,9 +3190,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("sigmoidal-contrast",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=(double) QuantumRange/2.0; if ((flags & PercentValue) != 0) @@ -3199,9 +3204,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("sketch",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=SketchImage(_image,geometry_info.rho, @@ -3256,9 +3261,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, if ( parse < 0 ) CLIWandExceptArgBreak(OptionError,"UnrecognizedStatisticType", option,arg1); - if (IfMagickFalse(IsGeometry(arg2))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg2); flags=ParseGeometry(arg2,&geometry_info); + if ((flags & RhoValue) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg2); if ((flags & SigmaValue) == 0) geometry_info.sigma=geometry_info.rho; new_image=StatisticImage(_image,(StatisticType)parse, @@ -3376,9 +3381,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("unsharp",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; if ((flags & XiValue) == 0) @@ -3405,9 +3410,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, } if (LocaleCompare("vignette",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; if ((flags & XiValue) == 0) @@ -3425,9 +3430,9 @@ static void CLISimpleOperatorImage(MagickCLI *cli_wand, { if (LocaleCompare("wave",option+1) == 0) { - if (IfMagickFalse(IsGeometry(arg1))) - CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); flags=ParseGeometry(arg1,&geometry_info); + if ((flags & (RhoValue|SigmaValue)) == 0) + CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); if ((flags & SigmaValue) == 0) geometry_info.sigma=1.0; new_image=WaveImage(_image,geometry_info.rho,geometry_info.sigma, diff --git a/config/english.xml b/config/english.xml index 4ff958b16..da5a7f8b6 100644 --- a/config/english.xml +++ b/config/english.xml @@ -610,12 +610,12 @@ geometry does not contain image - - invalid use of option - invalid argument for option + + invalid use of option + invalid geometry @@ -625,6 +625,9 @@ invalid list of numbers + + invalid setting + images are not the same size @@ -930,6 +933,9 @@ geometry does not contain image + + invalid setting + no such element in list diff --git a/config/francais.xml b/config/francais.xml index 241798f4c..eecbb1dd7 100644 --- a/config/francais.xml +++ b/config/francais.xml @@ -604,12 +604,12 @@ image non incluse dans la géométrie - - Invalide utilisation de l'option - argument invalide pour l'option + + Invalide utilisation de l'option + géométrie invalide @@ -619,6 +619,9 @@ liste des numéros non valide + + invalide de réglage + images diffèrent par la taille @@ -921,6 +924,9 @@ image non incluse dans la géométrie + + invalide de réglage + élément absent de la liste