#include <string.h>
#include <errno.h>
#include <math.h>
-#if !defined(MAGICKCORE_WINDOWS_SUPPORT)
-#include <strings.h>
-#endif
#include "Magick++/Include.h"
using namespace std;
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_);
MagickCore::Image* newImage =
- AddNoiseImageChannel ( image(),
- channel_,
+ AddNoiseImage ( image(),
noiseType_,
&exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
MagickCore::Image* newImage =
- BlurImageChannel( image(), channel_,radius_, sigma_, &exceptionInfo);
+ BlurImage( image(), radius_, sigma_, &exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
void Magick::Image::channel ( const ChannelType channel_ )
{
modifyImage();
- SeparateImageChannel ( image(), channel_ );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
+ SeparateImage ( image() );
+ (void) SetPixelChannelMap( image(), channel_mask );
throwImageException();
}
void Magick::Image::cdl ( const std::string &cdl_ )
{
modifyImage();
- (void) ColorDecisionListImage( image(), cdl_.c_str() );
- throwImageException();
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
+ (void) ColorDecisionListImage( image(), cdl_.c_str(), &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Colorize
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
- kernel_info=AcquireKernelInfo("1");
+ kernel_info=AcquireKernelInfo((const char *) NULL);
kernel_info->width=order_;
kernel_info->height=order_;
kernel_info->values=(double *) color_matrix_;
void Magick::Image::contrast ( const size_t sharpen_ )
{
modifyImage();
- ContrastImage ( image(), (MagickBooleanType) sharpen_ );
- throwImageException();
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
+ ContrastImage ( image(), (MagickBooleanType) sharpen_, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Convolve image. Applies a general image convolution kernel to the image.
void Magick::Image::convolve ( const size_t order_,
const double *kernel_ )
{
+ KernelInfo
+ *kernel_info;
+
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ kernel_info=AcquireKernelInfo((const char *) NULL);
+ kernel_info->width=order_;
+ kernel_info->height=order_;
+ kernel_info->values=(double *) kernel_;
+ kernel_info->bias=image()->bias;
MagickCore::Image* newImage =
- ConvolveImage ( image(), order_,
- kernel_, &exceptionInfo );
+ ConvolveImage ( image(), kernel_info, &exceptionInfo );
+ kernel_info->values=(double *) NULL;
+ kernel_info=DestroyKernelInfo(kernel_info);
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
// Equalize image (histogram equalization)
void Magick::Image::equalize ( void )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- EqualizeImage( image() );
- throwImageException();
+ EqualizeImage( image(), &exceptionInfo );
+ throwException( exceptionInfo );
}
// Erase image to current "background color"
target.green=pixel.green;
target.blue=pixel.blue;
target.alpha=alpha_;
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
FloodfillPaintImage ( image(),
- DefaultChannels,
options()->drawInfo(), // const DrawInfo *draw_info
&target,
static_cast<ssize_t>(x_), static_cast<ssize_t>(y_),
- method_ == FloodfillMethod ? MagickFalse : MagickTrue);
- throwImageException();
+ method_ == FloodfillMethod ? MagickFalse : MagickTrue,
+ &exceptionInfo);
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Flood-fill texture across pixels that match the color of the
target.red=GetPixelRed(constImage(),p);
target.green=GetPixelGreen(constImage(),p);
target.blue=GetPixelBlue(constImage(),p);
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
if (p)
FloodfillPaintImage ( image(), // Image *image
- DefaultChannels,
options()->drawInfo(), // const DrawInfo *draw_info
&target, // const MagickPacket target
static_cast<ssize_t>(x_), // const ssize_t x_offset
static_cast<ssize_t>(y_), // const ssize_t y_offset
- MagickFalse // const PaintMethod method
- );
+ MagickFalse, // const PaintMethod method
+ &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
- throwImageException();
}
void Magick::Image::floodFillTexture( const Magick::Geometry &point_,
const Magick::Image &texture_ )
target.red=static_cast<PixelPacket>(borderColor_).red;
target.green=static_cast<PixelPacket>(borderColor_).green;
target.blue=static_cast<PixelPacket>(borderColor_).blue;
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
FloodfillPaintImage ( image(),
- DefaultChannels,
options()->drawInfo(),
&target,
static_cast<ssize_t>(x_),
static_cast<ssize_t>(y_),
- MagickTrue);
+ MagickTrue, &exceptionInfo);
- throwImageException();
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
void Magick::Image::floodFillTexture( const Magick::Geometry &point_,
const Magick::Image &texture_,
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
MagickCore::Image* newImage =
- FxImageChannel ( image(), DefaultChannels, expression.c_str(), &exceptionInfo );
+ FxImage ( image(), expression.c_str(), &exceptionInfo );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel );
MagickCore::Image* newImage =
- FxImageChannel ( image(), channel, expression.c_str(), &exceptionInfo );
+ FxImage ( image(), expression.c_str(), &exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
// Gamma correct image
void Magick::Image::gamma ( const double gamma_ )
{
- char gamma[MaxTextExtent + 1];
- FormatLocaleString( gamma, MaxTextExtent, "%3.6f", gamma_);
-
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- GammaImage ( image(), gamma );
+ GammaImage ( image(), gamma_, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
void Magick::Image::gamma ( const double gammaRed_,
FormatLocaleString( gamma, MaxTextExtent, "%3.6f/%3.6f/%3.6f/",
gammaRed_, gammaGreen_, gammaBlue_);
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- GammaImage ( image(), gamma );
- throwImageException();
+ GammaImage ( image(), atof(gamma), &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Gaussian blur image
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
MagickCore::Image* newImage =
- GaussianBlurImageChannel( image(), channel_, width_, sigma_, &exceptionInfo );
+ GaussianBlurImage( image(), width_, sigma_, &exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
// Apply a color lookup table (Hald CLUT) to the image.
void Magick::Image::haldClut ( const Image &clutImage_ )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- (void) HaldClutImage( image(), clutImage_.constImage() );
- throwImageException();
+ (void) HaldClutImage( image(), clutImage_.constImage(), &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Implode image
const double white_point,
const double gamma )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- (void) LevelImage( image(), black_point, white_point, gamma );
- throwImageException();
+ (void) LevelImage( image(), black_point, white_point, gamma, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Magnify image by integral size
target.green=static_cast<PixelPacket>(target_).green;
target.blue=static_cast<PixelPacket>(target_).blue;
target.alpha=alpha_;
- FloodfillPaintImage ( image(), OpacityChannel, options()->drawInfo(), &target,
- x_, y_, method_ == FloodfillMethod ? MagickFalse : MagickTrue);
- throwImageException();
+ ChannelType channel_mask = SetPixelChannelMask( image(), AlphaChannel );
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
+ FloodfillPaintImage ( image(), options()->drawInfo(), &target, x_, y_,
+ method_ == FloodfillMethod ? MagickFalse : MagickTrue, &exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Filter image by replacing each pixel component with the median
FormatLocaleString( modulate, MaxTextExtent, "%3.6f,%3.6f,%3.6f",
brightness_, saturation_, hue_);
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- ModulateImage( image(), modulate );
- throwImageException();
+ ModulateImage( image(), modulate, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Motion blur image with specified blur factor
// only
void Magick::Image::negate ( const bool grayscale_ )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- NegateImage ( image(), grayscale_ == true ? MagickTrue : MagickFalse );
- throwImageException();
+ NegateImage ( image(), grayscale_ == true ? MagickTrue : MagickFalse,
+ &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Normalize image
void Magick::Image::normalize ( void )
{
modifyImage();
- NormalizeImage ( image() );
- throwImageException();
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
+ NormalizeImage ( image(), &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Oilpaint image
-void Magick::Image::oilPaint ( const double radius_ )
+void Magick::Image::oilPaint ( const double radius_, const double sigma_ )
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
MagickCore::Image* newImage =
- OilPaintImage( image(), radius_, &exceptionInfo );
+ OilPaintImage( image(), radius_, sigma_, &exceptionInfo );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
PixelInfo opaque;
PixelInfo pen;
- (void) QueryMagickColor(std::string(opaqueColor_).c_str(),&opaque,&image()->exception);
- (void) QueryMagickColor(std::string(penColor_).c_str(),&pen,&image()->exception);
- OpaquePaintImage ( image(), &opaque, &pen, MagickFalse );
- throwImageException();
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
+ (void) QueryMagickColor(std::string(opaqueColor_).c_str(),&opaque, &exceptionInfo);
+ (void) QueryMagickColor(std::string(penColor_).c_str(),&pen, &exceptionInfo);
+ OpaquePaintImage ( image(), &opaque, &pen, MagickFalse, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Ping is similar to read except only enough of the image is read to
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
- EvaluateImageChannel( image(), channel_, operator_, rvalue_, &exceptionInfo);
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
+ EvaluateImage( image(), operator_, rvalue_, &exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
}
geometry.y = y_;
MagickCore::Image *crop_image = CropImage( image(), &geometry,
&exceptionInfo );
- EvaluateImageChannel( crop_image, channel_, operator_, rvalue_,
- &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_);
+ EvaluateImage( crop_image, operator_, rvalue_, &exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
(void) CompositeImage( image(), image()->matte != MagickFalse ?
OverCompositeOp : CopyCompositeOp, crop_image, geometry.x, geometry.y );
crop_image = DestroyImageList(crop_image);
void Magick::Image::raise ( const Geometry &geometry_ ,
const bool raisedFlag_ )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
RectangleInfo raiseInfo = geometry_;
modifyImage();
- RaiseImage ( image(), &raiseInfo, raisedFlag_ == true ? MagickTrue : MagickFalse );
- throwImageException();
+ RaiseImage ( image(), &raiseInfo, raisedFlag_ == true ? MagickTrue : MagickFalse, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
modifyImage();
- (void) RandomThresholdImageChannel( image(),
- channel_,
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_);
+ (void) RandomThresholdImage( image(),
static_cast<std::string>(thresholds_).c_str(),
&exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
throwImageException();
(void) DestroyExceptionInfo( &exceptionInfo );
}
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
MagickCore::Image* newImage =
- SharpenImageChannel( image(),
- channel_,
+ SharpenImage( image(),
radius_,
sigma_,
&exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
// Contrast image
void Magick::Image::sigmoidalContrast ( const size_t sharpen_, const double contrast, const double midpoint )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- (void) SigmoidalContrastImage( image(), (MagickBooleanType) sharpen_, contrast, midpoint );
- throwImageException();
+ (void) SigmoidalContrastImage( image(), (MagickBooleanType) sharpen_, contrast, midpoint, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Solarize image (similar to effect seen when exposing a photographic
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
- MagickCore::Image* newImage = SparseColorImage ( image(), channel, method,
+
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel );
+ MagickCore::Image* newImage = SparseColorImage ( image(), method,
number_arguments, arguments, &exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
PixelInfo target;
(void) QueryMagickColor(std::string(color_).c_str(),&target,&image()->exception);
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
- TransparentPaintImage ( image(), &target, TransparentAlpha, MagickFalse );
- throwImageException();
+ TransparentPaintImage ( image(), &target, TransparentAlpha, MagickFalse,
+ &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Add matte image to image, setting pixels matching color to transparent
&image()->exception);
(void) QueryMagickColor(std::string(colorHigh_).c_str(),&targetHigh,
&image()->exception);
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
TransparentPaintImageChroma ( image(), &targetLow, &targetHigh,
- TransparentAlpha, MagickFalse );
- throwImageException();
+ TransparentAlpha, MagickFalse, &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
{
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
+ ChannelType channel_mask = SetPixelChannelMask( image(), channel_ );
MagickCore::Image* newImage =
- UnsharpMaskImageChannel( image(),
- channel_,
+ UnsharpMaskImage( image(),
radius_,
sigma_,
amount_,
threshold_,
&exceptionInfo );
+ (void) SetPixelChannelMap( image(), channel_mask );
replaceImage( newImage );
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
// Write image to file
void Magick::Image::write( const std::string &imageSpec_ )
{
+ ExceptionInfo exceptionInfo;
+ GetExceptionInfo( &exceptionInfo );
modifyImage();
fileName( imageSpec_ );
- WriteImage( imageInfo(), image() );
- throwImageException();
+ WriteImage( imageInfo(), image(), &exceptionInfo );
+ throwException( exceptionInfo );
+ (void) DestroyExceptionInfo( &exceptionInfo );
}
// Write image to in-memory BLOB
// Obtain image statistics. Statistics are normalized to the range of
// 0.0 to 1.0 and are output to the specified ImageStatistics
// structure.
-void Magick::Image::statistics ( ImageStatistics *statistics ) const
+void Magick::Image::statistics ( ImageStatistics *statistics )
{
double
maximum,
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
- (void) GetImageChannelRange(constImage(),RedChannel,&minimum,&maximum,
- &exceptionInfo);
+
+ ChannelType channel_mask = SetPixelChannelMask( image(), RedChannel);
+ (void) GetImageRange( image(),&minimum,&maximum,&exceptionInfo);
statistics->red.minimum=minimum;
- statistics->red.maximum=maximum;
- (void) GetImageChannelMean(constImage(),RedChannel,
- &statistics->red.mean,&statistics->red.standard_deviation,&exceptionInfo);
- (void) GetImageChannelKurtosis(constImage(),RedChannel,
- &statistics->red.kurtosis,&statistics->red.skewness,&exceptionInfo);
- (void) GetImageChannelRange(constImage(),GreenChannel,&minimum,&maximum,
- &exceptionInfo);
+ statistics->red.maximum=maximum;
+ (void) GetImageMean( image(),&statistics->red.mean,
+ &statistics->red.standard_deviation,&exceptionInfo);
+ (void) GetImageKurtosis( image(),&statistics->red.kurtosis,
+ &statistics->red.skewness,&exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
+
+ channel_mask = SetPixelChannelMask( image(), GreenChannel);
+ (void) GetImageRange( image(),&minimum,&maximum,&exceptionInfo);
statistics->green.minimum=minimum;
- statistics->green.maximum=maximum;
- (void) GetImageChannelMean(constImage(),GreenChannel,
- &statistics->green.mean,&statistics->green.standard_deviation,
- &exceptionInfo);
- (void) GetImageChannelKurtosis(constImage(),GreenChannel,
- &statistics->green.kurtosis,&statistics->green.skewness,&exceptionInfo);
- (void) GetImageChannelRange(constImage(),BlueChannel,&minimum,&maximum,
- &exceptionInfo);
+ statistics->green.maximum=maximum;
+ (void) GetImageMean( image(),&statistics->green.mean,
+ &statistics->green.standard_deviation,&exceptionInfo);
+ (void) GetImageKurtosis( image(),&statistics->green.kurtosis,
+ &statistics->green.skewness,&exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
+
+ channel_mask = SetPixelChannelMask( image(), GreenChannel);
+ (void) GetImageRange( image(),&minimum,&maximum,&exceptionInfo);
statistics->blue.minimum=minimum;
- statistics->blue.maximum=maximum;
- (void) GetImageChannelMean(constImage(),BlueChannel,
- &statistics->blue.mean,&statistics->blue.standard_deviation,&exceptionInfo);
- (void) GetImageChannelKurtosis(constImage(),BlueChannel,
- &statistics->blue.kurtosis,&statistics->blue.skewness,&exceptionInfo);
- (void) GetImageChannelRange(constImage(),OpacityChannel,&minimum,&maximum,
- &exceptionInfo);
+ statistics->blue.maximum=maximum;
+ (void) GetImageMean( image(),&statistics->blue.mean,
+ &statistics->blue.standard_deviation,&exceptionInfo);
+ (void) GetImageKurtosis( image(),&statistics->blue.kurtosis,
+ &statistics->blue.skewness,&exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
+
+ channel_mask = SetPixelChannelMask( image(), AlphaChannel);
+ (void) GetImageRange( image(),&minimum,&maximum,&exceptionInfo);
statistics->alpha.minimum=minimum;
statistics->alpha.maximum=maximum;
- (void) GetImageChannelMean(constImage(),OpacityChannel,
- &statistics->alpha.mean,&statistics->alpha.standard_deviation,
- &exceptionInfo);
- (void) GetImageChannelKurtosis(constImage(),OpacityChannel,
- &statistics->alpha.kurtosis,&statistics->alpha.skewness,&exceptionInfo);
+ (void) GetImageMean( image(),&statistics->alpha.mean,
+ &statistics->alpha.standard_deviation,&exceptionInfo);
+ (void) GetImageKurtosis( image(),&statistics->alpha.kurtosis,
+ &statistics->alpha.skewness,&exceptionInfo);
+ (void) SetPixelChannelMap( image(), channel_mask );
+
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
}