From: dirk Date: Thu, 13 Mar 2014 21:17:23 +0000 (+0000) Subject: Replaced RadialBlur with RotationalBlur. X-Git-Tag: 7.0.1-0~2585 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6d612cf866ac2d4bae9e21f95b035f8bf50c6f28;p=imagemagick Replaced RadialBlur with RotationalBlur. Added rotationalBlur to Magick++. --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index d2358c1d1..7c460db2b 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -3991,6 +3991,31 @@ void Magick::Image::rotate(const double degrees_) ThrowPPException; } +void Magick::Image::rotationalBlur(const double angle_) +{ + MagickCore::Image + *newImage; + + GetPPException; + newImage=RotationalBlurImage(constImage(),angle_,&exceptionInfo); + replaceImage(newImage); + ThrowPPException; +} + +void Magick::Image::rotationalBlurChannel(const ChannelType channel_, + const double angle_) +{ + MagickCore::Image + *newImage; + + GetPPException; + SetPPChannelMask(channel_); + newImage=RotationalBlurImage(constImage(),angle_,&exceptionInfo); + RestorePPChannelMask; + replaceImage(newImage); + ThrowPPException; +} + void Magick::Image::sample(const Geometry &geometry_) { MagickCore::Image diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h index e9739dc50..53f9f1187 100644 --- a/Magick++/lib/Magick++/Image.h +++ b/Magick++/lib/Magick++/Image.h @@ -1182,6 +1182,10 @@ namespace Magick // Rotate image counter-clockwise by specified number of degrees. void rotate(const double degrees_); + // Rotational blur image. + void rotationalBlur(const double angle_); + void rotationalBlurChannel(const ChannelType channel_,const double angle_); + // Resize image by using pixel sampling algorithm void sample(const Geometry &geometry_); diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index d44445005..0c9e840a7 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -1344,6 +1344,7 @@ namespace Magick using MagickCore::ResourceLimitWarning; using MagickCore::RollImage; using MagickCore::RotateImage; + using MagickCore::RotationalBlurImage; using MagickCore::SampleImage; using MagickCore::ScaleImage; using MagickCore::SegmentImage; diff --git a/MagickCore/accelerate-private.h b/MagickCore/accelerate-private.h index f882701c2..89ac2216d 100644 --- a/MagickCore/accelerate-private.h +++ b/MagickCore/accelerate-private.h @@ -1486,12 +1486,12 @@ const char* accelerateKernels = STRINGIFY( - __kernel void RadialBlur(const __global CLPixelType *im, __global CLPixelType *filtered_im, - const float4 bias, - const unsigned int channel, const unsigned int matte, - const float2 blurCenter, - __constant float *cos_theta, __constant float *sin_theta, - const unsigned int cossin_theta_size) + __kernel void RotationalBlur(const __global CLPixelType *im, __global CLPixelType *filtered_im, + const float4 bias, + const unsigned int channel, const unsigned int matte, + const float2 blurCenter, + __constant float *cos_theta, __constant float *sin_theta, + const unsigned int cossin_theta_size) { const int x = get_global_id(0); const int y = get_global_id(1); diff --git a/MagickCore/accelerate.c b/MagickCore/accelerate.c index 8617a0860..74cad2bed 100644 --- a/MagickCore/accelerate.c +++ b/MagickCore/accelerate.c @@ -1419,7 +1419,7 @@ Image* AccelerateBlurImage(const Image *image, const ChannelType channel, const } -static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType channel, const double angle, ExceptionInfo *exception) +static Image* ComputeRotationalBlurImage(const Image *inputImage, const ChannelType channel, const double angle, ExceptionInfo *exception) { MagickBooleanType outputReady; @@ -1432,7 +1432,7 @@ static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType cl_context context; cl_mem_flags mem_flags; cl_mem inputImageBuffer, filteredImageBuffer, sinThetaBuffer, cosThetaBuffer; - cl_kernel radialBlurKernel; + cl_kernel rotationalBlurKernel; cl_command_queue queue; const void *inputPixels; @@ -1459,7 +1459,7 @@ static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType sinThetaBuffer = NULL; cosThetaBuffer = NULL; queue = NULL; - radialBlurKernel = NULL; + rotationalBlurKernel = NULL; clEnv = GetDefaultOpenCLEnv(); @@ -1582,8 +1582,8 @@ static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType } /* get the OpenCL kernel */ - radialBlurKernel = AcquireOpenCLKernel(clEnv, MAGICK_OPENCL_ACCELERATE, "RadialBlur"); - if (radialBlurKernel == NULL) + rotationalBlurKernel = AcquireOpenCLKernel(clEnv, MAGICK_OPENCL_ACCELERATE, "RotationalBlur"); + if (rotationalBlurKernel == NULL) { (void) OpenCLThrowMagickException(exception, GetMagickModule(), ResourceLimitWarning, "AcquireOpenCLKernel failed.", "'%s'", "."); goto cleanup; @@ -1592,25 +1592,25 @@ static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType /* set the kernel arguments */ i = 0; - clStatus=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_mem),(void *)&inputImageBuffer); - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_mem),(void *)&filteredImageBuffer); + clStatus=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_mem),(void *)&inputImageBuffer); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_mem),(void *)&filteredImageBuffer); GetMagickPixelPacket(inputImage,&bias); biasPixel.s[0] = bias.red; biasPixel.s[1] = bias.green; biasPixel.s[2] = bias.blue; biasPixel.s[3] = bias.opacity; - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_float4), &biasPixel); - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(ChannelType), &channel); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_float4), &biasPixel); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(ChannelType), &channel); matte = (inputImage->matte != MagickFalse)?1:0; - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(unsigned int), &matte); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(unsigned int), &matte); - clStatus=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_float2), &blurCenter); + clStatus=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_float2), &blurCenter); - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_mem),(void *)&cosThetaBuffer); - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(cl_mem),(void *)&sinThetaBuffer); - clStatus|=clEnv->library->clSetKernelArg(radialBlurKernel,i++,sizeof(unsigned int), &cossin_theta_size); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_mem),(void *)&cosThetaBuffer); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(cl_mem),(void *)&sinThetaBuffer); + clStatus|=clEnv->library->clSetKernelArg(rotationalBlurKernel,i++,sizeof(unsigned int), &cossin_theta_size); if (clStatus != CL_SUCCESS) { (void) OpenCLThrowMagickException(exception, GetMagickModule(), ResourceLimitWarning, "clEnv->library->clSetKernelArg failed.", "'%s'", "."); @@ -1621,7 +1621,7 @@ static Image* ComputeRadialBlurImage(const Image *inputImage, const ChannelType global_work_size[0] = inputImage->columns; global_work_size[1] = inputImage->rows; /* launch the kernel */ - clStatus = clEnv->library->clEnqueueNDRangeKernel(queue, radialBlurKernel, 2, NULL, global_work_size, NULL, 0, NULL, NULL); + clStatus = clEnv->library->clEnqueueNDRangeKernel(queue, rotationalBlurKernel, 2, NULL, global_work_size, NULL, 0, NULL, NULL); if (clStatus != CL_SUCCESS) { (void) OpenCLThrowMagickException(exception, GetMagickModule(), ResourceLimitWarning, "clEnv->library->clEnqueueNDRangeKernel failed.", "'%s'", "."); @@ -1653,7 +1653,7 @@ cleanup: if (inputImageBuffer!=NULL) clEnv->library->clReleaseMemObject(inputImageBuffer); if (sinThetaBuffer!=NULL) clEnv->library->clReleaseMemObject(sinThetaBuffer); if (cosThetaBuffer!=NULL) clEnv->library->clReleaseMemObject(cosThetaBuffer); - if (radialBlurKernel!=NULL) RelinquishOpenCLKernel(clEnv, radialBlurKernel); + if (rotationalBlurKernel!=NULL) RelinquishOpenCLKernel(clEnv, rotationalBlurKernel); if (queue != NULL) RelinquishOpenCLCommandQueue(clEnv, queue); if (outputReady == MagickFalse) { @@ -1671,21 +1671,21 @@ cleanup: % % % % % % -% R a d i a l B l u r I m a g e w i t h O p e n C L % +% R o t a t i o n a l B l u r I m a g e w i t h O p e n C L % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% RadialBlurImage() applies a radial blur to the image. +% RotationalBlurImage() applies a rotational blur to the image. % % Andrew Protano contributed this effect. % -% The format of the RadialBlurImage method is: +% The format of the RotationalBlurImage method is: % -% Image *RadialBlurImage(const Image *image,const double angle, +% Image *RotationalBlurImage(const Image *image,const double angle, % ExceptionInfo *exception) -% Image *RadialBlurImageChannel(const Image *image,const ChannelType channel, +% Image *RotationalBlurImageChannel(const Image *image,const ChannelType channel, % const double angle,ExceptionInfo *exception) % % A description of each parameter follows: @@ -1694,14 +1694,14 @@ cleanup: % % o channel: the channel type. % -% o angle: the angle of the radial blur. +% o angle: the angle of the rotational blur. % % o exception: return any errors or warnings in this structure. % */ MagickExport -Image* AccelerateRadialBlurImage(const Image *image, const ChannelType channel, const double angle, ExceptionInfo *exception) +Image* AccelerateRotationalBlurImage(const Image *image, const ChannelType channel, const double angle, ExceptionInfo *exception) { MagickBooleanType status; Image* filteredImage; @@ -1718,7 +1718,7 @@ Image* AccelerateRadialBlurImage(const Image *image, const ChannelType channel, if (status == MagickFalse) return NULL; - filteredImage = ComputeRadialBlurImage(image, channel, angle, exception); + filteredImage = ComputeRotationalBlurImage(image, channel, angle, exception); return filteredImage; } @@ -6701,7 +6701,7 @@ MagickExport Image *AccelerateBlurImage(const Image *magick_unused(image), return NULL; } -MagickExport Image *AccelerateRadialBlurImage( +MagickExport Image *AccelerateRotationalBlurImage( const Image *magick_unused(image),const ChannelType magick_unused(channel), const double magick_unused(angle),ExceptionInfo *magick_unused(exception)) { diff --git a/MagickCore/accelerate.h b/MagickCore/accelerate.h index 24e072cf6..3916f1cf5 100644 --- a/MagickCore/accelerate.h +++ b/MagickCore/accelerate.h @@ -57,10 +57,10 @@ extern MagickExport Image *AccelerateDespeckleImage(const Image *,ExceptionInfo *), *AccelerateMotionBlurImage(const Image*, const ChannelType, const double*,const size_t,const OffsetInfo*,ExceptionInfo*), - *AccelerateRadialBlurImage(const Image *,const ChannelType,const double, - ExceptionInfo *), *AccelerateResizeImage(const Image *,const size_t,const size_t, const ResizeFilter *,ExceptionInfo *), + *AccelerateRotationalBlurImage(const Image *,const ChannelType,const double, + ExceptionInfo *), *AccelerateUnsharpMaskImage(const Image *,const ChannelType,const double, const double,const double,const double,ExceptionInfo *); diff --git a/MagickCore/effect.c b/MagickCore/effect.c index b14f73de1..b0ef02e43 100644 --- a/MagickCore/effect.c +++ b/MagickCore/effect.c @@ -2250,19 +2250,19 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview, % % % % % % -% R a d i a l B l u r I m a g e % +% R o t a t i o n a l B l u r I m a g e % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% RadialBlurImage() applies a radial blur to the image. +% RotationalBlurImage() applies a radial blur to the image. % % Andrew Protano contributed this effect. % -% The format of the RadialBlurImage method is: +% The format of the RotationalBlurImage method is: % -% Image *RadialBlurImage(const Image *image,const double angle, +% Image *RotationalBlurImage(const Image *image,const double angle, % ExceptionInfo *exception) % % A description of each parameter follows: @@ -2276,7 +2276,7 @@ MagickExport Image *PreviewImage(const Image *image,const PreviewType preview, % o exception: return any errors or warnings in this structure. % */ -MagickExport Image *RadialBlurImage(const Image *image,const double angle, +MagickExport Image *RotationalBlurImage(const Image *image,const double angle, ExceptionInfo *exception) { CacheView @@ -2492,7 +2492,7 @@ MagickExport Image *RadialBlurImage(const Image *image,const double angle, proceed; #if defined(MAGICKCORE_OPENMP_SUPPORT) - #pragma omp critical (MagickCore_RadialBlurImage) + #pragma omp critical (MagickCore_RotationalBlurImage) #endif proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows); if (proceed == MagickFalse) diff --git a/MagickCore/effect.h b/MagickCore/effect.h index 626fca4de..91344d0ff 100644 --- a/MagickCore/effect.h +++ b/MagickCore/effect.h @@ -71,7 +71,7 @@ extern MagickExport Image *MotionBlurImage(const Image *,const double,const double,const double, ExceptionInfo *), *PreviewImage(const Image *,const PreviewType,ExceptionInfo *), - *RadialBlurImage(const Image *,const double,ExceptionInfo *), + *RotationalBlurImage(const Image *,const double,ExceptionInfo *), *SelectiveBlurImage(const Image *,const double,const double,const double, ExceptionInfo *), *ShadeImage(const Image *,const MagickBooleanType,const double,const double, diff --git a/MagickCore/methods.h b/MagickCore/methods.h index d387cbcab..1531cbe21 100644 --- a/MagickCore/methods.h +++ b/MagickCore/methods.h @@ -841,8 +841,6 @@ extern "C" { #define QueueAuthenticPixelCacheNexus PrependMagickMethod(QueueAuthenticPixelCacheNexus) #define QueueAuthenticPixels PrependMagickMethod(QueueAuthenticPixels) #define QueueCacheViewAuthenticPixels PrependMagickMethod(QueueCacheViewAuthenticPixels) -#define RadialBlurImage PrependMagickMethod(RadialBlurImage) -#define RadialBlurImage PrependMagickMethod(RadialBlurImage) #define RaiseImage PrependMagickMethod(RaiseImage) #define RandomChannelThresholdImage PrependMagickMethod(RandomChannelThresholdImage) #define RandomComponentGenesis PrependMagickMethod(RandomComponentGenesis) @@ -1033,6 +1031,7 @@ extern "C" { #define sRGBTransformImage PrependMagickMethod(sRGBTransformImage) #define RollImage PrependMagickMethod(RollImage) #define RotateImage PrependMagickMethod(RotateImage) +#define RotationalBlurImage PrependMagickMethod(RotationalBlurImage) #define SampleImage PrependMagickMethod(SampleImage) #define ScaleImage PrependMagickMethod(ScaleImage) #define ScaleResampleFilter PrependMagickMethod(ScaleResampleFilter) diff --git a/MagickCore/option.c b/MagickCore/option.c index 2a390cfb5..fa1975b88 100644 --- a/MagickCore/option.c +++ b/MagickCore/option.c @@ -576,8 +576,7 @@ static const OptionInfo { "-quantize", 1L, QuantizeInfoOptionFlag, MagickFalse }, { "+quiet", 0L, GlobalOptionFlag | FireOptionFlag, MagickFalse }, { "-quiet", 0L, GlobalOptionFlag | FireOptionFlag, MagickFalse }, - { "+radial-blur", 1L, DeprecateOptionFlag, MagickTrue }, - { "-radial-blur", 1L, SimpleOperatorFlag, MagickFalse }, + { "-rotational-blur", 1L, SimpleOperatorFlag, MagickFalse }, { "+raise", 1L, SimpleOperatorFlag, MagickFalse }, { "-raise", 1L, SimpleOperatorFlag, MagickFalse }, { "+random-threshold", 1L, DeprecateOptionFlag, MagickTrue }, diff --git a/MagickWand/convert.c b/MagickWand/convert.c index b9d4d1b25..d9f98a7e6 100644 --- a/MagickWand/convert.c +++ b/MagickWand/convert.c @@ -252,7 +252,6 @@ static MagickBooleanType ConvertUsage(void) "-posterize levels reduce the image to a limited number of color levels", "-profile filename add, delete, or apply an image profile", "-quantize colorspace reduce colors in this colorspace", - "-radial-blur angle radial blur the image", "-raise value lighten/darken image edges to create a 3-D effect", "-random-threshold low,high", " random threshold the image", @@ -263,6 +262,8 @@ static MagickBooleanType ConvertUsage(void) "-resize geometry resize the image", "-roll geometry roll an image vertically or horizontally", "-rotate degrees apply Paeth rotation to the image", + "-rotational-blur angle", + " rotational blur the image", "-sample geometry scale image with pixel sampling", "-scale geometry scale the image", "-segment values segment an image", @@ -2377,7 +2378,7 @@ WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info, } case 'r': { - if (LocaleCompare("radial-blur",option+1) == 0) + if (LocaleCompare("rotational-blur",option+1) == 0) { i++; if (i == (ssize_t) (argc-1)) diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c index 3bcd4e2ea..f53241200 100644 --- a/MagickWand/magick-image.c +++ b/MagickWand/magick-image.c @@ -7801,17 +7801,17 @@ WandExport MagickBooleanType MagickQuantizeImages(MagickWand *wand, % % % % % % -% M a g i c k R a d i a l B l u r I m a g e % +% M a g i c k R o t a t i o n a l B l u r I m a g e % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% MagickRadialBlurImage() radial blurs an image. +% MagickRotationalBlurImage() rotational blurs an image. % -% The format of the MagickRadialBlurImage method is: +% The format of the MagickRotationalBlurImage method is: % -% MagickBooleanType MagickRadialBlurImage(MagickWand *wand, +% MagickBooleanType MagickRotationalBlurImage(MagickWand *wand, % const double angle) % % A description of each parameter follows: @@ -7821,7 +7821,7 @@ WandExport MagickBooleanType MagickQuantizeImages(MagickWand *wand, % o angle: the angle of the blur in degrees. % */ -WandExport MagickBooleanType MagickRadialBlurImage(MagickWand *wand, +WandExport MagickBooleanType MagickRotationalBlurImage(MagickWand *wand, const double angle) { Image @@ -7833,7 +7833,7 @@ WandExport MagickBooleanType MagickRadialBlurImage(MagickWand *wand, (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name); if (wand->images == (Image *) NULL) ThrowWandException(WandError,"ContainsNoImages",wand->name); - blur_image=RadialBlurImage(wand->images,angle,wand->exception); + blur_image=RotationalBlurImage(wand->images,angle,wand->exception); if (blur_image == (Image *) NULL) return(MagickFalse); ReplaceImageInList(&wand->images,blur_image); diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h index 432d76397..b7000b71c 100644 --- a/MagickWand/magick-image.h +++ b/MagickWand/magick-image.h @@ -211,7 +211,7 @@ extern WandExport MagickBooleanType const size_t,const DitherMethod,const MagickBooleanType), MagickQuantizeImages(MagickWand *,const size_t,const ColorspaceType, const size_t,const DitherMethod,const MagickBooleanType), - MagickRadialBlurImage(MagickWand *,const double), + MagickRotationalBlurImage(MagickWand *,const double), MagickRaiseImage(MagickWand *,const size_t,const size_t,const ssize_t, const ssize_t,const MagickBooleanType), MagickRandomThresholdImage(MagickWand *,const double,const double), diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c index f22fc8963..12277cd1f 100644 --- a/MagickWand/mogrify.c +++ b/MagickWand/mogrify.c @@ -2399,14 +2399,14 @@ WandExport MagickBooleanType MogrifyImage(ImageInfo *image_info,const int argc, } case 'r': { - if (LocaleCompare("radial-blur",option+1) == 0) + if (LocaleCompare("rotational-blur",option+1) == 0) { /* - Radial blur image. + Rotational blur image. */ (void) SyncImageSettings(mogrify_info,*image,exception); flags=ParseGeometry(argv[i+1],&geometry_info); - mogrify_image=RadialBlurImage(*image,geometry_info.rho,exception); + mogrify_image=RotationalBlurImage(*image,geometry_info.rho,exception); break; } if (LocaleCompare("raise",option+1) == 0) @@ -3367,7 +3367,6 @@ static MagickBooleanType MogrifyUsage(void) "-posterize levels reduce the image to a limited number of color levels", "-profile filename add, delete, or apply an image profile", "-quantize colorspace reduce colors in this colorspace", - "-radial-blur angle radial blur the image", "-raise value lighten/darken image edges to create a 3-D effect", "-random-threshold low,high", " random threshold the image", @@ -3378,6 +3377,8 @@ static MagickBooleanType MogrifyUsage(void) "-resize geometry resize the image", "-roll geometry roll an image vertically or horizontally", "-rotate degrees apply Paeth rotation to the image", + "-rotational-blur angle", + " rotational blur the image", "-sample geometry scale image with pixel sampling", "-scale geometry scale the image", "-segment values segment an image", @@ -5451,7 +5452,7 @@ WandExport MagickBooleanType MogrifyImageCommand(ImageInfo *image_info, } case 'r': { - if (LocaleCompare("radial-blur",option+1) == 0) + if (LocaleCompare("rotational-blur",option+1) == 0) { i++; if (i == (ssize_t) argc) diff --git a/MagickWand/operation.c b/MagickWand/operation.c index 25dff3501..88aa388af 100644 --- a/MagickWand/operation.c +++ b/MagickWand/operation.c @@ -2951,12 +2951,12 @@ static MagickBooleanType CLISimpleOperatorImage(MagickCLI *cli_wand, } case 'r': { - if (LocaleCompare("radial-blur",option+1) == 0) + if (LocaleCompare("rotational-blur",option+1) == 0) { flags=ParseGeometry(arg1,&geometry_info); if ((flags & RhoValue) == 0) CLIWandExceptArgBreak(OptionError,"InvalidArgument",option,arg1); - new_image=RadialBlurImage(_image,geometry_info.rho,_exception); + new_image=RotationalBlurImage(_image,geometry_info.rho,_exception); break; } if (LocaleCompare("raise",option+1) == 0)