From: Dirk Lemstra Date: Sat, 2 Dec 2017 18:15:25 +0000 (+0100) Subject: Removed `attenuate` property and added extra argument to addNoise to fix #889. X-Git-Tag: 7.0.7-14~12 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a52e9472029b48368e592c92f041901de2d18cae;p=imagemagick Removed `attenuate` property and added extra argument to addNoise to fix #889. --- diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index 15d98f2d9..b7fc11acc 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -372,16 +372,6 @@ size_t Magick::Image::animationIterations(void) const return(constImage()->iterations); } -void Magick::Image::attenuate(const double attenuate_) -{ - char - value[MagickPathExtent]; - - modifyImage(); - FormatLocaleString(value,MagickPathExtent,"%.20g",attenuate_); - (void) SetImageArtifact(image(),"attenuate",value); -} - void Magick::Image::backgroundColor(const Color &backgroundColor_) { modifyImage(); @@ -1790,26 +1780,26 @@ void Magick::Image::adaptiveThreshold(const size_t width_,const size_t height_, ThrowImageException; } -void Magick::Image::addNoise(const NoiseType noiseType_) +void Magick::Image::addNoise(const NoiseType noiseType_,const double attenuate_) { MagickCore::Image *newImage; GetPPException; - newImage=AddNoiseImage(constImage(),noiseType_,1.0,exceptionInfo); + newImage=AddNoiseImage(constImage(),noiseType_,attenuate_,exceptionInfo); replaceImage(newImage); ThrowImageException; } void Magick::Image::addNoiseChannel(const ChannelType channel_, - const NoiseType noiseType_) + const NoiseType noiseType_,const double attenuate_) { MagickCore::Image *newImage; GetPPException; GetAndSetPPChannelMask(channel_); - newImage=AddNoiseImage(constImage(),noiseType_,1.0,exceptionInfo); + newImage=AddNoiseImage(constImage(),noiseType_,attenuate_,exceptionInfo); RestorePPChannelMask; replaceImage(newImage); ThrowImageException; diff --git a/Magick++/lib/Magick++/Image.h b/Magick++/lib/Magick++/Image.h index 9b675b4fa..e16c1755b 100644 --- a/Magick++/lib/Magick++/Image.h +++ b/Magick++/lib/Magick++/Image.h @@ -114,9 +114,6 @@ namespace Magick void animationDelay(const size_t delay_); size_t animationDelay(void) const; - // Lessen (or intensify) when adding noise to an image. - void attenuate(const double attenuate_); - // Number of iterations to loop an animation (e.g. Netscape loop // extension) for. void animationIterations(const size_t iterations_); @@ -568,9 +565,9 @@ namespace Magick const double bias_=0.0); // Add noise to image with specified noise type - void addNoise(const NoiseType noiseType_); + void addNoise(const NoiseType noiseType_,const double attenuate_=1.0); void addNoiseChannel(const ChannelType channel_, - const NoiseType noiseType_); + const NoiseType noiseType_,const double attenuate_=1.0); // Transform image by specified affine (or free transform) matrix. void affineTransform(const DrawableAffine &affine); diff --git a/Magick++/lib/Magick++/STL.h b/Magick++/lib/Magick++/STL.h index 0506cfa05..69ad5794b 100644 --- a/Magick++/lib/Magick++/STL.h +++ b/Magick++/lib/Magick++/STL.h @@ -1,7 +1,7 @@ // This may look like C code, but it is really -*- C++ -*- // // Copyright Bob Friesenhahn, 1999, 2000, 2001, 2002, 2003 -// Copyright Dirk Lemstra 2013-2016 +// Copyright Dirk Lemstra 2013-2017 // // Definition and implementation of template functions for using // Magick::Image with STL containers. @@ -79,12 +79,13 @@ namespace Magick class MagickPPExport addNoiseImage { public: - addNoiseImage ( NoiseType noiseType_ ); + addNoiseImage(const NoiseType noiseType_,const double attenuate_); - void operator()( Image &image_ ) const; + void operator()(Image &image_) const; private: NoiseType _noiseType; + double _attenuate; }; // Transform image by specified affine (or free transform) matrix. diff --git a/Magick++/lib/STL.cpp b/Magick++/lib/STL.cpp index 827f1bee4..b5b641fd9 100644 --- a/Magick++/lib/STL.cpp +++ b/Magick++/lib/STL.cpp @@ -1,7 +1,7 @@ // This may look like C code, but it is really -*- C++ -*- // // Copyright Bob Friesenhahn, 1999, 2002 -// Copyright Dirk Lemstra 2013-2016 +// Copyright Dirk Lemstra 2013-2017 // // Implementation of STL classes and functions // @@ -40,13 +40,16 @@ void Magick::adaptiveThresholdImage::operator()( Magick::Image &image_ ) const } // Add noise to image with specified noise type -Magick::addNoiseImage::addNoiseImage( Magick::NoiseType noiseType_ ) - : _noiseType( noiseType_ ) +Magick::addNoiseImage::addNoiseImage(const Magick::NoiseType noiseType_, + const double attenuate_) + : _noiseType(noiseType_), + _attenuate(attenuate_) { } -void Magick::addNoiseImage::operator()( Magick::Image &image_ ) const + +void Magick::addNoiseImage::operator()(Magick::Image &image_) const { - image_.addNoise( _noiseType ); + image_.addNoise(_noiseType,_attenuate); } // Transform image by specified affine (or free transform) matrix.