summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Wey2011-05-18 00:04:38 +0200
committerMike Wey2011-05-18 00:04:38 +0200
commit96f31224ca2b171d11b83c59dcda962afbca8b65 (patch)
tree752d4dea58214c77d02228799e29d474a5e13aa9
parent60f11f1fdd1e428f3e2203c2723cf7c7a282e561 (diff)
addNoise and affineTransform
-rw-r--r--dmagick/Image.d36
-rw-r--r--dmagick/c/MagickCore.d2
-rw-r--r--dmagick/c/shear.d (renamed from dmagick/c/sheer.d)2
3 files changed, 34 insertions, 6 deletions
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;
@@ -254,6 +256,34 @@ class 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.
*
* Params:
@@ -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/sheer.d b/dmagick/c/shear.d
index fd53fb1..1e1dd03 100644
--- a/dmagick/c/sheer.d
+++ b/dmagick/c/shear.d
@@ -1,4 +1,4 @@
-module dmagick.c.sheer;
+module dmagick.c.shear;
import dmagick.c.exception;
import dmagick.c.geometry;