diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index 2da5784..e895448 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -5790,7 +5790,7 @@
% The format of the MagickImplodeImage method is:
%
% MagickBooleanType MagickImplodeImage(MagickWand *wand,
-% const double radius)
+% const double radius,const PixelInterpolateMethod method)
%
% A description of each parameter follows:
%
@@ -5798,9 +5798,11 @@
%
% o amount: Define the extent of the implosion.
%
+% o method: the pixel interpolation method.
+%
*/
WandExport MagickBooleanType MagickImplodeImage(MagickWand *wand,
- const double amount)
+ const double amount,const PixelInterpolateMethod method)
{
Image
*implode_image;
@@ -5811,7 +5813,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- implode_image=ImplodeImage(wand->images,amount,wand->exception);
+ implode_image=ImplodeImage(wand->images,amount,method,wand->exception);
if (implode_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,implode_image);
@@ -11040,7 +11042,8 @@
%
% The format of the MagickSwirlImage method is:
%
-% MagickBooleanType MagickSwirlImage(MagickWand *wand,const double degrees)
+% MagickBooleanType MagickSwirlImage(MagickWand *wand,const double degrees,
+% const PixelInterpolateMethod method)
%
% A description of each parameter follows:
%
@@ -11048,9 +11051,11 @@
%
% o degrees: Define the tightness of the swirling effect.
%
+% o method: the pixel interpolation method.
+%
*/
WandExport MagickBooleanType MagickSwirlImage(MagickWand *wand,
- const double degrees)
+ const double degrees,const PixelInterpolateMethod method)
{
Image
*swirl_image;
@@ -11061,7 +11066,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- swirl_image=SwirlImage(wand->images,degrees,wand->exception);
+ swirl_image=SwirlImage(wand->images,degrees,method,wand->exception);
if (swirl_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,swirl_image);
@@ -11282,12 +11287,21 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- (void) FormatLocaleString(percent_opaque,MaxTextExtent,
- "%g,%g,%g,%g",(double) (100.0*QuantumScale*
- PixelGetRedQuantum(opacity)),(double) (100.0*QuantumScale*
- PixelGetGreenQuantum(opacity)),(double) (100.0*QuantumScale*
- PixelGetBlueQuantum(opacity)),(double) (100.0*QuantumScale*
- PixelGetOpacityQuantum(opacity)));
+ if (wand->images->colorspace != CMYKColorspace)
+ (void) FormatLocaleString(percent_opaque,MaxTextExtent,
+ "%g,%g,%g,%g",(double) (100.0*QuantumScale*
+ PixelGetRedQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetGreenQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetBlueQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetOpacityQuantum(opacity)));
+ else
+ (void) FormatLocaleString(percent_opaque,MaxTextExtent,
+ "%g,%g,%g,%g,%g",(double) (100.0*QuantumScale*
+ PixelGetCyanQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetMagentaQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetYellowQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetBlackQuantum(opacity)),(double) (100.0*QuantumScale*
+ PixelGetOpacityQuantum(opacity)));
target=PixelGetPixel(tint);
tint_image=TintImage(wand->images,percent_opaque,&target,wand->exception);
if (tint_image == (Image *) NULL)
diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h
index d5a72fd..9af4101 100644
--- a/MagickWand/magick-image.h
+++ b/MagickWand/magick-image.h
@@ -165,7 +165,7 @@
MagickHaldClutImage(MagickWand *,const MagickWand *),
MagickHasNextImage(MagickWand *),
MagickHasPreviousImage(MagickWand *),
- MagickImplodeImage(MagickWand *,const double),
+ MagickImplodeImage(MagickWand *,const double,const PixelInterpolateMethod),
MagickImportImagePixels(MagickWand *,const ssize_t,const ssize_t,const size_t,
const size_t,const char *,const StorageType,const void *),
MagickInverseFourierTransformImage(MagickWand *,MagickWand *,
@@ -291,7 +291,7 @@
MagickStatisticImage(MagickWand *,const StatisticType,const size_t,
const size_t),
MagickStripImage(MagickWand *),
- MagickSwirlImage(MagickWand *,const double),
+ MagickSwirlImage(MagickWand *,const double,const PixelInterpolateMethod),
MagickTintImage(MagickWand *,const PixelWand *,const PixelWand *),
MagickTransformImageColorspace(MagickWand *,const ColorspaceType),
MagickTransposeImage(MagickWand *),
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 6dbdfa4..3424178 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -1792,7 +1792,8 @@
*/
(void) SyncImageSettings(mogrify_info,*image);
(void) ParseGeometry(argv[i+1],&geometry_info);
- mogrify_image=ImplodeImage(*image,geometry_info.rho,exception);
+ mogrify_image=ImplodeImage(*image,geometry_info.rho,
+ interpolate_method,exception);
break;
}
if (LocaleCompare("interline-spacing",option+1) == 0)
@@ -2883,7 +2884,8 @@
*/
(void) SyncImageSettings(mogrify_info,*image);
(void) ParseGeometry(argv[i+1],&geometry_info);
- mogrify_image=SwirlImage(*image,geometry_info.rho,exception);
+ mogrify_image=SwirlImage(*image,geometry_info.rho,
+ interpolate_method,exception);
break;
}
break;