summaryrefslogtreecommitdiff
path: root/dmagick/Array.d
diff options
context:
space:
mode:
authorMike Wey2011-09-17 17:46:28 +0200
committerMike Wey2011-09-17 17:46:28 +0200
commit9d2ddc506ef3ad96a545539ef56cb3a3c9033cc4 (patch)
tree12c22727e849b1e6a5c88369f15af1fd2e0598e7 /dmagick/Array.d
parent3535eb0887b805ce8e4538b3e91c290fbb596006 (diff)
Add animationDelay, animationIterrations, avarage, clone and display.
Diffstat (limited to 'dmagick/Array.d')
-rw-r--r--dmagick/Array.d68
1 files changed, 68 insertions, 0 deletions
diff --git a/dmagick/Array.d b/dmagick/Array.d
index b80902b..cb538d6 100644
--- a/dmagick/Array.d
+++ b/dmagick/Array.d
@@ -8,6 +8,8 @@
module dmagick.Array;
+import core.time;
+
import dmagick.Exception;
import dmagick.Geometry;
import dmagick.Image;
@@ -15,7 +17,73 @@ import dmagick.Options;
import dmagick.c.blob;
import dmagick.c.constitute;
+import dmagick.c.display;
import dmagick.c.image : MagickCoreImage = Image;
+import dmagick.c.statistic;
+
+/**
+ * Set the animationDelay for all images in the array.
+ */
+void animationDelay(Image[] images, Duration delay)
+{
+ size_t ticks = delay.total!"seconds"() * images[0].imageRef.ticks_per_second;
+
+ foreach ( image; images )
+ {
+ image.imageRef.delay = ticks;
+ }
+}
+
+/**
+ * Number of iterations to loop an animation.
+ */
+void animationIterations(Image[] images, size_t iterations)
+{
+ images[0].animationIterations = iterations;
+}
+
+/**
+ * Averages all the images together. Each image in the image must have
+ * the same width and height.
+ */
+Image average(Image[] images)
+{
+ linkImages(images);
+ scope(exit) unlinkImages(images);
+
+ MagickCoreImage* image =
+ EvaluateImages(images[0].imageRef, MagickEvaluateOperator.MeanEvaluateOperator, DMagickExceptionInfo());
+
+ return new Image(image);
+}
+
+/**
+ * Clone every image in the array.
+ */
+Image[] clone(const(Image)[] images)
+{
+ Image[] newImages = new Image[images.length];
+
+ foreach ( i, image; images )
+ {
+ newImages[i] = image.clone();
+ }
+
+ return newImages;
+}
+
+/**
+ * Repeatedly displays an image sequence to a X window screen.
+ */
+void display(Image[] images)
+{
+ linkImages(images);
+ scope(exit) unlinkImages(images);
+
+ DisplayImages(images[0].options.imageInfo, images[0].imageRef);
+
+ DMagickException.throwException(&(images[0].imageRef.exception));
+}
/**
* Read a multi frame Image by reading from the file or