_imgRef->increase();
}
+Magick::Image::Image(const Image &image_,const Geometry &geometry_)
+ : _imgRef(new ImageRef)
+{
+ const RectangleInfo
+ geometry=geometry_;
+
+ OffsetInfo
+ offset;
+
+ MagickCore::Image
+ *image;
+
+ GetPPException;
+ image=CloneImage(image_.constImage(),geometry_.width(),geometry_.height(),
+ MagickTrue,exceptionInfo);
+ replaceImage(image);
+ _imgRef->options(new Options(*image_.constOptions()));
+ offset.x=0;
+ offset.y=0;
+ (void) CopyImagePixels(image,image_.constImage(),&geometry,&offset,
+ exceptionInfo);
+ ThrowImageException;
+}
+
Magick::Image::Image(const size_t width_,const size_t height_,
const std::string &map_,const StorageType type_,const void *pixels_)
: _imgRef(new ImageRef)
return(Color(constImage()->matte_color));
}
-void Magick::Image::antiAlias(const bool flag_)
-{
- modifyImage();
- options()->antiAlias(flag_);
-}
-
-bool Magick::Image::antiAlias(void) const
-{
- return(constOptions()->antiAlias());
-}
-
void Magick::Image::animationDelay(const size_t delay_)
{
modifyImage();
void Magick::Image::fillColor(const Magick::Color &fillColor_)
{
- std::string
- value;
-
modifyImage();
options()->fillColor(fillColor_);
- value=fillColor_;
- artifact("fill",value);
}
Magick::Color Magick::Image::fillColor(void) const
return(constOptions()->font());
}
+void Magick::Image::fontFamily(const std::string &family_)
+{
+ modifyImage();
+ options()->fontFamily(family_);
+}
+
+std::string Magick::Image::fontFamily(void) const
+{
+ return(constOptions()->fontFamily());
+}
+
void Magick::Image::fontPointsize(const double pointSize_)
{
modifyImage();
return(constOptions()->fontPointsize());
}
+void Magick::Image::fontStyle(const StyleType pointSize_)
+{
+ modifyImage();
+ options()->fontStyle(pointSize_);
+}
+
+Magick::StyleType Magick::Image::fontStyle(void) const
+{
+ return(constOptions()->fontStyle());
+}
+
+void Magick::Image::fontWeight(const size_t weight_)
+{
+ modifyImage();
+ options()->fontWeight(weight_);
+}
+
+size_t Magick::Image::fontWeight(void) const
+{
+ return(constOptions()->fontWeight());
+}
+
std::string Magick::Image::format(void) const
{
const MagickInfo
GetPPException;
if (mask_.isValid())
- SetImageMask(image(),mask_.constImage(),exceptionInfo);
+ SetImageMask(image(),ReadPixelMask,mask_.constImage(),exceptionInfo);
else
- SetImageMask(image(),(MagickCore::Image *) NULL,exceptionInfo);
+ SetImageMask(image(),ReadPixelMask,(MagickCore::Image *) NULL,
+ exceptionInfo);
ThrowImageException;
}
return(constOptions()->subRange());
}
+void Magick::Image::textAntiAlias(const bool flag_)
+{
+ modifyImage();
+ options()->textAntiAlias(flag_);
+}
+
+bool Magick::Image::textAntiAlias(void) const
+{
+ return(constOptions()->textAntiAlias());
+}
+
void Magick::Image::textDirection(DirectionType direction_)
{
modifyImage();
return(constOptions()->textKerning());
}
+void Magick::Image::textUnderColor(const Color &underColor_)
+{
+ modifyImage();
+ options()->textUnderColor(underColor_);
+}
+
+Magick::Color Magick::Image::textUnderColor(void) const
+{
+ return(constOptions()->textUnderColor());
+}
+
size_t Magick::Image::totalColors(void) const
{
size_t
{
if (constOptions()->type() != UndefinedType)
return(constOptions()->type());
- else if (constImage()->type != UndefinedType)
- return(constImage()->type);
- else
- return(determineType());
+ return(GetImageType(constImage()));
}
void Magick::Image::type(const Magick::ImageType type_)
{
modifyImage();
GetPPException;
- (void) SyncImageSettings(imageInfo(),image(),exceptionInfo);
(void) AutoLevelImage(image(),exceptionInfo);
ThrowImageException;
}
modifyImage();
GetPPException;
GetAndSetPPChannelMask(channel_);
- (void) SyncImageSettings(imageInfo(),image(),exceptionInfo);
(void) AutoLevelImage(image(),exceptionInfo);
RestorePPChannelMask;
ThrowImageException;
return;
GetPPException;
- (void) SyncImageSettings(imageInfo(),image(),exceptionInfo);
newImage=AutoOrientImage(constImage(),image()->orientation,exceptionInfo);
replaceImage(newImage);
ThrowImageException;
ThrowImageException;
}
+void Magick::Image::cdl(const std::string &cdl_)
+{
+ modifyImage();
+ GetPPException;
+ (void) ColorDecisionListImage(image(),cdl_.c_str(),exceptionInfo);
+ ThrowImageException;
+}
+
void Magick::Image::channel(const ChannelType channel_)
{
MagickCore::Image
*y_=constImage()->chromaticity.white_point.y;
}
-void Magick::Image::cdl(const std::string &cdl_)
-{
- modifyImage();
- GetPPException;
- (void) ColorDecisionListImage(image(),cdl_.c_str(),exceptionInfo);
- ThrowImageException;
-}
-
void Magick::Image::clamp(void)
{
modifyImage();
ThrowImageException;
}
-bool Magick::Image::compare(const Image &reference_)
+bool Magick::Image::compare(const Image &reference_) const
{
bool
status;
ref=reference_;
GetPPException;
- modifyImage();
- status=static_cast<bool>(IsImagesEqual(image(),ref.constImage(),
+ status=static_cast<bool>(IsImagesEqual(constImage(),ref.constImage(),
exceptionInfo));
ThrowImageException;
return(status);
ThrowImageException;
}
+void Magick::Image::copyPixels(const Image &source_,const Geometry &geometry_,
+ const Offset &offset_)
+{
+ const OffsetInfo
+ offset=offset_;
+
+ const RectangleInfo
+ geometry=geometry_;
+
+ GetPPException;
+ (void) CopyImagePixels(image(),source_.constImage(),&geometry,&offset,
+ exceptionInfo);
+ ThrowImageException;
+}
+
void Magick::Image::crop(const Geometry &geometry_)
{
MagickCore::Image
ThrowImageException;
}
-Magick::ImageType Magick::Image::determineType(void) const
-{
- ImageType
- image_type;
-
- GetPPException;
- image_type=GetImageType(constImage(),exceptionInfo);
- ThrowImageException;
- return(image_type);
-}
-
void Magick::Image::display(void)
{
GetPPException;
ThrowImageException;
}
+void Magick::Image::evaluate(const ChannelType channel_,
+ const MagickEvaluateOperator operator_,double rvalue_)
+{
+ GetPPException;
+ GetAndSetPPChannelMask(channel_);
+ EvaluateImage(image(),operator_,rvalue_,exceptionInfo);
+ RestorePPChannelMask;
+ ThrowImageException;
+}
+
+void Magick::Image::evaluate(const ChannelType channel_,
+ const MagickFunction function_,const size_t number_parameters_,
+ const double *parameters_)
+{
+ GetPPException;
+ GetAndSetPPChannelMask(channel_);
+ FunctionImage(image(),function_,number_parameters_,parameters_,
+ exceptionInfo);
+ RestorePPChannelMask;
+ ThrowImageException;
+}
+
+void Magick::Image::evaluate(const ChannelType channel_,const ssize_t x_,
+ const ssize_t y_,const size_t columns_,const size_t rows_,
+ const MagickEvaluateOperator operator_,const double rvalue_)
+{
+ RectangleInfo
+ geometry;
+
+ MagickCore::Image
+ *cropImage;
+
+ geometry.width = columns_;
+ geometry.height = rows_;
+ geometry.x = x_;
+ geometry.y = y_;
+
+ GetPPException;
+ cropImage=CropImage(image(),&geometry,exceptionInfo);
+ GetAndSetPPChannelMask(channel_);
+ EvaluateImage(cropImage,operator_,rvalue_,exceptionInfo);
+ RestorePPChannelMask;
+ (void) CompositeImage(image(),cropImage,image()->alpha_trait ==
+ BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,MagickFalse,
+ geometry.x,geometry.y,exceptionInfo );
+ cropImage=DestroyImageList(cropImage);
+ ThrowImageException;
+}
+
void Magick::Image::extent(const Geometry &geometry_ )
{
MagickCore::Image
ThrowImageException;
}
+Magick::ImageType Magick::Image::identifyType(void) const
+{
+ ImageType
+ image_type;
+
+ GetPPException;
+ image_type=IdentifyImageType(constImage(),exceptionInfo);
+ ThrowImageException;
+ return(image_type);
+}
+
void Magick::Image::implode(const double factor_)
{
MagickCore::Image
ThrowImageException;
}
+void Magick::Image::levelize(const double blackPoint_,const double whitePoint_,
+ const double gamma_)
+{
+ modifyImage();
+ GetPPException;
+ (void) LevelizeImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
+ ThrowImageException;
+}
+
+void Magick::Image::levelizeChannel(const ChannelType channel_,
+ const double blackPoint_,const double whitePoint_,const double gamma_)
+{
+ modifyImage();
+ GetPPException;
+ GetAndSetPPChannelMask(channel_);
+ (void) LevelizeImage(image(),blackPoint_,whitePoint_,gamma_,exceptionInfo);
+ RestorePPChannelMask;
+ ThrowImageException;
+}
+
void Magick::Image::linearStretch(const double blackPoint_,
const double whitePoint_)
{
ThrowImageException;
}
+void Magick::Image::localContrast(const double radius_,const double strength_)
+{
+ MagickCore::Image
+ *newImage;
+
+ GetPPException;
+ newImage=LocalContrastImage(constImage(),radius_,strength_,exceptionInfo);
+ replaceImage(newImage);
+ ThrowImageException;
+}
+
void Magick::Image::magnify(void)
{
MagickCore::Image
option=CommandOptionToMnemonic(MagickKernelOptions,kernel_);
if (option == (const char *)NULL)
- throwExceptionExplicit(MagickCore::OptionError,
- "Unable to determine kernel type.");
-
+ {
+ throwExceptionExplicit(MagickCore::OptionError,
+ "Unable to determine kernel type.");
+ return;
+ }
kernel=std::string(option);
if (!arguments_.empty())
kernel+=":"+arguments_;
ThrowImageException;
}
-void Magick::Image::quantumOperator(const ChannelType channel_,
- const MagickEvaluateOperator operator_,double rvalue_)
-{
- GetPPException;
- GetAndSetPPChannelMask(channel_);
- EvaluateImage(image(),operator_,rvalue_,exceptionInfo);
- RestorePPChannelMask;
- ThrowImageException;
-}
-
-void Magick::Image::quantumOperator(const ssize_t x_,const ssize_t y_,
- const size_t columns_,const size_t rows_,const ChannelType channel_,
- const MagickEvaluateOperator operator_,const double rvalue_)
-{
- RectangleInfo
- geometry;
-
- MagickCore::Image
- *cropImage;
-
- geometry.width = columns_;
- geometry.height = rows_;
- geometry.x = x_;
- geometry.y = y_;
-
- GetPPException;
- cropImage=CropImage(image(),&geometry,exceptionInfo);
- GetAndSetPPChannelMask(channel_);
- EvaluateImage(cropImage,operator_,rvalue_,exceptionInfo);
- RestorePPChannelMask;
- (void) CompositeImage(image(),cropImage,image()->alpha_trait ==
- BlendPixelTrait ? OverCompositeOp : CopyCompositeOp,MagickFalse,
- geometry.x,geometry.y,exceptionInfo );
- cropImage=DestroyImageList(cropImage);
- ThrowImageException;
-}
-
void Magick::Image::raise(const Geometry &geometry_,const bool raisedFlag_)
{
RectangleInfo
ThrowImageException;
}
+bool Magick::Image::setColorMetric(const Image &reference_)
+{
+ bool
+ status;
+
+ Image
+ ref=reference_;
+
+ GetPPException;
+ modifyImage();
+ status=static_cast<bool>(SetImageColorMetric(image(),ref.constImage(),
+ exceptionInfo));
+ ThrowImageException;
+ return(status);
+}
+
Magick::Quantum *Magick::Image::setPixels(const ssize_t x_,const ssize_t y_,
const size_t columns_,const size_t rows_)
{
std::string Magick::Image::signature(const bool force_) const
{
- return(_imgRef->signature());
+ return(_imgRef->signature(force_));
}
void Magick::Image::sketch(const double radius_,const double sigma_,
*newImage;
GetPPException;
- newImage=SpreadImage(constImage(),amount_,image()->interpolate,
- exceptionInfo);
+ newImage=SpreadImage(constImage(),image()->interpolate,amount_,exceptionInfo);
replaceImage(newImage);
ThrowImageException;
}
options()->transformScale(sx_,sy_);
}
-void Magick::Image::transparent(const Color &color_)
+void Magick::Image::transparent(const Color &color_,const bool inverse_)
{
PixelInfo
target;
(void) QueryColorCompliance(color.c_str(),AllCompliance,&target,
exceptionInfo);
modifyImage();
- TransparentPaintImage(image(),&target,TransparentAlpha,MagickFalse,
- exceptionInfo);
+ TransparentPaintImage(image(),&target,TransparentAlpha,
+ inverse_ == true ? MagickTrue : MagickFalse,exceptionInfo);
ThrowImageException;
}