]> granicus.if.org Git - imagemagick/commitdiff
Removed `attenuate` property and added extra argument to addNoise to fix #889.
authorDirk Lemstra <dirk@git.imagemagick.org>
Sat, 2 Dec 2017 18:15:25 +0000 (19:15 +0100)
committerDirk Lemstra <dirk@git.imagemagick.org>
Sat, 2 Dec 2017 18:15:25 +0000 (19:15 +0100)
Magick++/lib/Image.cpp
Magick++/lib/Magick++/Image.h
Magick++/lib/Magick++/STL.h
Magick++/lib/STL.cpp

index 15d98f2d95a9eaabd8fed8f283852854222a4ed7..b7fc11acca6d961b866bfbce87fcfba7e40076ff 100644 (file)
@@ -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;
index 9b675b4faba714fdf12c1e7ef8068ba39b39c90b..e16c1755b663335a1e389ce5d6a238372c68d325 100644 (file)
@@ -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);
index 0506cfa056f487e1ea7087fe51f0b40ef905b753..69ad5794bf450d3060c637eac5cdfbe939fa113b 100644 (file)
@@ -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.
index 827f1bee4662a9fa849f57acb3bd540f8cfec5ed..b5b641fd9c8a9bd52f72a708ad5cefc5fcff95e2 100644 (file)
@@ -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.