From 96f31224ca2b171d11b83c59dcda962afbca8b65 Mon Sep 17 00:00:00 2001 From: Mike Wey Date: Wed, 18 May 2011 00:04:38 +0200 Subject: addNoise and affineTransform --- dmagick/Image.d | 36 ++++++++++++++++++++++++++++++++---- dmagick/c/MagickCore.d | 2 +- dmagick/c/shear.d | 13 +++++++++++++ dmagick/c/sheer.d | 13 ------------- 4 files changed, 46 insertions(+), 18 deletions(-) create mode 100644 dmagick/c/shear.d delete mode 100644 dmagick/c/sheer.d (limited to 'dmagick') diff --git a/dmagick/Image.d b/dmagick/Image.d index bcb827e..c357397 100644 --- a/dmagick/Image.d +++ b/dmagick/Image.d @@ -31,6 +31,7 @@ import dmagick.c.compress; import dmagick.c.draw; import dmagick.c.effect; import dmagick.c.enhance; +import dmagick.c.fx; import dmagick.c.geometry; import dmagick.c.histogram; import dmagick.c.image; @@ -45,6 +46,7 @@ import dmagick.c.quantum; import dmagick.c.resample; import dmagick.c.resize; import dmagick.c.resource; +import dmagick.c.shear; import dmagick.c.transform; import dmagick.c.threshold; @@ -253,6 +255,34 @@ class Image imageRef = ImageRef(image); } + /** + * Adds random noise to the specified channel or channels in the image. + * The amount of time addNoise requires depends on the NoiseType argument. + * + * Params: + * type = A NoiseType value. + * channel = 0 or more ChannelType arguments. If no channels are + * specified, adds noise to all the channels + */ + void addNoise(NoiseType type, ChannelType channel = ChannelType.DefaultChannels) + { + MagickCoreImage* image = + AddNoiseImageChannel(imageRef, channel, type, DMagickExcepionInfo()); + + imageRef = ImageRef(image); + } + + /** + * Transforms the image as specified by the affine matrix. + */ + void affineTransform(AffineMatrix affine) + { + MagickCoreImage* image = + AffineTransformImage(imageRef, &affine, DMagickExcepionInfo()); + + imageRef = ImageRef(image); + } + /** * Extracts the pixel data from the specified rectangle. * @@ -339,7 +369,7 @@ class Image DrawInfo* drawInfo = options.drawInfo; copyString(drawInfo.text, text); - GetTypeMetrics(imageRef, drawInfo, &metric); + GetMultilineTypeMetrics(imageRef, drawInfo, &metric); copyString(drawInfo.text, null); return metric; @@ -533,12 +563,10 @@ class Image //Use the D GC to accolate the blob. GetMagickMemoryMethods(&oldMalloc, &oldRealloc, &oldFree); SetMagickMemoryMethods(&GC.malloc, &GC.realloc, &GC.free); + scope(exit) SetMagickMemoryMethods(oldMalloc, oldRealloc, oldFree); void* blob = ImageToBlob(options.imageInfo, imageRef, &length, DMagickExcepionInfo()); - //Set the memory methods back to the originals. - SetMagickMemoryMethods(oldMalloc, oldRealloc, oldFree); - return blob[0 .. length]; } diff --git a/dmagick/c/MagickCore.d b/dmagick/c/MagickCore.d index b48bcc6..2250fa0 100644 --- a/dmagick/c/MagickCore.d +++ b/dmagick/c/MagickCore.d @@ -70,7 +70,7 @@ public import dmagick.c.resize; public import dmagick.c.resource; public import dmagick.c.segment; public import dmagick.c.semaphore; -public import dmagick.c.sheer; +public import dmagick.c.shear; public import dmagick.c.signature; public import dmagick.c.splayTree; public import dmagick.c.statistic; diff --git a/dmagick/c/shear.d b/dmagick/c/shear.d new file mode 100644 index 0000000..1e1dd03 --- /dev/null +++ b/dmagick/c/shear.d @@ -0,0 +1,13 @@ +module dmagick.c.shear; + +import dmagick.c.exception; +import dmagick.c.geometry; +import dmagick.c.image; + +extern(C) +{ + Image* AffineTransformImage(const(Image)*, const(AffineMatrix)*, ExceptionInfo*); + Image* DeskewImage(const(Image)*, const double, ExceptionInfo*); + Image* RotateImage(const(Image)*, const double, ExceptionInfo*); + Image* ShearImage(const(Image)*, const double, const double, ExceptionInfo*); +} diff --git a/dmagick/c/sheer.d b/dmagick/c/sheer.d deleted file mode 100644 index fd53fb1..0000000 --- a/dmagick/c/sheer.d +++ /dev/null @@ -1,13 +0,0 @@ -module dmagick.c.sheer; - -import dmagick.c.exception; -import dmagick.c.geometry; -import dmagick.c.image; - -extern(C) -{ - Image* AffineTransformImage(const(Image)*, const(AffineMatrix)*, ExceptionInfo*); - Image* DeskewImage(const(Image)*, const double, ExceptionInfo*); - Image* RotateImage(const(Image)*, const double, ExceptionInfo*); - Image* ShearImage(const(Image)*, const double, const double, ExceptionInfo*); -} -- cgit v1.2.3