diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp
index 260ccc8..1856ae2 100644
--- a/Magick++/lib/Image.cpp
+++ b/Magick++/lib/Image.cpp
@@ -495,8 +495,10 @@
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ PushPixelComponentMap( image(), channel_ );
MagickCore::Image* newImage =
- BlurImageChannel( image(), channel_,radius_, sigma_, &exceptionInfo);
+ BlurImage( image(), radius_, sigma_, &exceptionInfo);
+ PopPixelComponentMap( image() );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
@@ -1173,8 +1175,10 @@
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ PushPixelComponentMap( image(), channel_ );
MagickCore::Image* newImage =
- GaussianBlurImageChannel( image(), channel_, width_, sigma_, &exceptionInfo );
+ GaussianBlurImage( image(), width_, sigma_, &exceptionInfo );
+ PopPixelComponentMap( image() );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
@@ -1547,10 +1551,11 @@
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
modifyImage();
- (void) RandomThresholdImageChannel( image(),
- channel_,
+ PushPixelComponentMap( image(), channel_);
+ (void) RandomThresholdImage( image(),
static_cast<std::string>(thresholds_).c_str(),
&exceptionInfo );
+ PopPixelComponentMap( image() );
throwImageException();
(void) DestroyExceptionInfo( &exceptionInfo );
}
@@ -1863,12 +1868,13 @@
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ PushPixelComponentMap( image(), channel_ );
MagickCore::Image* newImage =
- SharpenImageChannel( image(),
- channel_,
+ SharpenImage( image(),
radius_,
sigma_,
&exceptionInfo );
+ PopPixelComponentMap( image() );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
@@ -2123,14 +2129,15 @@
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ PushPixelComponentMap( image(), channel_ );
MagickCore::Image* newImage =
- UnsharpMaskImageChannel( image(),
- channel_,
+ UnsharpMaskImage( image(),
radius_,
sigma_,
amount_,
threshold_,
&exceptionInfo );
+ PopPixelComponentMap( image() );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h
index 1356db2..e6cf742 100644
--- a/Magick++/lib/Magick++/Include.h
+++ b/Magick++/lib/Magick++/Include.h
@@ -548,7 +548,7 @@
using MagickCore::BlobToImage;
using MagickCore::BlobWarning;
using MagickCore::BlurImage;
- using MagickCore::BlurImageChannel;
+ using MagickCore::BlurImage;
using MagickCore::BorderImage;
using MagickCore::CacheError;
using MagickCore::CacheFatalError;
@@ -711,7 +711,7 @@
using MagickCore::GammaImage;
using MagickCore::GammaImage;
using MagickCore::GaussianBlurImage;
- using MagickCore::GaussianBlurImageChannel;
+ using MagickCore::GaussianBlurImage;
using MagickCore::GetAffineMatrix;
using MagickCore::GetAuthenticMetacontent;
using MagickCore::GetBlobSize;
@@ -823,7 +823,7 @@
using MagickCore::QueueAuthenticPixels;
using MagickCore::QueueCacheViewAuthenticPixels;
using MagickCore::RaiseImage;
- using MagickCore::RandomThresholdImageChannel;
+ using MagickCore::RandomThresholdImage;
using MagickCore::ReadImage;
using MagickCore::RectangleInfo;
using MagickCore::RegisterMagickInfo;
@@ -867,7 +867,7 @@
using MagickCore::SetImageVirtualPixelMethod;
using MagickCore::ShadeImage;
using MagickCore::SharpenImage;
- using MagickCore::SharpenImageChannel;
+ using MagickCore::SharpenImage;
using MagickCore::ShaveImage;
using MagickCore::ShearImage;
using MagickCore::SigmoidalContrastImage;
@@ -902,7 +902,7 @@
using MagickCore::UndefinedRegistryType;
using MagickCore::UnregisterMagickInfo;
using MagickCore::UnsharpMaskImage;
- using MagickCore::UnsharpMaskImageChannel;
+ using MagickCore::UnsharpMaskImage;
using MagickCore::CacheView;
using MagickCore::WaveImage;
using MagickCore::WidthValue;
diff --git a/MagickCore/composite.c b/MagickCore/composite.c
index 04cb896..eea733b 100644
--- a/MagickCore/composite.c
+++ b/MagickCore/composite.c
@@ -79,30 +79,25 @@
% %
% %
% %
-% C o m p o s i t e I m a g e C h a n n e l %
+% C o m p o s i t e I m a g e %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% CompositeImageChannel() returns the second image composited onto the first
+% CompositeImage() returns the second image composited onto the first
% at the specified offset, using the specified composite method.
%
-% The format of the CompositeImageChannel method is:
+% The format of the CompositeImage method is:
%
% MagickBooleanType CompositeImage(Image *image,
% const CompositeOperator compose,Image *composite_image,
% const ssize_t x_offset,const ssize_t y_offset)
-% MagickBooleanType CompositeImageChannel(Image *image,
-% const ChannelType channel,const CompositeOperator compose,
-% Image *composite_image,const ssize_t x_offset,const ssize_t y_offset)
%
% A description of each parameter follows:
%
% o image: the destination image, modified by he composition
%
-% o channel: the channel.
-%
% o compose: This operator affects how the composite is applied to
% the image. The operators and how they are utilized are listed here
% http://www.w3.org/TR/SVG12/#compositing.
@@ -334,7 +329,7 @@
}
static inline void CompositeDarken(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
gamma;
@@ -372,8 +367,7 @@
}
static inline void CompositeDarkenIntensity(const Image *image,
- const PixelInfo *p,const PixelInfo *q,const ChannelType channel,
- PixelInfo *composite)
+ const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -420,7 +414,7 @@
}
static inline void CompositeDifference(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -478,7 +472,7 @@
}
static inline void CompositeDivide(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -530,7 +524,7 @@
}
static inline void CompositeExclusion(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
gamma,
@@ -684,7 +678,7 @@
}
static inline void CompositeLighten(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
gamma;
@@ -722,8 +716,7 @@
}
static inline void CompositeLightenIntensity(const Image *image,
- const PixelInfo *p,const PixelInfo *q,const ChannelType channel,
- PixelInfo *composite)
+ const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -885,8 +878,7 @@
}
static inline void CompositeMathematics(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel, const GeometryInfo *args,
- PixelInfo *composite)
+ const PixelInfo *q,const GeometryInfo *args,PixelInfo *composite)
{
MagickRealType
Da,
@@ -932,7 +924,7 @@
}
static inline void CompositePlus(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
/*
NOTE: "Plus" does not use 'over' alpha-blending but uses a special
@@ -983,7 +975,7 @@
}
static inline void CompositeMinus(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -1033,7 +1025,7 @@
}
static inline void CompositeModulusAdd(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -1083,8 +1075,7 @@
}
static inline void CompositeModulusSubtract(const Image *image,
- const PixelInfo *p,const PixelInfo *q, const ChannelType channel,
- PixelInfo *composite)
+ const PixelInfo *p,const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -1128,7 +1119,7 @@
}
static inline void CompositeMultiply(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -1286,7 +1277,7 @@
}
static inline void CompositeScreen(const Image *image,const PixelInfo *p,
- const PixelInfo *q,const ChannelType channel,PixelInfo *composite)
+ const PixelInfo *q,PixelInfo *composite)
{
MagickRealType
Da,
@@ -1555,18 +1546,6 @@
const CompositeOperator compose,const Image *composite_image,
const ssize_t x_offset,const ssize_t y_offset)
{
- MagickBooleanType
- status;
-
- status=CompositeImageChannel(image,DefaultChannels,compose,composite_image,
- x_offset,y_offset);
- return(status);
-}
-
-MagickExport MagickBooleanType CompositeImageChannel(Image *image,
- const ChannelType channel,const CompositeOperator compose,
- const Image *composite_image,const ssize_t x_offset,const ssize_t y_offset)
-{
#define CompositeImageTag "Composite/Image"
CacheView
@@ -2395,86 +2374,83 @@
}
case PlusCompositeOp:
{
- CompositePlus(image,&source,&destination,channel,&composite);
+ CompositePlus(image,&source,&destination,&composite);
break;
}
case MinusDstCompositeOp:
{
- CompositeMinus(image,&source,&destination,channel,&composite);
+ CompositeMinus(image,&source,&destination,&composite);
break;
}
case MinusSrcCompositeOp:
{
- CompositeMinus(image,&destination,&source,channel,&composite);
+ CompositeMinus(image,&destination,&source,&composite);
break;
}
case ModulusAddCompositeOp:
{
- CompositeModulusAdd(image,&source,&destination,channel,&composite);
+ CompositeModulusAdd(image,&source,&destination,&composite);
break;
}
case ModulusSubtractCompositeOp:
{
- CompositeModulusSubtract(image,&source,&destination,channel,
- &composite);
+ CompositeModulusSubtract(image,&source,&destination,&composite);
break;
}
case DifferenceCompositeOp:
{
- CompositeDifference(image,&source,&destination,channel,&composite);
+ CompositeDifference(image,&source,&destination,&composite);
break;
}
case ExclusionCompositeOp:
{
- CompositeExclusion(image,&source,&destination,channel,&composite);
+ CompositeExclusion(image,&source,&destination,&composite);
break;
}
case MultiplyCompositeOp:
{
- CompositeMultiply(image,&source,&destination,channel,&composite);
+ CompositeMultiply(image,&source,&destination,&composite);
break;
}
case ScreenCompositeOp:
{
- CompositeScreen(image,&source,&destination,channel,&composite);
+ CompositeScreen(image,&source,&destination,&composite);
break;
}
case DivideDstCompositeOp:
{
- CompositeDivide(image,&source,&destination,channel,&composite);
+ CompositeDivide(image,&source,&destination,&composite);
break;
}
case DivideSrcCompositeOp:
{
- CompositeDivide(image,&destination,&source,channel,&composite);
+ CompositeDivide(image,&destination,&source,&composite);
break;
}
case DarkenCompositeOp:
{
- CompositeDarken(image,&source,&destination,channel,&composite);
+ CompositeDarken(image,&source,&destination,&composite);
break;
}
case LightenCompositeOp:
{
- CompositeLighten(image,&source,&destination,channel,&composite);
+ CompositeLighten(image,&source,&destination,&composite);
break;
}
case DarkenIntensityCompositeOp:
{
- CompositeDarkenIntensity(image,&source,&destination,channel,
- &composite);
+ CompositeDarkenIntensity(image,&source,&destination,&composite);
break;
}
case LightenIntensityCompositeOp:
{
- CompositeLightenIntensity(image,&source,&destination,channel,
- &composite);
+ CompositeLightenIntensity(image,&source,&destination,&composite);
break;
}
case MathematicsCompositeOp:
{
- CompositeMathematics(image,&source,&destination,channel,
- &geometry_info,&composite);
+ CompositeMathematics(image,&source,&destination,&geometry_info,
+ &composite);
break;
}
case ColorDodgeCompositeOp:
@@ -2730,7 +2706,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_CompositeImageChannel)
+ #pragma omp critical (MagickCore_CompositeImage)
#endif
proceed=SetImageProgress(image,CompositeImageTag,progress++,
image->rows);
diff --git a/MagickCore/composite.h b/MagickCore/composite.h
index 6808094..19dea37 100644
--- a/MagickCore/composite.h
+++ b/MagickCore/composite.h
@@ -97,8 +97,6 @@
extern MagickExport MagickBooleanType
CompositeImage(Image *,const CompositeOperator,const Image *,const ssize_t,
const ssize_t),
- CompositeImageChannel(Image *,const ChannelType,const CompositeOperator,
- const Image *,const ssize_t,const ssize_t),
TextureImage(Image *,const Image *);
#if defined(__cplusplus) || defined(c_plusplus)
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 8a10c0a..826d987 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -106,16 +106,11 @@
%
% Image *AdaptiveBlurImage(const Image *image,const double radius,
% const double sigma,ExceptionInfo *exception)
-% Image *AdaptiveBlurImageChannel(const Image *image,
-% const ChannelType channel,double radius,const double sigma,
-% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -125,17 +120,6 @@
%
*/
-MagickExport Image *AdaptiveBlurImage(const Image *image,const double radius,
- const double sigma,ExceptionInfo *exception)
-{
- Image
- *blur_image;
-
- blur_image=AdaptiveBlurImageChannel(image,DefaultChannels,radius,sigma,
- exception);
- return(blur_image);
-}
-
MagickExport MagickBooleanType AdaptiveLevelImage(Image *image,
const char *levels)
{
@@ -180,9 +164,8 @@
return(status);
}
-MagickExport Image *AdaptiveBlurImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- ExceptionInfo *exception)
+MagickExport Image *AdaptiveBlurImage(const Image *image,
+ const double radius,const double sigma,ExceptionInfo *exception)
{
#define AdaptiveBlurImageTag "Convolve/Image"
#define MagickSigma (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
@@ -418,7 +401,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_AdaptiveBlurImageChannel)
+ #pragma omp critical (MagickCore_AdaptiveBlurImage)
#endif
proceed=SetImageProgress(image,AdaptiveBlurImageTag,progress++,
image->rows);
@@ -460,16 +443,11 @@
%
% Image *AdaptiveSharpenImage(const Image *image,const double radius,
% const double sigma,ExceptionInfo *exception)
-% Image *AdaptiveSharpenImageChannel(const Image *image,
-% const ChannelType channel,double radius,const double sigma,
-% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -478,22 +456,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
MagickExport Image *AdaptiveSharpenImage(const Image *image,const double radius,
const double sigma,ExceptionInfo *exception)
{
- Image
- *sharp_image;
-
- sharp_image=AdaptiveSharpenImageChannel(image,DefaultChannels,radius,sigma,
- exception);
- return(sharp_image);
-}
-
-MagickExport Image *AdaptiveSharpenImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- ExceptionInfo *exception)
-{
#define AdaptiveSharpenImageTag "Convolve/Image"
#define MagickSigma (fabs(sigma) <= MagickEpsilon ? 1.0 : sigma)
@@ -728,7 +693,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_AdaptiveSharpenImageChannel)
+ #pragma omp critical (MagickCore_AdaptiveSharpenImage)
#endif
proceed=SetImageProgress(image,AdaptiveSharpenImageTag,progress++,
image->rows);
@@ -773,15 +738,11 @@
%
% Image *BlurImage(const Image *image,const double radius,
% const double sigma,ExceptionInfo *exception)
-% Image *BlurImageChannel(const Image *image,const ChannelType channel,
-% const double radius,const double sigma,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -791,16 +752,6 @@
%
*/
-MagickExport Image *BlurImage(const Image *image,const double radius,
- const double sigma,ExceptionInfo *exception)
-{
- Image
- *blur_image;
-
- blur_image=BlurImageChannel(image,DefaultChannels,radius,sigma,exception);
- return(blur_image);
-}
-
static double *GetBlurKernel(const size_t width,const double sigma)
{
double
@@ -836,9 +787,8 @@
return(kernel);
}
-MagickExport Image *BlurImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- ExceptionInfo *exception)
+MagickExport Image *BlurImage(const Image *image,const double radius,
+ const double sigma,ExceptionInfo *exception)
{
#define BlurImageTag "Blur/Image"
@@ -973,7 +923,8 @@
pixel=bias;
k=kernel;
kernel_pixels=p;
- if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) || (image->matte == MagickFalse))
+ if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) ||
+ (image->matte == MagickFalse))
{
for (i=0; i < (ssize_t) width; i++)
{
@@ -1061,7 +1012,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_BlurImageChannel)
+ #pragma omp critical (MagickCore_BlurImage)
#endif
proceed=SetImageProgress(image,BlurImageTag,progress++,blur_image->rows+
blur_image->columns);
@@ -1117,7 +1068,8 @@
pixel=bias;
k=kernel;
kernel_pixels=p;
- if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) || (blur_image->matte == MagickFalse))
+ if (((GetPixelAlphaTraits(image) & ActivePixelTrait) == 0) ||
+ (blur_image->matte == MagickFalse))
{
for (i=0; i < (ssize_t) width; i++)
{
@@ -1205,7 +1157,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_BlurImageChannel)
+ #pragma omp critical (MagickCore_BlurImage)
#endif
proceed=SetImageProgress(blur_image,BlurImageTag,progress++,
blur_image->rows+blur_image->columns);
@@ -1239,15 +1191,10 @@
%
% Image *ConvolveImage(const Image *image,const size_t order,
% const double *kernel,ExceptionInfo *exception)
-% Image *ConvolveImageChannel(const Image *image,const ChannelType channel,
-% const size_t order,const double *kernel,ExceptionInfo *exception)
-%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o order: the number of columns and rows in the filter kernel.
%
% o kernel: An array of double representing the convolution kernel.
@@ -1255,22 +1202,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
MagickExport Image *ConvolveImage(const Image *image,const size_t order,
const double *kernel,ExceptionInfo *exception)
{
- Image
- *convolve_image;
-
- convolve_image=ConvolveImageChannel(image,DefaultChannels,order,kernel,
- exception);
- return(convolve_image);
-}
-
-MagickExport Image *ConvolveImageChannel(const Image *image,
- const ChannelType channel,const size_t order,const double *kernel,
- ExceptionInfo *exception)
-{
#define ConvolveImageTag "Convolve/Image"
CacheView
@@ -1541,7 +1475,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_ConvolveImageChannel)
+ #pragma omp critical (MagickCore_ConvolveImage)
#endif
proceed=SetImageProgress(image,ConvolveImageTag,progress++,image->rows);
if (proceed == MagickFalse)
@@ -2029,33 +1963,18 @@
%
% Image *FilterImage(const Image *image,const KernelInfo *kernel,
% ExceptionInfo *exception)
-% Image *FilterImageChannel(const Image *image,const ChannelType channel,
-% const KernelInfo *kernel,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o kernel: the filtering kernel.
%
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *FilterImage(const Image *image,const KernelInfo *kernel,
- ExceptionInfo *exception)
-{
- Image
- *filter_image;
-
- filter_image=FilterImageChannel(image,DefaultChannels,kernel,exception);
- return(filter_image);
-}
-
-MagickExport Image *FilterImageChannel(const Image *image,
- const ChannelType channel,const KernelInfo *kernel,ExceptionInfo *exception)
+MagickExport Image *FilterImage(const Image *image,
+ const KernelInfo *kernel,ExceptionInfo *exception)
{
#define FilterImageTag "Filter/Image"
@@ -2307,7 +2226,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_FilterImageChannel)
+ #pragma omp critical (MagickCore_FilterImage)
#endif
proceed=SetImageProgress(image,FilterImageTag,progress++,image->rows);
if (proceed == MagickFalse)
@@ -2342,16 +2261,11 @@
%
% Image *GaussianBlurImage(const Image *image,onst double radius,
% const double sigma,ExceptionInfo *exception)
-% Image *GaussianBlurImageChannel(const Image *image,
-% const ChannelType channel,const double radius,const double sigma,
-% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -2360,21 +2274,8 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *GaussianBlurImage(const Image *image,const double radius,
- const double sigma,ExceptionInfo *exception)
-{
- Image
- *blur_image;
-
- blur_image=GaussianBlurImageChannel(image,DefaultChannels,radius,sigma,
- exception);
- return(blur_image);
-}
-
-MagickExport Image *GaussianBlurImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- ExceptionInfo *exception)
+MagickExport Image *GaussianBlurImage(const Image *image,
+ const double radius,const double sigma,ExceptionInfo *exception)
{
double
*kernel;
@@ -2411,7 +2312,7 @@
kernel[i++]=(double) (exp(-((double) u*u+v*v)/(2.0*MagickSigma*
MagickSigma))/(2.0*MagickPI*MagickSigma*MagickSigma));
}
- blur_image=ConvolveImageChannel(image,channel,width,kernel,exception);
+ blur_image=ConvolveImage(image,width,kernel,exception);
kernel=(double *) RelinquishMagickMemory(kernel);
return(blur_image);
}
@@ -2439,17 +2340,11 @@
%
% Image *MotionBlurImage(const Image *image,const double radius,
% const double sigma,const double angle,ExceptionInfo *exception)
-% Image *MotionBlurImageChannel(const Image *image,const ChannelType channel,
-% const double radius,const double sigma,const double angle,
-% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
-% o radius: the radius of the Gaussian, in pixels, not counting the center
% o radius: the radius of the Gaussian, in pixels, not counting
% the center pixel.
%
@@ -2489,20 +2384,9 @@
return(kernel);
}
-MagickExport Image *MotionBlurImage(const Image *image,const double radius,
- const double sigma,const double angle,ExceptionInfo *exception)
-{
- Image
- *motion_blur;
-
- motion_blur=MotionBlurImageChannel(image,DefaultChannels,radius,sigma,angle,
- exception);
- return(motion_blur);
-}
-
-MagickExport Image *MotionBlurImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- const double angle,ExceptionInfo *exception)
+MagickExport Image *MotionBlurImage(const Image *image,
+ const double radius,const double sigma,const double angle,
+ ExceptionInfo *exception)
{
CacheView
*blur_view,
@@ -2700,7 +2584,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_MotionBlurImageChannel)
+ #pragma omp critical (MagickCore_MotionBlurImage)
#endif
proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows);
if (proceed == MagickFalse)
@@ -3257,33 +3141,18 @@
%
% Image *RadialBlurImage(const Image *image,const double angle,
% ExceptionInfo *exception)
-% Image *RadialBlurImageChannel(const Image *image,const ChannelType channel,
-% const double angle,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o angle: the angle of the radial blur.
%
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *RadialBlurImage(const Image *image,const double angle,
- ExceptionInfo *exception)
-{
- Image
- *blur_image;
-
- blur_image=RadialBlurImageChannel(image,DefaultChannels,angle,exception);
- return(blur_image);
-}
-
-MagickExport Image *RadialBlurImageChannel(const Image *image,
- const ChannelType channel,const double angle,ExceptionInfo *exception)
+MagickExport Image *RadialBlurImage(const Image *image,
+ const double angle,ExceptionInfo *exception)
{
CacheView
*blur_view,
@@ -3513,7 +3382,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_RadialBlurImageChannel)
+ #pragma omp critical (MagickCore_RadialBlurImage)
#endif
proceed=SetImageProgress(image,BlurImageTag,progress++,image->rows);
if (proceed == MagickFalse)
@@ -3548,16 +3417,11 @@
%
% Image *SelectiveBlurImage(const Image *image,const double radius,
% const double sigma,const double threshold,ExceptionInfo *exception)
-% Image *SelectiveBlurImageChannel(const Image *image,
-% const ChannelType channel,const double radius,const double sigma,
-% const double threshold,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -3569,21 +3433,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *SelectiveBlurImage(const Image *image,const double radius,
- const double sigma,const double threshold,ExceptionInfo *exception)
-{
- Image
- *blur_image;
-
- blur_image=SelectiveBlurImageChannel(image,DefaultChannels,radius,sigma,
- threshold,exception);
- return(blur_image);
-}
-
-MagickExport Image *SelectiveBlurImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- const double threshold,ExceptionInfo *exception)
+MagickExport Image *SelectiveBlurImage(const Image *image,
+ const double radius,const double sigma,const double threshold,
+ ExceptionInfo *exception)
{
#define SelectiveBlurImageTag "SelectiveBlur/Image"
@@ -3896,7 +3748,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_SelectiveBlurImageChannel)
+ #pragma omp critical (MagickCore_SelectiveBlurImage)
#endif
proceed=SetImageProgress(image,SelectiveBlurImageTag,progress++,
image->rows);
@@ -4143,15 +3995,11 @@
%
% Image *SharpenImage(const Image *image,const double radius,
% const double sigma,ExceptionInfo *exception)
-% Image *SharpenImageChannel(const Image *image,const ChannelType channel,
-% const double radius,const double sigma,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -4160,21 +4008,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
MagickExport Image *SharpenImage(const Image *image,const double radius,
const double sigma,ExceptionInfo *exception)
{
- Image
- *sharp_image;
-
- sharp_image=SharpenImageChannel(image,DefaultChannels,radius,sigma,exception);
- return(sharp_image);
-}
-
-MagickExport Image *SharpenImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- ExceptionInfo *exception)
-{
double
*kernel,
normalize;
@@ -4217,7 +4053,7 @@
}
}
kernel[i/2]=(double) ((-2.0)*normalize);
- sharp_image=ConvolveImageChannel(image,channel,width,kernel,exception);
+ sharp_image=ConvolveImage(image,width,kernel,exception);
kernel=(double *) RelinquishMagickMemory(kernel);
return(sharp_image);
}
@@ -4384,16 +4220,11 @@
%
% Image *StatisticImage(const Image *image,const StatisticType type,
% const size_t width,const size_t height,ExceptionInfo *exception)
-% Image *StatisticImageChannel(const Image *image,
-% const ChannelType channel,const StatisticType type,
-% const size_t width,const size_t height,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the image channel.
-%
% o type: the statistic type (median, mode, etc.).
%
% o width: the width of the pixel neighborhood.
@@ -5010,18 +4841,6 @@
MagickExport Image *StatisticImage(const Image *image,const StatisticType type,
const size_t width,const size_t height,ExceptionInfo *exception)
{
- Image
- *statistic_image;
-
- statistic_image=StatisticImageChannel(image,DefaultChannels,type,width,
- height,exception);
- return(statistic_image);
-}
-
-MagickExport Image *StatisticImageChannel(const Image *image,
- const ChannelType channel,const StatisticType type,const size_t width,
- const size_t height,ExceptionInfo *exception)
-{
#define StatisticWidth \
(width == 0 ? GetOptimalKernelWidth2D((double) width,0.5) : width)
#define StatisticHeight \
@@ -5243,16 +5062,11 @@
% Image *UnsharpMaskImage(const Image *image,const double radius,
% const double sigma,const double amount,const double threshold,
% ExceptionInfo *exception)
-% Image *UnsharpMaskImageChannel(const Image *image,
-% const ChannelType channel,const double radius,const double sigma,
-% const double amount,const double threshold,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -5266,22 +5080,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *UnsharpMaskImage(const Image *image,const double radius,
- const double sigma,const double amount,const double threshold,
- ExceptionInfo *exception)
-{
- Image
- *sharp_image;
-
- sharp_image=UnsharpMaskImageChannel(image,DefaultChannels,radius,sigma,amount,
- threshold,exception);
- return(sharp_image);
-}
-
-MagickExport Image *UnsharpMaskImageChannel(const Image *image,
- const ChannelType channel,const double radius,const double sigma,
- const double amount,const double threshold,ExceptionInfo *exception)
+MagickExport Image *UnsharpMaskImage(const Image *image,
+ const double radius,const double sigma,const double amount,
+ const double threshold,ExceptionInfo *exception)
{
#define SharpenImageTag "Sharpen/Image"
@@ -5312,7 +5113,7 @@
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(exception != (ExceptionInfo *) NULL);
- unsharp_image=BlurImageChannel(image,channel,radius,sigma,exception);
+ unsharp_image=BlurImage(image,radius,sigma,exception);
if (unsharp_image == (Image *) NULL)
return((Image *) NULL);
quantum_threshold=(MagickRealType) QuantumRange*threshold;
@@ -5429,7 +5230,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_UnsharpMaskImageChannel)
+ #pragma omp critical (MagickCore_UnsharpMaskImage)
#endif
proceed=SetImageProgress(image,SharpenImageTag,progress++,image->rows);
if (proceed == MagickFalse)
diff --git a/MagickCore/effect.h b/MagickCore/effect.h
index d41ce88..d76cc7f 100644
--- a/MagickCore/effect.h
+++ b/MagickCore/effect.h
@@ -73,53 +73,29 @@
extern MagickExport Image
*AdaptiveBlurImage(const Image *,const double,const double,ExceptionInfo *),
- *AdaptiveBlurImageChannel(const Image *,const ChannelType,const double,
- const double,ExceptionInfo *),
*AdaptiveSharpenImage(const Image *,const double,const double,
ExceptionInfo *),
- *AdaptiveSharpenImageChannel(const Image *,const ChannelType,const double,
- const double,ExceptionInfo *),
*BlurImage(const Image *,const double,const double,ExceptionInfo *),
- *BlurImageChannel(const Image *,const ChannelType,const double,const double,
- ExceptionInfo *),
*ConvolveImage(const Image *,const size_t,const double *,ExceptionInfo *),
- *ConvolveImageChannel(const Image *,const ChannelType,const size_t,
- const double *,ExceptionInfo *),
*DespeckleImage(const Image *,ExceptionInfo *),
*EdgeImage(const Image *,const double,ExceptionInfo *),
*EmbossImage(const Image *,const double,const double,ExceptionInfo *),
*FilterImage(const Image *,const KernelInfo *,ExceptionInfo *),
- *FilterImageChannel(const Image *,const ChannelType,const KernelInfo *,
- ExceptionInfo *),
*GaussianBlurImage(const Image *,const double,const double,ExceptionInfo *),
- *GaussianBlurImageChannel(const Image *,const ChannelType,const double,
- const double,ExceptionInfo *),
*MotionBlurImage(const Image *,const double,const double,const double,
ExceptionInfo *),
- *MotionBlurImageChannel(const Image *,const ChannelType,const double,
- const double,const double,ExceptionInfo *),
*PreviewImage(const Image *,const PreviewType,ExceptionInfo *),
*RadialBlurImage(const Image *,const double,ExceptionInfo *),
- *RadialBlurImageChannel(const Image *,const ChannelType,const double,
- ExceptionInfo *),
*SelectiveBlurImage(const Image *,const double,const double,const double,
ExceptionInfo *),
- *SelectiveBlurImageChannel(const Image *,const ChannelType,const double,
- const double,const double,ExceptionInfo *),
*ShadeImage(const Image *,const MagickBooleanType,const double,const double,
ExceptionInfo *),
*SharpenImage(const Image *,const double,const double,ExceptionInfo *),
- *SharpenImageChannel(const Image *,const ChannelType,const double,
- const double,ExceptionInfo *),
*SpreadImage(const Image *,const double,ExceptionInfo *),
*StatisticImage(const Image *,const StatisticType,const size_t,const size_t,
ExceptionInfo *),
- *StatisticImageChannel(const Image *,const ChannelType,const StatisticType,
- const size_t,const size_t,ExceptionInfo *),
*UnsharpMaskImage(const Image *,const double,const double,const double,
- const double,ExceptionInfo *),
- *UnsharpMaskImageChannel(const Image *,const ChannelType,const double,
- const double,const double,const double,ExceptionInfo *);
+ const double,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 98e53d4..923495b 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -4188,7 +4188,9 @@
}
}
border_view=DestroyCacheView(border_view);
- shadow_image=BlurImageChannel(border_image,AlphaChannel,0.0,sigma,exception);
+ PushPixelComponentMap(border_image,AlphaChannel);
+ shadow_image=BlurImage(border_image,0.0,sigma,exception);
+ PopPixelComponentMap(border_image);
border_image=DestroyImage(border_image);
if (shadow_image == (Image *) NULL)
return((Image *) NULL);
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 97a8cc7..fd88b44 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -3602,7 +3602,9 @@
status=TransformImageColorspace(image,RGBColorspace);
if (image->matte == MagickFalse)
(void) SetImageAlphaChannel(image,OpaqueAlphaChannel);
- (void) BilevelImageChannel(image,AlphaChannel,(double) QuantumRange/2.0);
+ PushPixelComponentMap(image,AlphaChannel);
+ (void) BilevelImage(image,(double) QuantumRange/2.0);
+ PopPixelComponentMap(image);
quantize_info=AcquireQuantizeInfo(image_info);
status=QuantizeImage(quantize_info,image);
quantize_info=DestroyQuantizeInfo(quantize_info);
diff --git a/MagickCore/methods.h b/MagickCore/methods.h
index 03de5dc..6fcfa7a 100644
--- a/MagickCore/methods.h
+++ b/MagickCore/methods.h
@@ -80,10 +80,10 @@
#define AcquireUniqueFilename PrependMagickMethod(AcquireUniqueFilename)
#define AcquireUniqueFileResource PrependMagickMethod(AcquireUniqueFileResource)
#define AcquireUniqueSymbolicLink PrependMagickMethod(AcquireUniqueSymbolicLink)
-#define AdaptiveBlurImageChannel PrependMagickMethod(AdaptiveBlurImageChannel)
+#define AdaptiveBlurImage PrependMagickMethod(AdaptiveBlurImage)
#define AdaptiveBlurImage PrependMagickMethod(AdaptiveBlurImage)
#define AdaptiveResizeImage PrependMagickMethod(AdaptiveResizeImage)
-#define AdaptiveSharpenImageChannel PrependMagickMethod(AdaptiveSharpenImageChannel)
+#define AdaptiveSharpenImage PrependMagickMethod(AdaptiveSharpenImage)
#define AdaptiveSharpenImage PrependMagickMethod(AdaptiveSharpenImage)
#define AdaptiveThresholdImage PrependMagickMethod(AdaptiveThresholdImage)
#define AddChildToXMLTree PrependMagickMethod(AddChildToXMLTree)
@@ -118,14 +118,14 @@
#define AverageImages PrependMagickMethod(AverageImages)
#define Base64Decode PrependMagickMethod(Base64Decode)
#define Base64Encode PrependMagickMethod(Base64Encode)
-#define BilevelImageChannel PrependMagickMethod(BilevelImageChannel)
#define BilevelImage PrependMagickMethod(BilevelImage)
-#define BlackThresholdImageChannel PrependMagickMethod(BlackThresholdImageChannel)
+#define BilevelImage PrependMagickMethod(BilevelImage)
+#define BlackThresholdImage PrependMagickMethod(BlackThresholdImage)
#define BlackThresholdImage PrependMagickMethod(BlackThresholdImage)
#define BlobToFile PrependMagickMethod(BlobToFile)
#define BlobToImage PrependMagickMethod(BlobToImage)
#define BlueShiftImage PrependMagickMethod(BlueShiftImage)
-#define BlurImageChannel PrependMagickMethod(BlurImageChannel)
+#define BlurImage PrependMagickMethod(BlurImage)
#define BlurImage PrependMagickMethod(BlurImage)
#define BorderImage PrependMagickMethod(BorderImage)
#define BrightnessContrastImage PrependMagickMethod(BrightnessContrastImage)
@@ -140,7 +140,7 @@
#define CharcoalImage PrependMagickMethod(CharcoalImage)
#define ChopImage PrependMagickMethod(ChopImage)
#define ChopPathComponents PrependMagickMethod(ChopPathComponents)
-#define ClampImageChannel PrependMagickMethod(ClampImageChannel)
+#define ClampImage PrependMagickMethod(ClampImage)
#define ClampImage PrependMagickMethod(ClampImage)
#define ClearLinkedList PrependMagickMethod(ClearLinkedList)
#define ClearMagickException PrependMagickMethod(ClearMagickException)
@@ -189,7 +189,7 @@
#define CompareSplayTreeStringInfo PrependMagickMethod(CompareSplayTreeStringInfo)
#define CompareSplayTreeString PrependMagickMethod(CompareSplayTreeString)
#define CompareStringInfo PrependMagickMethod(CompareStringInfo)
-#define CompositeImageChannel PrependMagickMethod(CompositeImageChannel)
+#define CompositeImage PrependMagickMethod(CompositeImage)
#define CompositeImage PrependMagickMethod(CompositeImage)
#define CompositeLayers PrependMagickMethod(CompositeLayers)
#define CompressImageColormap PrependMagickMethod(CompressImageColormap)
@@ -215,7 +215,7 @@
#define ConvertRGBToHSB PrependMagickMethod(ConvertRGBToHSB)
#define ConvertRGBToHSL PrependMagickMethod(ConvertRGBToHSL)
#define ConvertRGBToHWB PrependMagickMethod(ConvertRGBToHWB)
-#define ConvolveImageChannel PrependMagickMethod(ConvolveImageChannel)
+#define ConvolveImage PrependMagickMethod(ConvolveImage)
#define ConvolveImage PrependMagickMethod(ConvolveImage)
#define CopyMagickMemory PrependMagickMethod(CopyMagickMemory)
#define CopyMagickString PrependMagickMethod(CopyMagickString)
@@ -323,7 +323,7 @@
#define FileToImage PrependMagickMethod(FileToImage)
#define FileToStringInfo PrependMagickMethod(FileToStringInfo)
#define FileToString PrependMagickMethod(FileToString)
-#define FilterImageChannel PrependMagickMethod(FilterImageChannel)
+#define FilterImage PrependMagickMethod(FilterImage)
#define FilterImage PrependMagickMethod(FilterImage)
#define FinalizeSignature PrependMagickMethod(FinalizeSignature)
#define FlattenImages PrependMagickMethod(FlattenImages)
@@ -355,7 +355,7 @@
#define FxPreprocessExpression PrependMagickMethod(FxPreprocessExpression)
#define GammaImage PrependMagickMethod(GammaImage)
#define GammaImage PrependMagickMethod(GammaImage)
-#define GaussianBlurImageChannel PrependMagickMethod(GaussianBlurImageChannel)
+#define GaussianBlurImage PrependMagickMethod(GaussianBlurImage)
#define GaussianBlurImage PrependMagickMethod(GaussianBlurImage)
#define GaussJordanElimination PrependMagickMethod(GaussJordanElimination)
#define GenerateDifferentialNoise PrependMagickMethod(GenerateDifferentialNoise)
@@ -760,7 +760,7 @@
#define MorphImages PrependMagickMethod(MorphImages)
#define MorphologyImage PrependMagickMethod(MorphologyImage)
#define MosaicImages PrependMagickMethod(MosaicImages)
-#define MotionBlurImageChannel PrependMagickMethod(MotionBlurImageChannel)
+#define MotionBlurImage PrependMagickMethod(MotionBlurImage)
#define MotionBlurImage PrependMagickMethod(MotionBlurImage)
#define MSBOrderLong PrependMagickMethod(MSBOrderLong)
#define MSBOrderShort PrependMagickMethod(MSBOrderShort)
@@ -841,13 +841,13 @@
#define QueueAuthenticNexus PrependMagickMethod(QueueAuthenticNexus)
#define QueueAuthenticPixels PrependMagickMethod(QueueAuthenticPixels)
#define QueueCacheViewAuthenticPixels PrependMagickMethod(QueueCacheViewAuthenticPixels)
-#define RadialBlurImageChannel PrependMagickMethod(RadialBlurImageChannel)
+#define RadialBlurImage PrependMagickMethod(RadialBlurImage)
#define RadialBlurImage PrependMagickMethod(RadialBlurImage)
#define RaiseImage PrependMagickMethod(RaiseImage)
#define RandomChannelThresholdImage PrependMagickMethod(RandomChannelThresholdImage)
#define RandomComponentGenesis PrependMagickMethod(RandomComponentGenesis)
#define RandomComponentTerminus PrependMagickMethod(RandomComponentTerminus)
-#define RandomThresholdImageChannel PrependMagickMethod(RandomThresholdImageChannel)
+#define RandomThresholdImage PrependMagickMethod(RandomThresholdImage)
#define RandomThresholdImage PrependMagickMethod(RandomThresholdImage)
#define ReacquireMemory PrependMagickMethod(ReacquireMemory)
#define ReadBlobByte PrependMagickMethod(ReadBlobByte)
@@ -1038,7 +1038,7 @@
#define SeedPseudoRandomGenerator PrependMagickMethod(SeedPseudoRandomGenerator)
#define SeekBlob PrependMagickMethod(SeekBlob)
#define SegmentImage PrependMagickMethod(SegmentImage)
-#define SelectiveBlurImageChannel PrependMagickMethod(SelectiveBlurImageChannel)
+#define SelectiveBlurImage PrependMagickMethod(SelectiveBlurImage)
#define SelectiveBlurImage PrependMagickMethod(SelectiveBlurImage)
#define SemaphoreComponentGenesis PrependMagickMethod(SemaphoreComponentGenesis)
#define SemaphoreComponentTerminus PrependMagickMethod(SemaphoreComponentTerminus)
@@ -1123,7 +1123,7 @@
#define SetXMLTreeContent PrependMagickMethod(SetXMLTreeContent)
#define ShadeImage PrependMagickMethod(ShadeImage)
#define ShadowImage PrependMagickMethod(ShadowImage)
-#define SharpenImageChannel PrependMagickMethod(SharpenImageChannel)
+#define SharpenImage PrependMagickMethod(SharpenImage)
#define SharpenImage PrependMagickMethod(SharpenImage)
#define ShaveImage PrependMagickMethod(ShaveImage)
#define ShearImage PrependMagickMethod(ShearImage)
@@ -1308,14 +1308,14 @@
#define UnregisterXWDImage PrependMagickMethod(UnregisterXWDImage)
#define UnregisterYCBCRImage PrependMagickMethod(UnregisterYCBCRImage)
#define UnregisterYUVImage PrependMagickMethod(UnregisterYUVImage)
-#define UnsharpMaskImageChannel PrependMagickMethod(UnsharpMaskImageChannel)
+#define UnsharpMaskImage PrependMagickMethod(UnsharpMaskImage)
#define UnsharpMaskImage PrependMagickMethod(UnsharpMaskImage)
#define UnshiftImageList PrependMagickMethod(UnshiftImageList)
#define UpdateSignature PrependMagickMethod(UpdateSignature)
#define ValidateColormapIndex PrependMagickMethod(ValidateColormapIndex)
#define VignetteImage PrependMagickMethod(VignetteImage)
#define WaveImage PrependMagickMethod(WaveImage)
-#define WhiteThresholdImageChannel PrependMagickMethod(WhiteThresholdImageChannel)
+#define WhiteThresholdImage PrependMagickMethod(WhiteThresholdImage)
#define WhiteThresholdImage PrependMagickMethod(WhiteThresholdImage)
#define WriteBlobByte PrependMagickMethod(WriteBlobByte)
#define WriteBlobFloat PrependMagickMethod(WriteBlobFloat)
diff --git a/MagickCore/morphology-private.h b/MagickCore/morphology-private.h
index 78bc9e7..8e45ca4 100644
--- a/MagickCore/morphology-private.h
+++ b/MagickCore/morphology-private.h
@@ -29,9 +29,8 @@
#include <MagickCore/morphology.h>
extern MagickExport Image
- *MorphologyApply(const Image *,const ChannelType,const MorphologyMethod,
- const ssize_t,const KernelInfo *,const CompositeOperator,const double,
- ExceptionInfo *);
+ *MorphologyApply(const Image *,const MorphologyMethod,const ssize_t,
+ const KernelInfo *,const CompositeOperator,const double,ExceptionInfo *);
extern MagickExport void
ScaleKernelInfo(KernelInfo *,const double,const GeometryFlags),
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 00ca774..e12f0fb 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -2443,12 +2443,12 @@
% MorphologyApply() applies a morphological method, multiple times using
% a list of multiple kernels.
%
-% It is basically equivalent to as MorphologyImageChannel() (see below) but
+% It is basically equivalent to as MorphologyImage() (see below) but
% without any user controls. This allows internel programs to use this
% function, to actually perform a specific task without possible interference
% by any API user supplied settings.
%
-% It is MorphologyImageChannel() task to extract any such user controls, and
+% 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
@@ -2459,9 +2459,9 @@
% The format of the MorphologyApply method is:
%
% Image *MorphologyApply(const Image *image,MorphologyMethod method,
-% const ChannelType channel, const ssize_t iterations,
-% const KernelInfo *kernel, const CompositeMethod compose,
-% const double bias, ExceptionInfo *exception)
+% const ssize_t iterations,const KernelInfo *kernel,
+% const CompositeMethod compose,const double bias,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2469,10 +2469,6 @@
%
% o method: the morphology method to be applied.
%
-% o channel: the channels to which the operations are applied
-% The channel 'sync' flag determines if 'alpha weighting' is
-% applied for convolution style operations.
-%
% o iterations: apply the operation this many times (or no change).
% A value of -1 means loop until no change found.
% How this is applied may depend on the morphology method.
@@ -2498,9 +2494,9 @@
** It returns the number of pixels that changed between the images
** for result convergence determination.
*/
-static ssize_t MorphologyPrimitive(const Image *image, Image *morphology_image,
- const MorphologyMethod method, const ChannelType channel,
- const KernelInfo *kernel,const double bias,ExceptionInfo *exception)
+static ssize_t MorphologyPrimitive(const Image *image,Image *morphology_image,
+ const MorphologyMethod method,const KernelInfo *kernel,const double bias,
+ ExceptionInfo *exception)
{
#define MorphologyTag "Morphology/Image"
@@ -2657,8 +2653,8 @@
*/
k = &kernel->values[ kernel->height-1 ];
k_pixels = p;
- if ( ((channel & SyncChannels) == 0 ) ||
- (image->matte == MagickFalse) )
+ if ( (image->sync == MagickFalse) ||
+ (image->matte == MagickFalse) )
{ /* No 'Sync' involved.
** Convolution is simple greyscale channel operation
*/
@@ -2882,8 +2878,8 @@
*/
k = &kernel->values[ kernel->width*kernel->height-1 ];
k_pixels = p;
- if ( ((channel & SyncChannels) == 0 ) ||
- (image->matte == MagickFalse) )
+ if ( (image->sync == MagickFalse) ||
+ (image->matte == MagickFalse) )
{ /* No 'Sync' involved.
** Convolution is simple greyscale channel operation
*/
@@ -3279,8 +3275,8 @@
** of multi-threaded, parellel processing.
*/
static ssize_t MorphologyPrimitiveDirect(Image *image,
- const MorphologyMethod method, const ChannelType channel,
- const KernelInfo *kernel,ExceptionInfo *exception)
+ const MorphologyMethod method,const KernelInfo *kernel,
+ ExceptionInfo *exception)
{
CacheView
*auth_view,
@@ -3713,10 +3709,10 @@
** Basically this provides the complex grue between the requested morphology
** method and raw low-level implementation (above).
*/
-MagickExport Image *MorphologyApply(const Image *image, const ChannelType
- channel,const MorphologyMethod method, const ssize_t iterations,
- const KernelInfo *kernel, const CompositeOperator compose,
- const double bias, ExceptionInfo *exception)
+MagickExport Image *MorphologyApply(const Image *image,
+ const MorphologyMethod method, const ssize_t iterations,
+ const KernelInfo *kernel, const CompositeOperator compose,const double bias,
+ ExceptionInfo *exception)
{
CompositeOperator
curr_compose;
@@ -3838,7 +3834,7 @@
}
changed = MorphologyPrimitiveDirect(rslt_image, method,
- channel, kernel, exception);
+ kernel, exception);
if ( verbose == MagickTrue )
(void) (void) FormatLocaleFile(stderr,
@@ -3852,8 +3848,7 @@
if ( method == VoronoiMorphology ) {
/* Preserve the alpha channel of input image - but turned off */
(void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel);
- (void) CompositeImageChannel(rslt_image, DefaultChannels,
- CopyOpacityCompositeOp, image, 0, 0);
+ (void) CompositeImage(rslt_image, CopyOpacityCompositeOp, image, 0, 0);
(void) SetImageAlphaChannel(rslt_image, DeactivateAlphaChannel);
}
goto exit_cleanup;
@@ -4023,7 +4018,7 @@
/* APPLY THE MORPHOLOGICAL PRIMITIVE (curr -> work) */
count++;
changed = MorphologyPrimitive(curr_image, work_image, primitive,
- channel, this_kernel, bias, exception);
+ this_kernel, bias, exception);
if ( verbose == MagickTrue ) {
if ( kernel_loop > 1 )
@@ -4080,17 +4075,16 @@
if ( verbose == MagickTrue )
(void) FormatLocaleFile(stderr, "\n%s: Difference with original image",
CommandOptionToMnemonic(MagickMorphologyOptions, method) );
- (void) CompositeImageChannel(curr_image,
- (ChannelType) (channel & ~SyncChannels),
- DifferenceCompositeOp, image, 0, 0);
+ curr_image->sync=MagickFalse;
+ (void) CompositeImage(curr_image,DifferenceCompositeOp,image,0,0);
break;
case EdgeMorphology:
if ( verbose == MagickTrue )
(void) FormatLocaleFile(stderr, "\n%s: Difference of Dilate and Erode",
CommandOptionToMnemonic(MagickMorphologyOptions, method) );
- (void) CompositeImageChannel(curr_image,
- (ChannelType) (channel & ~SyncChannels),
- DifferenceCompositeOp, save_image, 0, 0);
+ curr_image->sync=MagickFalse;
+ (void) CompositeImage(curr_image,DifferenceCompositeOp,save_image,0,
+ 0);
save_image = DestroyImage(save_image); /* finished with save image */
break;
default:
@@ -4126,9 +4120,8 @@
if ( verbose == MagickTrue )
(void) FormatLocaleFile(stderr, " (compose \"%s\")",
CommandOptionToMnemonic(MagickComposeOptions, rslt_compose) );
- (void) CompositeImageChannel(rslt_image,
- (ChannelType) (channel & ~SyncChannels), rslt_compose,
- curr_image, 0, 0);
+ rslt_image->sync=MagickFalse;
+ (void) CompositeImage(rslt_image, rslt_compose, curr_image, 0, 0);
curr_image = DestroyImage(curr_image);
curr_image = (Image *) image; /* continue with original image */
}
@@ -4172,13 +4165,13 @@
% %
% %
% %
-% M o r p h o l o g y I m a g e C h a n n e l %
+% M o r p h o l o g y I m a g e %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% MorphologyImageChannel() applies a user supplied kernel to the image
+% MorphologyImage() applies a user supplied kernel to the image
% according to the given mophology method.
%
% This function applies any and all user defined settings before calling
@@ -4195,7 +4188,7 @@
% Image *MorphologyImage(const Image *image,MorphologyMethod method,
% const ssize_t iterations,KernelInfo *kernel,ExceptionInfo *exception)
%
-% Image *MorphologyImageChannel(const Image *image, const ChannelType
+% Image *MorphologyImage(const Image *image, const ChannelType
% channel,MorphologyMethod method,const ssize_t iterations,
% KernelInfo *kernel,ExceptionInfo *exception)
%
@@ -4210,18 +4203,15 @@
% How this is applied may depend on the morphology method.
% Typically this is a value of 1.
%
-% o channel: the channel type.
-%
% o kernel: An array of double representing the morphology kernel.
% Warning: kernel may be normalized for the Convolve method.
%
% o exception: return any errors or warnings in this structure.
%
*/
-
-MagickExport Image *MorphologyImageChannel(const Image *image,
- const ChannelType channel,const MorphologyMethod method,
- const ssize_t iterations,const KernelInfo *kernel,ExceptionInfo *exception)
+MagickExport Image *MorphologyImage(const Image *image,
+ const MorphologyMethod method,const ssize_t iterations,
+ const KernelInfo *kernel,ExceptionInfo *exception)
{
KernelInfo
*curr_kernel;
@@ -4275,26 +4265,14 @@
MagickComposeOptions,MagickFalse,artifact);
}
/* Apply the Morphology */
- morphology_image = MorphologyApply(image, channel, method, iterations,
- curr_kernel, compose, image->bias, exception);
+ morphology_image = MorphologyApply(image, method, iterations,
+ curr_kernel, compose, image->bias, exception);
/* Cleanup and Exit */
if ( curr_kernel != kernel )
curr_kernel=DestroyKernelInfo(curr_kernel);
return(morphology_image);
}
-
-MagickExport Image *MorphologyImage(const Image *image, const MorphologyMethod
- method, const ssize_t iterations,const KernelInfo *kernel, ExceptionInfo
- *exception)
-{
- Image
- *morphology_image;
-
- morphology_image=MorphologyImageChannel(image,DefaultChannels,method,
- iterations,kernel,exception);
- return(morphology_image);
-}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/MagickCore/morphology.h b/MagickCore/morphology.h
index fc0e242..70652d0 100644
--- a/MagickCore/morphology.h
+++ b/MagickCore/morphology.h
@@ -133,9 +133,7 @@
extern MagickExport Image
*MorphologyImage(const Image *,const MorphologyMethod,const ssize_t,
- const KernelInfo *,ExceptionInfo *),
- *MorphologyImageChannel(const Image *,const ChannelType,
- const MorphologyMethod,const ssize_t,const KernelInfo *,ExceptionInfo *);
+ const KernelInfo *,ExceptionInfo *);
extern MagickExport void
ScaleGeometryKernelInfo(KernelInfo *,const char *),
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index da42061..1fffd59 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -321,36 +321,22 @@
% If the default channel setting is given the image is thresholded using just
% the gray 'intensity' of the image, rather than the individual channels.
%
-% The format of the BilevelImageChannel method is:
+% The format of the BilevelImage method is:
%
% MagickBooleanType BilevelImage(Image *image,const double threshold)
-% MagickBooleanType BilevelImageChannel(Image *image,
-% const ChannelType channel,const double threshold)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
% o threshold: define the threshold values.
%
% Aside: You can get the same results as operator using LevelImages()
% with the 'threshold' value for both the black_point and the white_point.
%
*/
-
-MagickExport MagickBooleanType BilevelImage(Image *image,const double threshold)
-{
- MagickBooleanType
- status;
-
- status=BilevelImageChannel(image,DefaultChannels,threshold);
- return(status);
-}
-
-MagickExport MagickBooleanType BilevelImageChannel(Image *image,
- const ChannelType channel,const double threshold)
+MagickExport MagickBooleanType BilevelImage(Image *image,
+ const double threshold)
{
#define ThresholdImageTag "Threshold/Image"
@@ -401,7 +387,7 @@
status=MagickFalse;
continue;
}
- if (channel == DefaultChannels)
+ if (image->sync != MagickFalse)
{
for (x=0; x < (ssize_t) image->columns; x++)
{
@@ -448,7 +434,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_BilevelImageChannel)
+ #pragma omp critical (MagickCore_BilevelImage)
#endif
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
image->rows);
@@ -477,35 +463,20 @@
%
% The format of the BlackThresholdImage method is:
%
-% MagickBooleanType BlackThresholdImage(Image *image,const char *threshold)
-% MagickBooleanType BlackThresholdImageChannel(Image *image,
-% const ChannelType channel,const char *threshold,
-% ExceptionInfo *exception)
+% MagickBooleanType BlackThresholdImage(Image *image,
+% const char *threshold,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel or channels to be thresholded.
-%
% o threshold: Define the threshold value.
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport MagickBooleanType BlackThresholdImage(Image *image,
- const char *threshold)
-{
- MagickBooleanType
- status;
-
- status=BlackThresholdImageChannel(image,DefaultChannels,threshold,
- &image->exception);
- return(status);
-}
-
-MagickExport MagickBooleanType BlackThresholdImageChannel(Image *image,
- const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
+ const char *thresholds,ExceptionInfo *exception)
{
#define ThresholdImageTag "Threshold/Image"
@@ -588,7 +559,7 @@
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- if (channel != DefaultChannels)
+ if (image->sync != MagickFalse)
{
if (GetPixelIntensity(image,q) < GetPixelInfoIntensity(&threshold))
{
@@ -628,7 +599,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_BlackThresholdImageChannel)
+ #pragma omp critical (MagickCore_BlackThresholdImage)
#endif
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
image->rows);
@@ -653,18 +624,14 @@
%
% ClampImage() restricts the color range from 0 to the quantum depth.
%
-% The format of the ClampImageChannel method is:
+% The format of the ClampImage method is:
%
% MagickBooleanType ClampImage(Image *image)
-% MagickBooleanType ClampImageChannel(Image *image,
-% const ChannelType channel)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel type.
-%
*/
static inline Quantum ClampToUnsignedQuantum(const Quantum quantum)
@@ -682,16 +649,6 @@
MagickExport MagickBooleanType ClampImage(Image *image)
{
- MagickBooleanType
- status;
-
- status=ClampImageChannel(image,DefaultChannels);
- return(status);
-}
-
-MagickExport MagickBooleanType ClampImageChannel(Image *image,
- const ChannelType channel)
-{
#define ClampImageTag "Clamp/Image"
CacheView
@@ -781,7 +738,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_ClampImageChannel)
+ #pragma omp critical (MagickCore_ClampImage)
#endif
proceed=SetImageProgress(image,ClampImageTag,progress++,
image->rows);
@@ -1528,18 +1485,13 @@
%
% The format of the RandomThresholdImage method is:
%
-% MagickBooleanType RandomThresholdImageChannel(Image *image,
+% MagickBooleanType RandomThresholdImage(Image *image,
% const char *thresholds,ExceptionInfo *exception)
-% MagickBooleanType RandomThresholdImageChannel(Image *image,
-% const ChannelType channel,const char *thresholds,
-% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel or channels to be thresholded.
-%
% o thresholds: a geometry string containing low,high thresholds. If the
% string contains 2x2, 3x3, or 4x4, an ordered dither of order 2, 3, or 4
% is performed instead.
@@ -1547,21 +1499,9 @@
% o exception: return any errors or warnings in this structure.
%
*/
-
MagickExport MagickBooleanType RandomThresholdImage(Image *image,
const char *thresholds,ExceptionInfo *exception)
{
- MagickBooleanType
- status;
-
- status=RandomThresholdImageChannel(image,DefaultChannels,thresholds,
- exception);
- return(status);
-}
-
-MagickExport MagickBooleanType RandomThresholdImageChannel(Image *image,
- const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
-{
#define ThresholdImageTag "Threshold/Image"
CacheView
@@ -1613,22 +1553,12 @@
max_threshold*=(MagickRealType) (0.01*QuantumRange);
min_threshold*=(MagickRealType) (0.01*QuantumRange);
}
- else
- if (((max_threshold == min_threshold) || (max_threshold == 1)) &&
- (min_threshold <= 8))
- {
- /*
- Backward Compatibility -- ordered-dither -- IM v 6.2.9-6.
- */
- status=OrderedPosterizeImage(image,thresholds,exception);
- return(status);
- }
/*
Random threshold image.
*/
status=MagickTrue;
progress=0;
- if (channel == CompositeChannels)
+ if (image->sync != MagickFalse)
{
if (AcquireImageColormap(image,2) == MagickFalse)
ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed",
@@ -1692,7 +1622,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_RandomThresholdImageChannel)
+ #pragma omp critical (MagickCore_RandomThresholdImage)
#endif
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
image->rows);
@@ -1817,7 +1747,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_RandomThresholdImageChannel)
+ #pragma omp critical (MagickCore_RandomThresholdImage)
#endif
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
image->rows);
@@ -1847,35 +1777,20 @@
%
% The format of the WhiteThresholdImage method is:
%
-% MagickBooleanType WhiteThresholdImage(Image *image,const char *threshold)
-% MagickBooleanType WhiteThresholdImageChannel(Image *image,
-% const ChannelType channel,const char *threshold,
-% ExceptionInfo *exception)
+% MagickBooleanType WhiteThresholdImage(Image *image,
+% const char *threshold,ExceptionInfo *exception)
%
% A description of each parameter follows:
%
% o image: the image.
%
-% o channel: the channel or channels to be thresholded.
-%
% o threshold: Define the threshold value.
%
% o exception: return any errors or warnings in this structure.
%
*/
MagickExport MagickBooleanType WhiteThresholdImage(Image *image,
- const char *threshold)
-{
- MagickBooleanType
- status;
-
- status=WhiteThresholdImageChannel(image,DefaultChannels,threshold,
- &image->exception);
- return(status);
-}
-
-MagickExport MagickBooleanType WhiteThresholdImageChannel(Image *image,
- const ChannelType channel,const char *thresholds,ExceptionInfo *exception)
+ const char *thresholds,ExceptionInfo *exception)
{
#define ThresholdImageTag "Threshold/Image"
@@ -1958,7 +1873,7 @@
}
for (x=0; x < (ssize_t) image->columns; x++)
{
- if (channel != DefaultChannels)
+ if (image->sync != MagickFalse)
{
if (GetPixelIntensity(image,q) > GetPixelInfoIntensity(&threshold))
{
@@ -1998,7 +1913,7 @@
proceed;
#if defined(MAGICKCORE_OPENMP_SUPPORT)
- #pragma omp critical (MagickCore_WhiteThresholdImageChannel)
+ #pragma omp critical (MagickCore_WhiteThresholdImage)
#endif
proceed=SetImageProgress(image,ThresholdImageTag,progress++,
image->rows);
diff --git a/MagickCore/threshold.h b/MagickCore/threshold.h
index 2743d46..c8c7230 100644
--- a/MagickCore/threshold.h
+++ b/MagickCore/threshold.h
@@ -35,20 +35,12 @@
extern MagickExport MagickBooleanType
BilevelImage(Image *,const double),
- BilevelImageChannel(Image *,const ChannelType,const double),
- BlackThresholdImage(Image *,const char *),
- BlackThresholdImageChannel(Image *,const ChannelType,const char *,
- ExceptionInfo *),
+ BlackThresholdImage(Image *,const char *,ExceptionInfo *),
ClampImage(Image *),
- ClampImageChannel(Image *,const ChannelType),
ListThresholdMaps(FILE *,ExceptionInfo *),
OrderedPosterizeImage(Image *,const char *,ExceptionInfo *),
RandomThresholdImage(Image *,const char *,ExceptionInfo *),
- RandomThresholdImageChannel(Image *,const ChannelType,const char *,
- ExceptionInfo *),
- WhiteThresholdImage(Image *,const char *),
- WhiteThresholdImageChannel(Image *,const ChannelType,const char *,
- ExceptionInfo *);
+ WhiteThresholdImage(Image *,const char *,ExceptionInfo *);
#if defined(__cplusplus) || defined(c_plusplus)
}
diff --git a/MagickWand/composite.c b/MagickWand/composite.c
index 6f22b80..217cc38 100644
--- a/MagickWand/composite.c
+++ b/MagickWand/composite.c
@@ -122,6 +122,7 @@
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",(*image)->filename);
assert(exception != (ExceptionInfo *) NULL);
status=MagickTrue;
+ PushPixelComponentMap(composite_image,composite_options->channel);
if (composite_image != (Image *) NULL)
{
assert(composite_image->signature == MagickSignature);
@@ -189,8 +190,7 @@
columns=composite_image->columns;
for (y=0; y < (ssize_t) (*image)->rows; y+=(ssize_t) composite_image->rows)
for (x=0; x < (ssize_t) (*image)->columns; x+=(ssize_t) columns)
- status&=CompositeImageChannel(*image,
- composite_options->channel,composite_options->compose,
+ status&=CompositeImage(*image,composite_options->compose,
composite_image,x,y);
GetImageException(*image,exception);
}
@@ -213,12 +213,12 @@
/*
Digitally composite image.
*/
- status&=CompositeImageChannel(*image,composite_options->channel,
- composite_options->compose,composite_image,geometry.x,
- geometry.y);
+ status&=CompositeImage(*image,composite_options->compose,
+ composite_image,geometry.x,geometry.y);
GetImageException(*image,exception);
}
}
+ PopPixelComponentMap(composite_image);
return(status != 0 ? MagickTrue : MagickFalse);
}
diff --git a/MagickWand/magick-image.c b/MagickWand/magick-image.c
index 09449d9..7cb7d4c 100644
--- a/MagickWand/magick-image.c
+++ b/MagickWand/magick-image.c
@@ -178,35 +178,20 @@
%
% MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
% const double radius,const double sigma)
-% MagickBooleanType MagickAdaptiveBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
% o sigma: the standard deviation of the Gaussian, in pixels.
%
*/
-
WandExport MagickBooleanType MagickAdaptiveBlurImage(MagickWand *wand,
const double radius,const double sigma)
{
- MagickBooleanType
- status;
-
- status=MagickAdaptiveBlurImageChannel(wand,DefaultChannels,radius,sigma);
- return(status);
-}
-
-WandExport MagickBooleanType MagickAdaptiveBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma)
-{
Image
*sharp_image;
@@ -216,8 +201,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- sharp_image=AdaptiveBlurImageChannel(wand->images,channel,radius,sigma,
- wand->exception);
+ sharp_image=AdaptiveBlurImage(wand->images,radius,sigma,wand->exception);
if (sharp_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,sharp_image);
@@ -291,35 +275,20 @@
%
% MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
% const double radius,const double sigma)
-% MagickBooleanType MagickAdaptiveSharpenImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
% o sigma: the standard deviation of the Gaussian, in pixels.
%
*/
-
WandExport MagickBooleanType MagickAdaptiveSharpenImage(MagickWand *wand,
const double radius,const double sigma)
{
- MagickBooleanType
- status;
-
- status=MagickAdaptiveSharpenImageChannel(wand,DefaultChannels,radius,sigma);
- return(status);
-}
-
-WandExport MagickBooleanType MagickAdaptiveSharpenImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma)
-{
Image
*sharp_image;
@@ -329,8 +298,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- sharp_image=AdaptiveSharpenImageChannel(wand->images,channel,radius,sigma,
- wand->exception);
+ sharp_image=AdaptiveSharpenImage(wand->images,radius,sigma,wand->exception);
if (sharp_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,sharp_image);
@@ -854,7 +822,7 @@
QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
PixelGetBlueQuantum(threshold),PixelGetOpacityQuantum(threshold));
- status=BlackThresholdImage(wand->images,thresholds);
+ status=BlackThresholdImage(wand->images,thresholds,&wand->images->exception);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
@@ -925,35 +893,20 @@
%
% MagickBooleanType MagickBlurImage(MagickWand *wand,const double radius,
% const double sigma)
-% MagickBooleanType MagickBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the , in pixels, not counting the center
% pixel.
%
% o sigma: the standard deviation of the , in pixels.
%
*/
-
WandExport MagickBooleanType MagickBlurImage(MagickWand *wand,
const double radius,const double sigma)
{
- MagickBooleanType
- status;
-
- status=MagickBlurImageChannel(wand,DefaultChannels,radius,sigma);
- return(status);
-}
-
-WandExport MagickBooleanType MagickBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma)
-{
Image
*blur_image;
@@ -963,8 +916,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- blur_image=BlurImageChannel(wand->images,channel,radius,sigma,
- wand->exception);
+ blur_image=BlurImage(wand->images,radius,sigma,wand->exception);
if (blur_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,blur_image);
@@ -1202,8 +1154,6 @@
% The format of the MagickClampImage method is:
%
% MagickBooleanType MagickClampImage(MagickWand *wand)
-% MagickBooleanType MagickClampImageChannel(MagickWand *wand,
-% const ChannelType channel)
%
% A description of each parameter follows:
%
@@ -1212,29 +1162,18 @@
% o channel: the channel.
%
*/
-
WandExport MagickBooleanType MagickClampImage(MagickWand *wand)
{
MagickBooleanType
status;
- status=MagickClampImageChannel(wand,DefaultChannels);
- return(status);
-}
-
-WandExport MagickBooleanType MagickClampImageChannel(MagickWand *wand,
- const ChannelType channel)
-{
- MagickBooleanType
- status;
-
assert(wand != (MagickWand *) NULL);
assert(wand->signature == WandSignature);
if (wand->debug != MagickFalse)
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- status=ClampImageChannel(wand->images,channel);
+ status=ClampImage(wand->images);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
@@ -1794,9 +1733,6 @@
% MagickBooleanType MagickCompositeImage(MagickWand *wand,
% const MagickWand *composite_wand,const CompositeOperator compose,
% const ssize_t x,const ssize_t y)
-% MagickBooleanType MagickCompositeImageChannel(MagickWand *wand,
-% const ChannelType channel,const MagickWand *composite_wand,
-% const CompositeOperator compose,const ssize_t x,const ssize_t y)
%
% A description of each parameter follows:
%
@@ -1818,22 +1754,9 @@
% o y: the row offset of the composited image.
%
*/
-
WandExport MagickBooleanType MagickCompositeImage(MagickWand *wand,
- const MagickWand *composite_wand,const CompositeOperator compose,const ssize_t x,
- const ssize_t y)
-{
- MagickBooleanType
- status;
-
- status=MagickCompositeImageChannel(wand,DefaultChannels,composite_wand,
- compose,x,y);
- return(status);
-}
-
-WandExport MagickBooleanType MagickCompositeImageChannel(MagickWand *wand,
- const ChannelType channel,const MagickWand *composite_wand,
- const CompositeOperator compose,const ssize_t x,const ssize_t y)
+ const MagickWand *composite_wand,const CompositeOperator compose,
+ const ssize_t x,const ssize_t y)
{
MagickBooleanType
status;
@@ -1845,8 +1768,7 @@
if ((wand->images == (Image *) NULL) ||
(composite_wand->images == (Image *) NULL))
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- status=CompositeImageChannel(wand->images,channel,compose,
- composite_wand->images,x,y);
+ status=CompositeImage(wand->images,compose,composite_wand->images,x,y);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
@@ -1963,35 +1885,19 @@
%
% MagickBooleanType MagickConvolveImage(MagickWand *wand,
% const size_t order,const double *kernel)
-% MagickBooleanType MagickConvolveImageChannel(MagickWand *wand,
-% const ChannelType channel,const size_t order,
-% const double *kernel)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o order: the number of columns and rows in the filter kernel.
%
% o kernel: An array of doubles representing the convolution kernel.
%
*/
-
WandExport MagickBooleanType MagickConvolveImage(MagickWand *wand,
const size_t order,const double *kernel)
{
- MagickBooleanType
- status;
-
- status=MagickConvolveImageChannel(wand,DefaultChannels,order,kernel);
- return(status);
-}
-
-WandExport MagickBooleanType MagickConvolveImageChannel(MagickWand *wand,
- const ChannelType channel,const size_t order,const double *kernel)
-{
Image
*convolve_image;
@@ -2003,8 +1909,7 @@
return(MagickFalse);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- convolve_image=ConvolveImageChannel(wand->images,channel,order,kernel,
- wand->exception);
+ convolve_image=ConvolveImage(wand->images,order,kernel,wand->exception);
if (convolve_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,convolve_image);
@@ -3041,32 +2946,17 @@
%
% MagickBooleanType MagickFilterImage(MagickWand *wand,
% const KernelInfo *kernel)
-% MagickBooleanType MagickFilterImageChannel(MagickWand *wand,
-% const ChannelType channel,const KernelInfo *kernel)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o kernel: An array of doubles representing the convolution kernel.
%
*/
-
WandExport MagickBooleanType MagickFilterImage(MagickWand *wand,
const KernelInfo *kernel)
{
- MagickBooleanType
- status;
-
- status=MagickFilterImageChannel(wand,DefaultChannels,kernel);
- return(status);
-}
-
-WandExport MagickBooleanType MagickFilterImageChannel(MagickWand *wand,
- const ChannelType channel,const KernelInfo *kernel)
-{
Image
*filter_image;
@@ -3078,7 +2968,7 @@
return(MagickFalse);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- filter_image=FilterImageChannel(wand->images,channel,kernel,wand->exception);
+ filter_image=FilterImage(wand->images,kernel,wand->exception);
if (filter_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,filter_image);
@@ -3520,35 +3410,20 @@
%
% MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
% const double radius,const double sigma)
-% MagickBooleanType MagickGaussianBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
% o sigma: the standard deviation of the Gaussian, in pixels.
%
*/
-
WandExport MagickBooleanType MagickGaussianBlurImage(MagickWand *wand,
const double radius,const double sigma)
{
- MagickBooleanType
- status;
-
- status=MagickGaussianBlurImageChannel(wand,DefaultChannels,radius,sigma);
- return(status);
-}
-
-WandExport MagickBooleanType MagickGaussianBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma)
-{
Image
*blur_image;
@@ -3558,8 +3433,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- blur_image=GaussianBlurImageChannel(wand->images,channel,radius,sigma,
- wand->exception);
+ blur_image=GaussianBlurImage(wand->images,radius,sigma,wand->exception);
if (blur_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,blur_image);
@@ -6715,16 +6589,11 @@
%
% MagickBooleanType MagickMorphologyImage(MagickWand *wand,
% MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
-% MagickBooleanType MagickMorphologyImageChannel(MagickWand *wand,
-% ChannelType channel,MorphologyMethod method,const ssize_t iterations,
-% KernelInfo *kernel)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o method: the morphology method to be applied.
%
% o iterations: apply the operation this many times (or no change).
@@ -6734,22 +6603,9 @@
% o kernel: An array of doubles representing the morphology kernel.
%
*/
-
WandExport MagickBooleanType MagickMorphologyImage(MagickWand *wand,
MorphologyMethod method,const ssize_t iterations,KernelInfo *kernel)
{
- MagickBooleanType
- status;
-
- status=MagickMorphologyImageChannel(wand,DefaultChannels,method,iterations,
- kernel);
- return(status);
-}
-
-WandExport MagickBooleanType MagickMorphologyImageChannel(MagickWand *wand,
- const ChannelType channel,MorphologyMethod method,const ssize_t iterations,
- KernelInfo *kernel)
-{
Image
*morphology_image;
@@ -6761,8 +6617,8 @@
return(MagickFalse);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- morphology_image=MorphologyImageChannel(wand->images,channel,method,
- iterations,kernel,wand->exception);
+ morphology_image=MorphologyImage(wand->images,method,iterations,kernel,
+ wand->exception);
if (morphology_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,morphology_image);
@@ -6790,16 +6646,11 @@
%
% MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
% const double radius,const double sigma,const double angle)
-% MagickBooleanType MagickMotionBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma,
-% const double angle)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting
% the center pixel.
%
@@ -6808,21 +6659,9 @@
% o angle: Apply the effect along this angle.
%
*/
-
WandExport MagickBooleanType MagickMotionBlurImage(MagickWand *wand,
const double radius,const double sigma,const double angle)
{
- MagickBooleanType
- status;
-
- status=MagickMotionBlurImageChannel(wand,DefaultChannels,radius,sigma,angle);
- return(status);
-}
-
-WandExport MagickBooleanType MagickMotionBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma,
- const double angle)
-{
Image
*blur_image;
@@ -6832,8 +6671,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- blur_image=MotionBlurImageChannel(wand->images,channel,radius,sigma,angle,
- wand->exception);
+ blur_image=MotionBlurImage(wand->images,radius,sigma,angle,wand->exception);
if (blur_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,blur_image);
@@ -7758,31 +7596,17 @@
%
% MagickBooleanType MagickRadialBlurImage(MagickWand *wand,
% const double angle)
-% MagickBooleanType MagickRadialBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double angle)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o angle: the angle of the blur in degrees.
%
*/
WandExport MagickBooleanType MagickRadialBlurImage(MagickWand *wand,
const double angle)
{
- MagickBooleanType
- status;
-
- status=MagickRadialBlurImageChannel(wand,DefaultChannels,angle);
- return(status);
-}
-
-WandExport MagickBooleanType MagickRadialBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double angle)
-{
Image
*blur_image;
@@ -7792,8 +7616,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- blur_image=RadialBlurImageChannel(wand->images,channel,angle,
- wand->exception);
+ blur_image=RadialBlurImage(wand->images,angle,wand->exception);
if (blur_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,blur_image);
@@ -7877,34 +7700,18 @@
%
% MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
% const double low,const double high)
-% MagickBooleanType MagickRandomThresholdImageChannel(MagickWand *wand,
-% const ChannelType channel,const double low,const double high)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o low,high: Specify the high and low thresholds. These values range from
% 0 to QuantumRange.
%
*/
-
WandExport MagickBooleanType MagickRandomThresholdImage(MagickWand *wand,
const double low,const double high)
{
- MagickBooleanType
- status;
-
- status=MagickRandomThresholdImageChannel(wand,DefaultChannels,low,high);
- return(status);
-}
-
-WandExport MagickBooleanType MagickRandomThresholdImageChannel(
- MagickWand *wand,const ChannelType channel,const double low,
- const double high)
-{
char
threshold[MaxTextExtent];
@@ -7918,8 +7725,7 @@
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
(void) FormatLocaleString(threshold,MaxTextExtent,"%gx%g",low,high);
- status=RandomThresholdImageChannel(wand->images,channel,threshold,
- wand->exception);
+ status=RandomThresholdImage(wand->images,threshold,wand->exception);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
@@ -8598,16 +8404,11 @@
%
% MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
% const double radius,const double sigma,const double threshold)
-% MagickBooleanType MagickSelectiveBlurImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma,
-% const double threshold)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the gaussian, in pixels, not counting the center
% pixel.
%
@@ -8617,22 +8418,9 @@
% in the blur operation.
%
*/
-
WandExport MagickBooleanType MagickSelectiveBlurImage(MagickWand *wand,
const double radius,const double sigma,const double threshold)
{
- MagickBooleanType
- status;
-
- status=MagickSelectiveBlurImageChannel(wand,DefaultChannels,radius,sigma,
- threshold);
- return(status);
-}
-
-WandExport MagickBooleanType MagickSelectiveBlurImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma,
- const double threshold)
-{
Image
*blur_image;
@@ -8642,8 +8430,8 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- blur_image=SelectiveBlurImageChannel(wand->images,channel,radius,sigma,
- threshold,wand->exception);
+ blur_image=SelectiveBlurImage(wand->images,radius,sigma,threshold,
+ wand->exception);
if (blur_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,blur_image);
@@ -10531,35 +10319,20 @@
%
% MagickBooleanType MagickSharpenImage(MagickWand *wand,
% const double radius,const double sigma)
-% MagickBooleanType MagickSharpenImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
% o sigma: the standard deviation of the Gaussian, in pixels.
%
*/
-
WandExport MagickBooleanType MagickSharpenImage(MagickWand *wand,
const double radius,const double sigma)
{
- MagickBooleanType
- status;
-
- status=MagickSharpenImageChannel(wand,DefaultChannels,radius,sigma);
- return(status);
-}
-
-WandExport MagickBooleanType MagickSharpenImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma)
-{
Image
*sharp_image;
@@ -10569,8 +10342,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- sharp_image=SharpenImageChannel(wand->images,channel,radius,sigma,
- wand->exception);
+ sharp_image=SharpenImage(wand->images,radius,sigma,wand->exception);
if (sharp_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,sharp_image);
@@ -11139,16 +10911,11 @@
%
% MagickBooleanType MagickStatisticImage(MagickWand *wand,
% const StatisticType type,const double width,const size_t height)
-% MagickBooleanType MagickStatisticImageChannel(MagickWand *wand,
-% const ChannelType channel,const StatisticType type,const double width,
-% const size_t height)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o type: the statistic type (e.g. median, mode, etc.).
%
% o width: the width of the pixel neighborhood.
@@ -11157,8 +10924,7 @@
%
*/
WandExport MagickBooleanType MagickStatisticImage(MagickWand *wand,
- const ChannelType channel,const StatisticType type,const size_t width,
- const size_t height)
+ const StatisticType type,const size_t width,const size_t height)
{
Image
*statistic_image;
@@ -11169,7 +10935,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- statistic_image=StatisticImageChannel(wand->images,channel,type,width,height,
+ statistic_image=StatisticImage(wand->images,type,width,height,
wand->exception);
if (statistic_image == (Image *) NULL)
return(MagickFalse);
@@ -11477,7 +11243,7 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- status=BilevelImageChannel(wand->images,channel,threshold);
+ status=BilevelImage(wand->images,threshold);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
@@ -11950,16 +11716,11 @@
% MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
% const double radius,const double sigma,const double amount,
% const double threshold)
-% MagickBooleanType MagickUnsharpMaskImageChannel(MagickWand *wand,
-% const ChannelType channel,const double radius,const double sigma,
-% const double amount,const double threshold)
%
% A description of each parameter follows:
%
% o wand: the magick wand.
%
-% o channel: the image channel(s).
-%
% o radius: the radius of the Gaussian, in pixels, not counting the center
% pixel.
%
@@ -11971,23 +11732,10 @@
% o threshold: the threshold in pixels needed to apply the diffence amount.
%
*/
-
WandExport MagickBooleanType MagickUnsharpMaskImage(MagickWand *wand,
const double radius,const double sigma,const double amount,
const double threshold)
{
- MagickBooleanType
- status;
-
- status=MagickUnsharpMaskImageChannel(wand,DefaultChannels,radius,sigma,
- amount,threshold);
- return(status);
-}
-
-WandExport MagickBooleanType MagickUnsharpMaskImageChannel(MagickWand *wand,
- const ChannelType channel,const double radius,const double sigma,
- const double amount,const double threshold)
-{
Image
*unsharp_image;
@@ -11997,8 +11745,8 @@
(void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
if (wand->images == (Image *) NULL)
ThrowWandException(WandError,"ContainsNoImages",wand->name);
- unsharp_image=UnsharpMaskImageChannel(wand->images,channel,radius,sigma,
- amount,threshold,wand->exception);
+ unsharp_image=UnsharpMaskImage(wand->images,radius,sigma,amount,threshold,
+ wand->exception);
if (unsharp_image == (Image *) NULL)
return(MagickFalse);
ReplaceImageInList(&wand->images,unsharp_image);
@@ -12148,7 +11896,7 @@
QuantumFormat "," QuantumFormat "," QuantumFormat "," QuantumFormat,
PixelGetRedQuantum(threshold),PixelGetGreenQuantum(threshold),
PixelGetBlueQuantum(threshold),PixelGetOpacityQuantum(threshold));
- status=WhiteThresholdImage(wand->images,thresholds);
+ status=WhiteThresholdImage(wand->images,thresholds,&wand->images->exception);
if (status == MagickFalse)
InheritException(wand->exception,&wand->images->exception);
return(status);
diff --git a/MagickWand/magick-image.h b/MagickWand/magick-image.h
index 58ad340..c853ed7 100644
--- a/MagickWand/magick-image.h
+++ b/MagickWand/magick-image.h
@@ -72,12 +72,8 @@
extern WandExport MagickBooleanType
MagickAdaptiveBlurImage(MagickWand *,const double,const double),
- MagickAdaptiveBlurImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickAdaptiveResizeImage(MagickWand *,const size_t,const size_t),
MagickAdaptiveSharpenImage(MagickWand *,const double,const double),
- MagickAdaptiveSharpenImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickAdaptiveThresholdImage(MagickWand *,const size_t,const size_t,
const ssize_t),
MagickAddImage(MagickWand *,const MagickWand *),
@@ -91,15 +87,12 @@
MagickBlackThresholdImage(MagickWand *,const PixelWand *),
MagickBlueShiftImage(MagickWand *,const double),
MagickBlurImage(MagickWand *,const double,const double),
- MagickBlurImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickBorderImage(MagickWand *,const PixelWand *,const size_t,const size_t),
MagickBrightnessContrastImage(MagickWand *,const double,const double),
MagickCharcoalImage(MagickWand *,const double,const double),
MagickChopImage(MagickWand *,const size_t,const size_t,const ssize_t,
const ssize_t),
MagickClampImage(MagickWand *),
- MagickClampImageChannel(MagickWand *,const ChannelType),
MagickClipImage(MagickWand *),
MagickClipImagePath(MagickWand *,const char *,const MagickBooleanType),
MagickClutImage(MagickWand *,const MagickWand *),
@@ -109,14 +102,11 @@
MagickCommentImage(MagickWand *,const char *),
MagickCompositeImage(MagickWand *,const MagickWand *,const CompositeOperator,
const ssize_t,const ssize_t),
- MagickCompositeImageChannel(MagickWand *,const ChannelType,const MagickWand *, const CompositeOperator,const ssize_t,const ssize_t),
MagickConstituteImage(MagickWand *,const size_t,const size_t,const char *,
const StorageType,const void *),
MagickContrastImage(MagickWand *,const MagickBooleanType),
MagickContrastStretchImage(MagickWand *,const double,const double),
MagickConvolveImage(MagickWand *,const size_t,const double *),
- MagickConvolveImageChannel(MagickWand *,const ChannelType,const size_t,
- const double *),
MagickCropImage(MagickWand *,const size_t,const size_t,const ssize_t,
const ssize_t),
MagickCycleColormapImage(MagickWand *,const ssize_t),
@@ -139,7 +129,6 @@
MagickExtentImage(MagickWand *,const size_t,const size_t,const ssize_t,
const ssize_t),
MagickFilterImage(MagickWand *,const KernelInfo *),
- MagickFilterImageChannel(MagickWand *,const ChannelType,const KernelInfo *),
MagickFlipImage(MagickWand *),
MagickFloodfillPaintImage(MagickWand *,const PixelWand *,const double,
const PixelWand *,const ssize_t,const ssize_t,const MagickBooleanType),
@@ -151,8 +140,6 @@
const double *),
MagickGammaImage(MagickWand *,const double),
MagickGaussianBlurImage(MagickWand *,const double,const double),
- MagickGaussianBlurImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickGetImageAlphaChannel(MagickWand *),
MagickGetImageBackgroundColor(MagickWand *,PixelWand *),
MagickGetImageBluePrimary(MagickWand *,double *,double *),
@@ -194,11 +181,7 @@
MagickModulateImage(MagickWand *,const double,const double,const double),
MagickMorphologyImage(MagickWand *,MorphologyMethod,const ssize_t,
KernelInfo *),
- MagickMorphologyImageChannel(MagickWand *,const ChannelType,MorphologyMethod,
- const ssize_t,KernelInfo *),
MagickMotionBlurImage(MagickWand *,const double,const double,const double),
- MagickMotionBlurImageChannel(MagickWand *,const ChannelType,const double,
- const double,const double),
MagickNegateImage(MagickWand *,const MagickBooleanType),
MagickNewImage(MagickWand *,const size_t,const size_t,const PixelWand *),
MagickNextImage(MagickWand *),
@@ -220,12 +203,9 @@
MagickQuantizeImages(MagickWand *,const size_t,const ColorspaceType,
const size_t,const MagickBooleanType,const MagickBooleanType),
MagickRadialBlurImage(MagickWand *,const double),
- MagickRadialBlurImageChannel(MagickWand *,const ChannelType,const double),
MagickRaiseImage(MagickWand *,const size_t,const size_t,const ssize_t,
const ssize_t,const MagickBooleanType),
MagickRandomThresholdImage(MagickWand *,const double,const double),
- MagickRandomThresholdImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickReadImage(MagickWand *,const char *),
MagickReadImageBlob(MagickWand *,const void *,const size_t),
MagickReadImageFile(MagickWand *,FILE *),
@@ -244,8 +224,6 @@
MagickSegmentImage(MagickWand *,const ColorspaceType,const MagickBooleanType,
const double,const double),
MagickSelectiveBlurImage(MagickWand *,const double,const double,const double),
- MagickSelectiveBlurImageChannel(MagickWand *,const ChannelType,const double,
- const double,const double),
MagickSeparateImage(MagickWand *),
MagickSepiaToneImage(MagickWand *,const double),
MagickSetImage(MagickWand *,const MagickWand *),
@@ -294,8 +272,6 @@
MagickShadowImage(MagickWand *,const double,const double,const ssize_t,
const ssize_t),
MagickSharpenImage(MagickWand *,const double,const double),
- MagickSharpenImageChannel(MagickWand *,const ChannelType,const double,
- const double),
MagickShaveImage(MagickWand *,const size_t,const size_t),
MagickShearImage(MagickWand *,const PixelWand *,const double,const double),
MagickSigmoidalContrastImage(MagickWand *,const MagickBooleanType,
@@ -307,9 +283,7 @@
MagickSpliceImage(MagickWand *,const size_t,const size_t,const ssize_t,
const ssize_t),
MagickSpreadImage(MagickWand *,const double),
- MagickStatisticImage(MagickWand *,const ChannelType,const StatisticType,
- const size_t,const size_t),
- MagickStatisticImageChannel(MagickWand *,const StatisticType,const size_t,
+ MagickStatisticImage(MagickWand *,const StatisticType,const size_t,
const size_t),
MagickStripImage(MagickWand *),
MagickSwirlImage(MagickWand *,const double),
@@ -324,8 +298,6 @@
MagickUniqueImageColors(MagickWand *),
MagickUnsharpMaskImage(MagickWand *,const double,const double,const double,
const double),
- MagickUnsharpMaskImageChannel(MagickWand *,const ChannelType,const double,
- const double,const double,const double),
MagickVignetteImage(MagickWand *,const double,const double,const ssize_t,
const ssize_t),
MagickWaveImage(MagickWand *,const double,const double),
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index ae5533d..5c83795 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -695,8 +695,8 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=AdaptiveBlurImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,exception);
+ mogrify_image=AdaptiveBlurImage(*image,geometry_info.rho,
+ geometry_info.sigma,exception);
break;
}
if (LocaleCompare("adaptive-resize",option+1) == 0)
@@ -719,8 +719,8 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=AdaptiveSharpenImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,exception);
+ mogrify_image=AdaptiveSharpenImage(*image,geometry_info.rho,
+ geometry_info.sigma,exception);
break;
}
if (LocaleCompare("affine",option+1) == 0)
@@ -866,8 +866,7 @@
Black threshold image.
*/
(void) SyncImageSettings(mogrify_info,*image);
- (void) BlackThresholdImageChannel(*image,channel,argv[i+1],
- exception);
+ (void) BlackThresholdImage(*image,argv[i+1],exception);
InheritException(exception,&(*image)->exception);
break;
}
@@ -892,7 +891,7 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=BlurImageChannel(*image,channel,geometry_info.rho,
+ mogrify_image=BlurImage(*image,geometry_info.rho,
geometry_info.sigma,exception);
break;
}
@@ -1009,7 +1008,7 @@
Clamp image.
*/
(void) SyncImageSettings(mogrify_info,*image);
- (void) ClampImageChannel(*image,channel);
+ (void) ClampImage(*image);
InheritException(exception,&(*image)->exception);
break;
}
@@ -1211,7 +1210,7 @@
gamma=1.0/(fabs((double) gamma) <= MagickEpsilon ? 1.0 : gamma);
for (j=0; j < (ssize_t) (kernel->width*kernel->height); j++)
kernel->values[j]*=gamma;
- mogrify_image=FilterImageChannel(*image,channel,kernel,exception);
+ mogrify_image=FilterImage(*image,kernel,exception);
kernel=DestroyKernelInfo(kernel);
break;
}
@@ -1727,8 +1726,8 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=GaussianBlurImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,exception);
+ mogrify_image=GaussianBlurImage(*image,geometry_info.rho,
+ geometry_info.sigma,exception);
break;
}
if (LocaleCompare("geometry",option+1) == 0)
@@ -2042,8 +2041,8 @@
*/
(void) SyncImageSettings(mogrify_info,*image);
(void) ParseGeometry(argv[i+1],&geometry_info);
- mogrify_image=StatisticImageChannel(*image,channel,MedianStatistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.rho,exception);
+ mogrify_image=StatisticImage(*image,MedianStatistic,(size_t)
+ geometry_info.rho,(size_t) geometry_info.rho,exception);
break;
}
if (LocaleCompare("mode",option+1) == 0)
@@ -2053,8 +2052,8 @@
*/
(void) SyncImageSettings(mogrify_info,*image);
(void) ParseGeometry(argv[i+1],&geometry_info);
- mogrify_image=StatisticImageChannel(*image,channel,ModeStatistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.rho,exception);
+ mogrify_image=StatisticImage(*image,ModeStatistic,(size_t)
+ geometry_info.rho,(size_t) geometry_info.rho,exception);
break;
}
if (LocaleCompare("modulate",option+1) == 0)
@@ -2122,8 +2121,8 @@
status=MagickFalse;
break;
}
- mogrify_image=MorphologyImageChannel(*image,channel,method,
- iterations,kernel,exception);
+ mogrify_image=MorphologyImage(*image,method,iterations,kernel,
+ exception);
kernel=DestroyKernelInfo(kernel);
break;
}
@@ -2136,8 +2135,8 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=MotionBlurImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,geometry_info.xi,exception);
+ mogrify_image=MotionBlurImage(*image,geometry_info.rho,
+ geometry_info.sigma,geometry_info.xi,exception);
break;
}
break;
@@ -2158,9 +2157,8 @@
if (*option == '-')
{
(void) ParseGeometry(argv[i+1],&geometry_info);
- mogrify_image=StatisticImageChannel(*image,channel,
- NonpeakStatistic,(size_t) geometry_info.rho,(size_t)
- geometry_info.rho,exception);
+ mogrify_image=StatisticImage(*image,NonpeakStatistic,(size_t)
+ geometry_info.rho,(size_t) geometry_info.rho,exception);
}
else
{
@@ -2374,8 +2372,8 @@
Radial blur image.
*/
(void) SyncImageSettings(mogrify_info,*image);
- mogrify_image=RadialBlurImageChannel(*image,channel,
- InterpretLocaleValue(argv[i+1],(char **) NULL),exception);
+ mogrify_image=RadialBlurImage(*image,InterpretLocaleValue(argv[i+1],
+ (char **) NULL),exception);
break;
}
if (LocaleCompare("raise",option+1) == 0)
@@ -2397,8 +2395,7 @@
Threshold image.
*/
(void) SyncImageSettings(mogrify_info,*image);
- (void) RandomThresholdImageChannel(*image,channel,argv[i+1],
- exception);
+ (void) RandomThresholdImage(*image,argv[i+1],exception);
break;
}
if (LocaleCompare("recolor",option+1) == 0)
@@ -2423,8 +2420,8 @@
Composite region.
*/
(void) CompositeImage(region_image,region_image->matte !=
- MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
- region_geometry.x,region_geometry.y);
+ MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
+ region_geometry.x,region_geometry.y);
InheritException(exception,®ion_image->exception);
*image=DestroyImage(*image);
*image=region_image;
@@ -2576,8 +2573,8 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & PercentValue) != 0)
geometry_info.xi=(double) QuantumRange*geometry_info.xi/100.0;
- mogrify_image=SelectiveBlurImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,geometry_info.xi,exception);
+ mogrify_image=SelectiveBlurImage(*image,geometry_info.rho,
+ geometry_info.sigma,geometry_info.xi,exception);
break;
}
if (LocaleCompare("separate",option+1) == 0)
@@ -2696,7 +2693,7 @@
flags=ParseGeometry(argv[i+1],&geometry_info);
if ((flags & SigmaValue) == 0)
geometry_info.sigma=1.0;
- mogrify_image=SharpenImageChannel(*image,channel,geometry_info.rho,
+ mogrify_image=SharpenImage(*image,geometry_info.rho,
geometry_info.sigma,exception);
break;
}
@@ -2816,8 +2813,8 @@
type=(StatisticType) ParseCommandOption(MagickStatisticOptions,
MagickFalse,argv[i+1]);
(void) ParseGeometry(argv[i+2],&geometry_info);
- mogrify_image=StatisticImageChannel(*image,channel,type,(size_t)
- geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ mogrify_image=StatisticImage(*image,type,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,exception);
break;
}
if (LocaleCompare("stretch",option+1) == 0)
@@ -2906,7 +2903,7 @@
threshold=(double) QuantumRange/2;
else
threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
- (void) BilevelImageChannel(*image,channel,threshold);
+ (void) BilevelImage(*image,threshold);
InheritException(exception,&(*image)->exception);
break;
}
@@ -3055,9 +3052,8 @@
geometry_info.xi=1.0;
if ((flags & PsiValue) == 0)
geometry_info.psi=0.05;
- mogrify_image=UnsharpMaskImageChannel(*image,channel,
- geometry_info.rho,geometry_info.sigma,geometry_info.xi,
- geometry_info.psi,exception);
+ mogrify_image=UnsharpMaskImage(*image,geometry_info.rho,
+ geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
break;
}
break;
@@ -3141,8 +3137,7 @@
White threshold image.
*/
(void) SyncImageSettings(mogrify_info,*image);
- (void) WhiteThresholdImageChannel(*image,channel,argv[i+1],
- exception);
+ (void) WhiteThresholdImage(*image,argv[i+1],exception);
InheritException(exception,&(*image)->exception);
break;
}
@@ -3165,8 +3160,8 @@
*/
(void) SyncImageSettings(mogrify_info,*image);
(void) CompositeImage(region_image,region_image->matte !=
- MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
- region_geometry.x,region_geometry.y);
+ MagickFalse ? CopyCompositeOp : OverCompositeOp,*image,
+ region_geometry.x,region_geometry.y);
InheritException(exception,®ion_image->exception);
*image=DestroyImage(*image);
*image=region_image;
@@ -7231,9 +7226,6 @@
WandExport MagickBooleanType MogrifyImageList(ImageInfo *image_info,
const int argc,const char **argv,Image **images,ExceptionInfo *exception)
{
- ChannelType
- channel;
-
const char
*option;
@@ -7268,7 +7260,6 @@
return(MagickTrue);
mogrify_info=CloneImageInfo(image_info);
quantize_info=AcquireQuantizeInfo(mogrify_info);
- channel=mogrify_info->channel;
status=MagickTrue;
for (i=0; i < (ssize_t) argc; i++)
{
@@ -7341,12 +7332,16 @@
{
if (LocaleCompare("channel",option+1) == 0)
{
+ ChannelType
+ channel;
+
if (*option == '+')
{
channel=DefaultChannels;
break;
}
channel=(ChannelType) ParseChannelOption(argv[i+1]);
+ SetPixelComponentMap(*images,channel);
break;
}
if (LocaleCompare("clut",option+1) == 0)
@@ -7449,8 +7444,8 @@
(void) NegateImage(image->mask,MagickFalse);
}
}
- (void) CompositeImageChannel(image,channel,image->compose,
- composite_image,geometry.x,geometry.y);
+ (void) CompositeImage(image,image->compose,composite_image,
+ geometry.x,geometry.y);
if (mask_image != (Image *) NULL)
mask_image=image->mask=DestroyImage(image->mask);
composite_image=DestroyImage(composite_image);
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index b434871..ba81692 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -7558,8 +7558,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=BlurImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=BlurImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 7: /* Chop */
@@ -7715,8 +7717,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=StatisticImageChannel(image,channel,MedianStatistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=StatisticImage(image,MedianStatistic,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,exception);
+ PopPixelComponentMap(image);
break;
}
case 19: /* Minify */
@@ -7747,8 +7751,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=StatisticImageChannel(image,channel,NonpeakStatistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=StatisticImage(image,NonpeakStatistic,(size_t)
+ geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ PopPixelComponentMap(image);
break;
}
case 22: /* Roll */
@@ -7836,8 +7842,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=SharpenImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=SharpenImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 28: /* Shear */
@@ -8343,9 +8351,9 @@
geometry.y);
flags=ParseGravityGeometry(image,composite_geometry,&geometry,
exception);
+ PushPixelComponentMap(image,channel);
if (attribute_flag[8] == 0) /* no rotate */
- CompositeImageChannel(image,channel,compose,composite_image,
- geometry.x,geometry.y);
+ CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
else
{
/*
@@ -8355,8 +8363,7 @@
composite_image->columns)/2;
geometry.y-=(ssize_t) (rotate_image->rows-
composite_image->rows)/2;
- CompositeImageChannel(image,channel,compose,rotate_image,
- geometry.x,geometry.y);
+ CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
rotate_image=DestroyImage(rotate_image);
}
if (attribute_flag[10] != 0) /* mask */
@@ -8367,6 +8374,7 @@
else
image->mask=DestroyImage(image->mask);
}
+ PopPixelComponentMap(image);
break;
}
case 36: /* Contrast */
@@ -8998,7 +9006,9 @@
channel=(ChannelType) argument_list[1].integer_reference;
threshold=SiPrefixToDouble(argument_list[0].string_reference,
QuantumRange);
- (void) BilevelImageChannel(image,channel,threshold);
+ PushPixelComponentMap(image,channel);
+ (void) BilevelImage(image,threshold);
+ PopPixelComponentMap(image);
break;
}
case 58: /* Charcoal */
@@ -9105,8 +9115,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=GaussianBlurImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=GaussianBlurImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 67: /* Convolve */
@@ -9140,7 +9152,9 @@
kernel[j]=(double) SvNV(*(av_fetch(av,j,0)));
for ( ; j < (ssize_t) (order*order); j++)
kernel[j]=0.0;
- image=ConvolveImageChannel(image,channel,order,kernel,exception);
+ PushPixelComponentMap(image,channel);
+ image=ConvolveImage(image,order,kernel,exception);
+ PopPixelComponentMap(image);
kernel=(double *) RelinquishMagickMemory(kernel);
break;
}
@@ -9238,8 +9252,10 @@
geometry_info.psi=argument_list[4].real_reference;
if (attribute_flag[5] != 0)
channel=(ChannelType) argument_list[5].integer_reference;
- image=UnsharpMaskImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,geometry_info.xi,geometry_info.psi,exception);
+ PushPixelComponentMap(image,channel);
+ image=UnsharpMaskImage(image,geometry_info.rho,geometry_info.sigma,
+ geometry_info.xi,geometry_info.psi,exception);
+ PopPixelComponentMap(image);
break;
}
case 70: /* MotionBlur */
@@ -9261,8 +9277,10 @@
geometry_info.xi=argument_list[3].real_reference;
if (attribute_flag[4] != 0)
channel=(ChannelType) argument_list[4].integer_reference;
- image=MotionBlurImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,geometry_info.xi,exception);
+ PushPixelComponentMap(image,channel);
+ image=MotionBlurImage(image,geometry_info.rho,geometry_info.sigma,
+ geometry_info.xi,exception);
+ PopPixelComponentMap(image);
break;
}
case 71: /* OrderedDither */
@@ -9552,8 +9570,10 @@
argument_list[0].string_reference="50%";
if (attribute_flag[2] != 0)
channel=(ChannelType) argument_list[2].integer_reference;
- BlackThresholdImageChannel(image,channel,
- argument_list[0].string_reference,exception);
+ PushPixelComponentMap(image,channel);
+ BlackThresholdImage(image,argument_list[0].string_reference,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 81: /* WhiteThreshold */
@@ -9562,8 +9582,10 @@
argument_list[0].string_reference="50%";
if (attribute_flag[2] != 0)
channel=(ChannelType) argument_list[2].integer_reference;
- WhiteThresholdImageChannel(image,channel,
- argument_list[0].string_reference,exception);
+ PushPixelComponentMap(image,channel);
+ WhiteThresholdImage(image,argument_list[0].string_reference,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 82: /* RadialBlur */
@@ -9579,8 +9601,9 @@
geometry_info.rho=argument_list[1].real_reference;
if (attribute_flag[2] != 0)
channel=(ChannelType) argument_list[2].integer_reference;
- image=RadialBlurImageChannel(image,channel,geometry_info.rho,
- exception);
+ PushPixelComponentMap(image,channel);
+ image=RadialBlurImage(image,geometry_info.rho,exception);
+ PopPixelComponentMap(image);
break;
}
case 83: /* Thumbnail */
@@ -9856,8 +9879,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=AdaptiveSharpenImageChannel(image,channel,geometry_info.rho,
+ PushPixelComponentMap(image,channel);
+ image=AdaptiveSharpenImage(image,geometry_info.rho,
geometry_info.sigma,exception);
+ PopPixelComponentMap(image);
break;
}
case 99: /* Transpose */
@@ -9929,8 +9954,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=AdaptiveBlurImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=AdaptiveBlurImage(image,geometry_info.rho,geometry_info.sigma,
+ exception);
+ PopPixelComponentMap(image);
break;
}
case 103: /* Sketch */
@@ -10353,8 +10380,10 @@
geometry_info.xi=argument_list[3].integer_reference;;
if (attribute_flag[4] != 0)
channel=(ChannelType) argument_list[4].integer_reference;
- image=SelectiveBlurImageChannel(image,channel,geometry_info.rho,
- geometry_info.sigma,geometry_info.xi,exception);
+ PushPixelComponentMap(image,channel);
+ image=SelectiveBlurImage(image,geometry_info.rho,geometry_info.sigma,
+ geometry_info.xi,exception);
+ PopPixelComponentMap(image);
break;
}
case 122: /* HaldClut */
@@ -10446,7 +10475,9 @@
{
if (attribute_flag[0] != 0)
channel=(ChannelType) argument_list[0].integer_reference;
- (void) ClampImageChannel(image,channel);
+ PushPixelComponentMap(image,channel);
+ (void) ClampImage(image);
+ PopPixelComponentMap(image);
break;
}
case 131: /* Filter */
@@ -10464,7 +10495,9 @@
if (attribute_flag[2] != 0)
image->bias=SiPrefixToDouble(argument_list[2].string_reference,
QuantumRange);
- image=FilterImageChannel(image,channel,kernel,exception);
+ PushPixelComponentMap(image,channel);
+ image=FilterImage(image,kernel,exception);
+ PopPixelComponentMap(image);
kernel=DestroyKernelInfo(kernel);
break;
}
@@ -10519,8 +10552,9 @@
iterations=1;
if (attribute_flag[3] != 0)
iterations=argument_list[4].integer_reference;
- image=MorphologyImageChannel(image,channel,method,iterations,kernel,
- exception);
+ PushPixelComponentMap(image,channel);
+ image=MorphologyImage(image,method,iterations,kernel,exception);
+ PopPixelComponentMap(image);
kernel=DestroyKernelInfo(kernel);
break;
}
@@ -10594,8 +10628,10 @@
geometry_info.sigma=argument_list[2].real_reference;
if (attribute_flag[3] != 0)
channel=(ChannelType) argument_list[3].integer_reference;
- image=StatisticImageChannel(image,channel,ModeStatistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=StatisticImage(image,ModeStatistic,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,exception);
+ PopPixelComponentMap(image);
break;
}
case 137: /* Statistic */
@@ -10619,8 +10655,10 @@
channel=(ChannelType) argument_list[3].integer_reference;
if (attribute_flag[4] != 0)
statistic=(StatisticType) argument_list[4].integer_reference;
- image=StatisticImageChannel(image,channel,statistic,
- (size_t) geometry_info.rho,(size_t) geometry_info.sigma,exception);
+ PushPixelComponentMap(image,channel);
+ image=StatisticImage(image,statistic,(size_t) geometry_info.rho,
+ (size_t) geometry_info.sigma,exception);
+ PopPixelComponentMap(image);
break;
}
}
@@ -10630,7 +10668,7 @@
{
/*
Composite region.
- */
+ */
status=CompositeImage(region_image,CopyCompositeOp,image,
region_info.x,region_info.y);
(void) status;
diff --git a/coders/msl.c b/coders/msl.c
index c10a29b..0e8ea07 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -1231,9 +1231,10 @@
}
}
}
- blur_image=BlurImageChannel(msl_info->image[n],channel,
- geometry_info.rho,geometry_info.sigma,
- &msl_info->image[n]->exception);
+ PushPixelComponentMap(msl_info->image[n],channel);
+ blur_image=BlurImage(msl_info->image[n],geometry_info.rho,
+ geometry_info.sigma,&msl_info->image[n]->exception);
+ PopPixelComponentMap(msl_info->image[n]);
if (blur_image == (Image *) NULL)
break;
msl_info->image[n]=DestroyImage(msl_info->image[n]);
@@ -2054,9 +2055,9 @@
geometry.y);
flags=ParseGravityGeometry(image,composite_geometry,&geometry,
&exception);
+ PushPixelComponentMap(image,channel);
if (rotate_image == (Image *) NULL)
- CompositeImageChannel(image,channel,compose,composite_image,
- geometry.x,geometry.y);
+ CompositeImage(image,compose,composite_image,geometry.x,geometry.y);
else
{
/*
@@ -2065,10 +2066,10 @@
geometry.x-=(ssize_t) (rotate_image->columns-
composite_image->columns)/2;
geometry.y-=(ssize_t) (rotate_image->rows-composite_image->rows)/2;
- CompositeImageChannel(image,channel,compose,rotate_image,
- geometry.x,geometry.y);
+ CompositeImage(image,compose,rotate_image,geometry.x,geometry.y);
rotate_image=DestroyImage(rotate_image);
}
+ PopPixelComponentMap(image);
composite_image=DestroyImage(composite_image);
break;
}
@@ -7070,9 +7071,7 @@
process image.
*/
{
- BilevelImageChannel(msl_info->image[n],
- (ChannelType) ((ssize_t) (CompositeChannels &~ (ssize_t) OpacityChannel)),
- threshold);
+ BilevelImage(msl_info->image[n],threshold);
break;
}
}