summaryrefslogtreecommitdiff
path: root/dmagick/Image.d
diff options
context:
space:
mode:
Diffstat (limited to 'dmagick/Image.d')
-rw-r--r--dmagick/Image.d75
1 files changed, 75 insertions, 0 deletions
diff --git a/dmagick/Image.d b/dmagick/Image.d
index 86b969b..d644699 100644
--- a/dmagick/Image.d
+++ b/dmagick/Image.d
@@ -6,6 +6,8 @@
module dmagick.Image;
+import std.conv;
+import std.math;
import std.string;
import core.sys.posix.sys.types;
@@ -20,6 +22,8 @@ import dmagick.c.blob;
import dmagick.c.constitute;
import dmagick.c.colormap;
import dmagick.c.colorspace;
+import dmagick.c.composite;
+import dmagick.c.compress;
import dmagick.c.effect;
import dmagick.c.exception;
import dmagick.c.geometry;
@@ -27,6 +31,7 @@ import dmagick.c.image;
import dmagick.c.magickType;
import dmagick.c.memory;
import dmagick.c.pixel;
+import dmagick.c.quantum;
import dmagick.c.resize;
import dmagick.c.resource;
@@ -551,6 +556,8 @@ class Image
void colorspace(ColorspaceType type)
{
TransformImageColorspace(imageRef, type);
+
+ options.colorspace = type;
}
ColorspaceType colorspace() const
{
@@ -562,6 +569,74 @@ class Image
return imageRef.columns;
}
+ void compose(CompositeOperator op)
+ {
+ imageRef.compose = op;
+ }
+ CompositeOperator compose() const
+ {
+ return imageRef.compose;
+ }
+
+ void compression(CompressionType type)
+ {
+ imageRef.compression = type;
+ options.compression = type;
+ }
+ CompressionType compression() const
+ {
+ return imageRef.compression;
+ }
+
+ void density(Geometry value)
+ {
+ options.density = value;
+
+ imageRef.x_resolution = value.width;
+ imageRef.y_resolution = ( value.width != 0 ) ? value.width : value.height;
+ }
+ Geometry density() const
+ {
+ ssize_t width = 72;
+ ssize_t height = 72;
+
+ if ( imageRef.x_resolution > 0 )
+ width = cast(ssize_t)rndtol(imageRef.x_resolution);
+
+ if ( imageRef.y_resolution > 0 )
+ height = cast(ssize_t)rndtol(imageRef.y_resolution);
+
+ return Geometry(width, height);
+ }
+
+ void depth(size_t value)
+ {
+ if ( value > MagickQuantumDepth)
+ value = MagickQuantumDepth;
+
+ imageRef.depth = value;
+ options.depth = value;
+ }
+ size_t depth() const
+ {
+ return imageRef.depth;
+ }
+
+ string directory() const
+ {
+ return to!(string)(imageRef.directory);
+ }
+
+ void endian(EndianType type)
+ {
+ imageRef.endian = type;
+ options.endian = type;
+ }
+ EndianType endian() const
+ {
+ return imageRef.endian;
+ }
+
/**
* Colors within this distance are considered equal.
* A number of algorithms search for a target color.