ThrowPPException;
}
+void Magick::Image::morphology(const MorphologyMethod method_,
+ const std::string kernel_,const ssize_t iterations_)
+{
+ KernelInfo
+ *kernel;
+
+ MagickCore::Image
+ *newImage;
+
+ kernel=AcquireKernelInfo(kernel_.c_str());
+ if (kernel == (KernelInfo *)NULL)
+ throwExceptionExplicit(OptionError,"Unable to parse kernel.");
+
+ GetPPException;
+ newImage=MorphologyImage(constImage(),method_,iterations_,kernel,
+ &exceptionInfo);
+ replaceImage(newImage);
+ kernel=DestroyKernelInfo(kernel);
+ ThrowPPException;
+}
+
+void Magick::Image::morphology(const MorphologyMethod method_,
+ const KernelInfoType kernel_,const std::string arguments_,
+ const ssize_t iterations_)
+{
+ const char
+ *option;
+
+ std::string
+ kernel;
+
+ option=CommandOptionToMnemonic(MagickKernelOptions,kernel_);
+ if (option == (const char *)NULL)
+ throwExceptionExplicit(OptionError,"Unable to determine kernel type.");
+
+ kernel=std::string(option);
+ if (!arguments_.empty())
+ kernel+=":"+arguments_;
+
+ morphology(method_,kernel,iterations_);
+}
+
+void Magick::Image::morphologyChannel(const ChannelType channel_,
+ const MorphologyMethod method_,const std::string kernel_,
+ const ssize_t iterations_)
+{
+ KernelInfo
+ *kernel;
+
+ MagickCore::Image
+ *newImage;
+
+ kernel=AcquireKernelInfo(kernel_.c_str());
+ if (kernel == (KernelInfo *)NULL)
+ throwExceptionExplicit(OptionError,"Unable to parse kernel.");
+
+ GetPPException;
+ SetPPChannelMask(channel_);
+ newImage=MorphologyImage(constImage(),method_,iterations_,kernel,
+ &exceptionInfo);
+ RestorePPChannelMask;
+ replaceImage(newImage);
+ kernel=DestroyKernelInfo(kernel);
+ ThrowPPException;
+}
+
+void Magick::Image::morphologyChannel(const ChannelType channel_,
+ const MorphologyMethod method_,const KernelInfoType kernel_,
+ const std::string arguments_,const ssize_t iterations_)
+{
+ const char
+ *option;
+
+ std::string
+ kernel;
+
+ option=CommandOptionToMnemonic(MagickKernelOptions,kernel_);
+ if (option == (const char *)NULL)
+ throwExceptionExplicit(OptionError,"Unable to determine kernel type.");
+
+ kernel=std::string(option);
+ if (!arguments_.empty())
+ kernel+=":"+arguments_;
+
+ morphologyChannel(channel_,method_,kernel,iterations_);
+}
+
void Magick::Image::motionBlur(const double radius_,const double sigma_,
const double angle_)
{
void modulate(const double brightness_,const double saturation_,
const double hue_);
+ // Applies a kernel to the image according to the given mophology method.
+ void morphology(const MorphologyMethod method_,const std::string kernel_,
+ const ssize_t iterations_=1);
+ void morphology(const MorphologyMethod method_,
+ const KernelInfoType kernel_,const std::string arguments_,
+ const ssize_t iterations_=1);
+ void morphologyChannel(const ChannelType channel_,
+ const MorphologyMethod method_,const std::string kernel_,
+ const ssize_t iterations_=1);
+ void morphologyChannel(const ChannelType channel_,
+ const MorphologyMethod method_,const KernelInfoType kernel_,
+ const std::string arguments_,const ssize_t iterations_=1);
+
// Motion blur image with specified blur factor
// The radius_ parameter specifies the radius of the Gaussian, in
// pixels, not counting the center pixel. The sigma_ parameter
using MagickCore::YPbPrColorspace;
using MagickCore::YUVColorspace;
+ // Command options
+ using MagickCore::CommandOption;
+ using MagickCore::MagickKernelOptions;
+
// Compliance types
+ using MagickCore::ComplianceType;
using MagickCore::AllCompliance;
// Composition operations
using MagickCore::JPEGInterlace;
using MagickCore::PNGInterlace;
- // Pixel interpolation methods
- using MagickCore::PixelInterpolateMethod;
- using MagickCore::UndefinedInterpolatePixel;
- using MagickCore::AverageInterpolatePixel;
- using MagickCore::Average9InterpolatePixel;
- using MagickCore::Average16InterpolatePixel;
- using MagickCore::BackgroundInterpolatePixel;
- using MagickCore::BilinearInterpolatePixel;
- using MagickCore::BlendInterpolatePixel;
- using MagickCore::CatromInterpolatePixel;
- using MagickCore::IntegerInterpolatePixel;
- using MagickCore::MeshInterpolatePixel;
- using MagickCore::NearestInterpolatePixel;
- using MagickCore::SplineInterpolatePixel;
+ // Built-in kernels
+ using MagickCore::KernelInfoType;
+ using MagickCore::UndefinedKernel;
+ using MagickCore::UnityKernel;
+ using MagickCore::GaussianKernel;
+ using MagickCore::DoGKernel;
+ using MagickCore::LoGKernel;
+ using MagickCore::BlurKernel;
+ using MagickCore::CometKernel;
+ using MagickCore::BinomialKernel;
+ using MagickCore::LaplacianKernel;
+ using MagickCore::SobelKernel;
+ using MagickCore::FreiChenKernel;
+ using MagickCore::RobertsKernel;
+ using MagickCore::PrewittKernel;
+ using MagickCore::CompassKernel;
+ using MagickCore::KirschKernel;
+ using MagickCore::DiamondKernel;
+ using MagickCore::SquareKernel;
+ using MagickCore::RectangleKernel;
+ using MagickCore::OctagonKernel;
+ using MagickCore::DiskKernel;
+ using MagickCore::PlusKernel;
+ using MagickCore::CrossKernel;
+ using MagickCore::RingKernel;
+ using MagickCore::PeaksKernel;
+ using MagickCore::EdgesKernel;
+ using MagickCore::CornersKernel;
+ using MagickCore::DiagonalsKernel;
+ using MagickCore::LineEndsKernel;
+ using MagickCore::LineJunctionsKernel;
+ using MagickCore::RidgesKernel;
+ using MagickCore::ConvexHullKernel;
+ using MagickCore::ThinSEKernel;
+ using MagickCore::SkeletonKernel;
+ using MagickCore::ChebyshevKernel;
+ using MagickCore::ManhattanKernel;
+ using MagickCore::OctagonalKernel;
+ using MagickCore::EuclideanKernel;
+ using MagickCore::UserDefinedKernel;
// Layer method
using MagickCore::LayerMethod;
using MagickCore::PerceptualHashErrorMetric;
using MagickCore::RootMeanSquaredErrorMetric;
+ // Morphology methods
+ using MagickCore::MorphologyMethod;
+ using MagickCore::UndefinedMorphology;
+ using MagickCore::ConvolveMorphology;
+ using MagickCore::CorrelateMorphology;
+ using MagickCore::ErodeMorphology;
+ using MagickCore::DilateMorphology;
+ using MagickCore::ErodeIntensityMorphology;
+ using MagickCore::DilateIntensityMorphology;
+ using MagickCore::IterativeDistanceMorphology;
+ using MagickCore::OpenMorphology;
+ using MagickCore::CloseMorphology;
+ using MagickCore::OpenIntensityMorphology;
+ using MagickCore::CloseIntensityMorphology;
+ using MagickCore::SmoothMorphology;
+ using MagickCore::EdgeInMorphology;
+ using MagickCore::EdgeOutMorphology;
+ using MagickCore::EdgeMorphology;
+ using MagickCore::TopHatMorphology;
+ using MagickCore::BottomHatMorphology;
+ using MagickCore::HitAndMissMorphology;
+ using MagickCore::ThinningMorphology;
+ using MagickCore::ThickenMorphology;
+ using MagickCore::DistanceMorphology;
+ using MagickCore::VoronoiMorphology;
+
// Noise types
using MagickCore::NoiseType;
using MagickCore::UndefinedNoise;
using MagickCore::SplineInterpolatePixel;
// Pixel traits
+ using MagickCore::PixelTrait;
using MagickCore::UndefinedPixelTrait;
using MagickCore::BlendPixelTrait;
using MagickCore::ColorDecisionListImage;
using MagickCore::ColorizeImage;
using MagickCore::ColorMatrixImage;
+ using MagickCore::CommandOptionToMnemonic;
using MagickCore::CompareImages;
using MagickCore::CompositeImage;
using MagickCore::ConfigureError;
using MagickCore::MonitorFatalError;
using MagickCore::MonitorWarning;
using MagickCore::MontageInfo;
+ using MagickCore::MorphologyImage;
using MagickCore::MotionBlurImage;
using MagickCore::NegateImage;
using MagickCore::NewMagickWandFromImage;