summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Wey2011-09-11 11:38:32 +0200
committerMike Wey2011-09-11 11:38:32 +0200
commitb636368a771c4b7791244d308529bd9d44abfe99 (patch)
treef01f3352872dc183987cefb678c5d80a4284ff63
parente60ae744596ca4e22ffa6097d65f50b2b5661f60 (diff)
Version the Headers so DMagick can be used with older versions of MagickCore.
-rw-r--r--dmagick/Image.d24
-rw-r--r--dmagick/c/annotate.d12
-rw-r--r--dmagick/c/cacheView.d6
-rw-r--r--dmagick/c/deprecate.d32
-rw-r--r--dmagick/c/distort.d69
-rw-r--r--dmagick/c/effect.d66
-rw-r--r--dmagick/c/image.d26
-rw-r--r--dmagick/c/list.d15
-rw-r--r--dmagick/c/locale.d17
-rw-r--r--dmagick/c/magickString.d9
-rw-r--r--dmagick/c/magickType.d70
-rw-r--r--dmagick/c/magickVersion.d53
-rw-r--r--dmagick/c/morphology.d86
-rw-r--r--dmagick/c/option.d183
-rw-r--r--dmagick/c/pixel.d59
-rw-r--r--dmagick/c/property.d9
-rw-r--r--dmagick/c/quantize.d8
-rw-r--r--dmagick/c/transform.d8
18 files changed, 537 insertions, 215 deletions
diff --git a/dmagick/Image.d b/dmagick/Image.d
index b7bf41e..e212d83 100644
--- a/dmagick/Image.d
+++ b/dmagick/Image.d
@@ -1799,8 +1799,16 @@ class Image
//TODO: replace this with a statistic function?
void medianFilter(size_t radius = 0)
{
- MagickCoreImage* image =
- StatisticImage(imageRef, StatisticType.MedianStatistic, radius, radius, DMagickExceptionInfo());
+ static if ( is(typeof(StatisticImage)) )
+ {
+ MagickCoreImage* image =
+ StatisticImage(imageRef, StatisticType.MedianStatistic, radius, radius, DMagickExceptionInfo());
+ }
+ else
+ {
+ MagickCoreImage* image =
+ MedianFilterImage(imageRef, radius, DMagickExceptionInfo());
+ }
imageRef = ImageRef(image);
}
@@ -2244,8 +2252,16 @@ class Image
*/
void reduceNoise(size_t radius = 0)
{
- MagickCoreImage* image =
- StatisticImage(imageRef, StatisticType.NonpeakStatistic, radius, radius, DMagickExceptionInfo());
+ static if ( is(typeof(StatisticImage)) )
+ {
+ MagickCoreImage* image =
+ StatisticImage(imageRef, StatisticType.NonpeakStatistic, radius, radius, DMagickExceptionInfo());
+ }
+ else
+ {
+ MagickCoreImage* image =
+ ReduceNoiseImage(imageRef, radius, DMagickExceptionInfo());
+ }
imageRef = ImageRef(image);
}
diff --git a/dmagick/c/annotate.d b/dmagick/c/annotate.d
index 50738a0..283afd4 100644
--- a/dmagick/c/annotate.d
+++ b/dmagick/c/annotate.d
@@ -5,15 +5,23 @@ import core.sys.posix.sys.types;
import dmagick.c.draw;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
- MagickBooleanType AnnotateComponentGenesis();
+ static if ( MagickLibVersion >= 0x668 )
+ {
+ MagickBooleanType AnnotateComponentGenesis();
+ }
+
MagickBooleanType AnnotateImage(Image*, const(DrawInfo)*);
MagickBooleanType GetMultilineTypeMetrics(Image*, const(DrawInfo)*, TypeMetric*);
MagickBooleanType GetTypeMetrics(Image*, const(DrawInfo)*, TypeMetric*);
ssize_t FormatMagickCaption(Image*, DrawInfo*, const MagickBooleanType, TypeMetric*, char**);
- void AnnotateComponentTerminus();
+ static if ( MagickLibVersion >= 0x668 )
+ {
+ void AnnotateComponentTerminus();
+ }
}
diff --git a/dmagick/c/cacheView.d b/dmagick/c/cacheView.d
index 7d423f2..3affeff 100644
--- a/dmagick/c/cacheView.d
+++ b/dmagick/c/cacheView.d
@@ -6,6 +6,7 @@ import dmagick.c.colorspace;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
import dmagick.c.pixel;
extern(C)
@@ -60,7 +61,10 @@ extern(C)
MagickSizeType GetCacheViewExtent(const(CacheView)*);
- size_t GetCacheViewChannels(const(CacheView)*);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ size_t GetCacheViewChannels(const(CacheView)*);
+ }
PixelPacket* GetCacheViewAuthenticPixelQueue(CacheView*);
PixelPacket* GetCacheViewAuthenticPixels(CacheView*, const ssize_t, const ssize_t, const size_t, const size_t, ExceptionInfo*);
diff --git a/dmagick/c/deprecate.d b/dmagick/c/deprecate.d
index 04d826b..9497435 100644
--- a/dmagick/c/deprecate.d
+++ b/dmagick/c/deprecate.d
@@ -12,6 +12,7 @@ import dmagick.c.exception;
import dmagick.c.geometry;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
import dmagick.c.pixel;
import dmagick.c.quantize;
import dmagick.c.quantum;
@@ -76,13 +77,23 @@ deprecated extern(C)
Image* GetPreviousImage(const(Image)*);
Image* FlattenImages(Image*, ExceptionInfo*);
Image* MaximumImages(const(Image)*, ExceptionInfo*);
- Image* MedianFilterImage(const Image*, const double, ExceptionInfo*);
- Image* ModeImage(const(Image)*, const double, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ Image* MedianFilterImage(const Image*, const double, ExceptionInfo*);
+ Image* ModeImage(const(Image)*, const double, ExceptionInfo*);
+ }
+
Image* MinimumImages(const(Image)*, ExceptionInfo*);
Image* MosaicImages(Image*, ExceptionInfo*);
Image* PopImageList(Image**);
Image* RecolorImage(const(Image)*, const size_t, const(double)*, ExceptionInfo*);
- Image* ReduceNoiseImage(const(Image)*, const double, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ Image* ReduceNoiseImage(const(Image)*, const double, ExceptionInfo*);
+ }
+
Image* ShiftImageList(Image**);
Image* SpliceImageList(Image*, const ssize_t, const size_t, const(Image)*, ExceptionInfo*);
Image* ZoomImage(const(Image)*, const size_t, const size_t, ExceptionInfo*);
@@ -107,7 +118,12 @@ deprecated extern(C)
MagickBooleanType DescribeImage(Image*, FILE*, const MagickBooleanType);
MagickBooleanType FormatImageAttribute(Image*, const(char)*, const(char)*, ...);
MagickBooleanType FormatImageAttributeList(Image*, const(char)*, const(char)*, va_list);
- MagickBooleanType FormatImagePropertyList(Image*, const(char)*, const(char)*, va_list);
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ MagickBooleanType FormatImagePropertyList(Image*, const(char)*, const(char)*, va_list);
+ }
+
MagickBooleanType FuzzyColorCompare(const(Image)*, const(PixelPacket)*, const(PixelPacket)*);
MagickBooleanType FuzzyOpacityCompare(const(Image)*, const(PixelPacket)*, const(PixelPacket)*);
MagickBooleanType LevelImageColors(Image*, const ChannelType, const(MagickPixelPacket)*, const(MagickPixelPacket)*, const MagickBooleanType);
@@ -151,8 +167,12 @@ deprecated extern(C)
size_t PopImagePixels(Image*, const QuantumType, ubyte*);
size_t PushImagePixels(Image*, const QuantumType, const(byte)*);
- ssize_t FormatMagickString(char*, const size_t, const(char)*, ...);
- ssize_t FormatMagickStringList(char*, const size_t, const(char)*, va_list);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ ssize_t FormatMagickString(char*, const size_t, const(char)*, ...);
+ ssize_t FormatMagickStringList(char*, const size_t, const(char)*, va_list);
+ }
+
ssize_t GetImageListIndex(const(Image)*);
ssize_t SetMagickRegistry(const RegistryType, const(void)*, const size_t, ExceptionInfo*);
diff --git a/dmagick/c/distort.d b/dmagick/c/distort.d
index 5bdd2e2..98e800c 100644
--- a/dmagick/c/distort.d
+++ b/dmagick/c/distort.d
@@ -3,32 +3,50 @@ module dmagick.c.distort;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
- enum DistortImageMethod
+ mixin(
{
- UndefinedDistortion,
- AffineDistortion,
- AffineProjectionDistortion,
- ScaleRotateTranslateDistortion,
- PerspectiveDistortion,
- PerspectiveProjectionDistortion,
- BilinearForwardDistortion,
- BilinearDistortion = BilinearForwardDistortion,
- BilinearReverseDistortion,
- PolynomialDistortion,
- ArcDistortion,
- PolarDistortion,
- DePolarDistortion,
- Cylinder2PlaneDistortion,
- Plane2CylinderDistortion,
- BarrelDistortion,
- BarrelInverseDistortion,
- ShepardsDistortion,
- ResizeDistortion,
- SentinelDistortion
- }
+ string methods = "enum DistortImageMethod
+ {
+ UndefinedDistortion,
+ AffineDistortion,
+ AffineProjectionDistortion,
+ ScaleRotateTranslateDistortion,
+ PerspectiveDistortion,
+ PerspectiveProjectionDistortion,
+ BilinearForwardDistortion,
+ BilinearDistortion = BilinearForwardDistortion,
+ BilinearReverseDistortion,
+ PolynomialDistortion,
+ ArcDistortion,
+ PolarDistortion,
+ DePolarDistortion,";
+
+ static if ( MagickLibVersion >= 0x671 )
+ {
+ methods ~= "Cylinder2PlaneDistortion,
+ Plane2CylinderDistortion,";
+ }
+
+ methods ~= "
+ BarrelDistortion,
+ BarrelInverseDistortion,
+ ShepardsDistortion,";
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ methods ~= "ResizeDistortion,";
+ }
+
+ methods ~= "
+ SentinelDistortion
+ }";
+
+ return methods;
+ }());
enum SparseColorMethod
{
@@ -43,6 +61,11 @@ extern(C)
}
Image* DistortImage(const(Image)*, const DistortImageMethod, const size_t, const(double)*, MagickBooleanType, ExceptionInfo* exception);
- Image* DistortResizeImage(const(Image)*, const size_t, const size_t, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ Image* DistortResizeImage(const(Image)*, const size_t, const size_t, ExceptionInfo*);
+ }
+
Image* SparseColorImage(const(Image)*, const ChannelType, const SparseColorMethod, const size_t, const(double)*, ExceptionInfo*);
}
diff --git a/dmagick/c/effect.d b/dmagick/c/effect.d
index 2edebe9..16be2fd 100644
--- a/dmagick/c/effect.d
+++ b/dmagick/c/effect.d
@@ -3,6 +3,7 @@ module dmagick.c.effect;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
import dmagick.c.morphology;
extern(C)
@@ -41,18 +42,35 @@ extern(C)
JPEGPreview
}
- enum StatisticType
+ mixin(
{
- UndefinedStatistic,
- GradientStatistic,
- MaximumStatistic,
- MeanStatistic,
- MedianStatistic,
- MinimumStatistic,
- ModeStatistic,
- NonpeakStatistic,
- StandardDeviationStatistic
- }
+ string types = "enum StatisticType
+ {
+ UndefinedStatistic,";
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ types ~= "GradientStatistic,";
+ }
+
+ types ~= "
+ MaximumStatistic,
+ MeanStatistic,
+ MedianStatistic,
+ MinimumStatistic,
+ ModeStatistic,
+ NonpeakStatistic,";
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ types ~= "StandardDeviationStatistic,";
+ }
+
+ types ~= "
+ }";
+
+ return types;
+ }());
Image* AdaptiveBlurImage(const(Image)*, const double, const double, ExceptionInfo*);
Image* AdaptiveBlurImageChannel(const(Image)*, const ChannelType, const double, const double, ExceptionInfo*);
@@ -69,19 +87,41 @@ extern(C)
Image* FilterImageChannel(const(Image)*, const ChannelType, const(KernelInfo)*, ExceptionInfo*);
Image* GaussianBlurImage(const(Image)*, const double, const double, ExceptionInfo*);
Image* GaussianBlurImageChannel(const(Image)*, const ChannelType, const double, const double, ExceptionInfo*);
+
+ static if ( MagickLibVersion < 0x669 )
+ {
+ Image* MedianFilterImage(const(Image)*, const double, ExceptionInfo*);
+ }
+
+ static if ( MagickLibVersion == 0x668 )
+ {
+ Image* ModeImage(const(Image)*, const double, ExceptionInfo*);
+ }
+
Image* MotionBlurImage(const(Image)*, const double, const double, const double, ExceptionInfo*);
Image* MotionBlurImageChannel(const(Image)*, const ChannelType, const double, const double, const double, ExceptionInfo*);
Image* PreviewImage(const(Image)*, const PreviewType, ExceptionInfo*);
Image* RadialBlurImage(const(Image)*, const double, ExceptionInfo*);
Image* RadialBlurImageChannel(const(Image)*, const ChannelType, const double, ExceptionInfo*);
+
+ static if ( MagickLibVersion < 0x669 )
+ {
+ Image* ReduceNoiseImage(const(Image)*, const double, ExceptionInfo*);
+ }
+
Image* SelectiveBlurImage(const(Image)*, const double, const double, const double, ExceptionInfo*);
Image* SelectiveBlurImageChannel(const(Image)*, const ChannelType, const double, const double, const double, ExceptionInfo*);
Image* ShadeImage(const(Image)*, const MagickBooleanType, const double, const double, ExceptionInfo*);
Image* SharpenImage(const(Image)*, const double, const double, ExceptionInfo*);
Image* SharpenImageChannel(const(Image)*, const ChannelType ,const double, const double, ExceptionInfo*);
Image* SpreadImage(const(Image)*, const double, ExceptionInfo*);
- Image* StatisticImage(const(Image)*, const StatisticType, const size_t, const size_t, ExceptionInfo*);
- Image* StatisticImageChannel(const(Image)*, const ChannelType, const StatisticType, const size_t, const size_t, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ Image* StatisticImage(const(Image)*, const StatisticType, const size_t, const size_t, ExceptionInfo*);
+ Image* StatisticImageChannel(const(Image)*, const ChannelType, const StatisticType, const size_t, const size_t, ExceptionInfo*);
+ }
+
Image* UnsharpMaskImage(const(Image)*, const double, const double, const double, const double, ExceptionInfo*);
Image* UnsharpMaskImageChannel(const(Image)*, const ChannelType, const double, const double, const double, const double, ExceptionInfo*);
}
diff --git a/dmagick/c/image.d b/dmagick/c/image.d
index 9948841..1b35c48 100644
--- a/dmagick/c/image.d
+++ b/dmagick/c/image.d
@@ -14,6 +14,7 @@ import dmagick.c.exception;
import dmagick.c.geometry;
import dmagick.c.layer;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
import dmagick.c.monitor;
import dmagick.c.pixel;
import dmagick.c.profile;
@@ -320,8 +321,11 @@ extern(C)
MagickBooleanType
ping;
- size_t
- channels;
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ size_t
+ channels;
+ }
}
struct ImageInfo
@@ -481,7 +485,11 @@ extern(C)
Image* NewMagickImage(const(ImageInfo)*, const size_t, const size_t, const(MagickPixelPacket)*);
Image* ReferenceImage(Image*);
Image* SeparateImages(const(Image)*, const ChannelType, ExceptionInfo*);
- Image* SmushImages(const(Image)*, const MagickBooleanType, const ssize_t, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x668 )
+ {
+ Image* SmushImages(const(Image)*, const MagickBooleanType, const ssize_t, ExceptionInfo*);
+ }
ImageInfo* AcquireImageInfo();
ImageInfo* CloneImageInfo(const(ImageInfo)*);
@@ -506,7 +514,12 @@ extern(C)
MagickBooleanType SetImageInfo(ImageInfo*, const uint, ExceptionInfo*);
MagickBooleanType SetImageMask(Image*, const(Image)*);
MagickBooleanType SetImageOpacity(Image*, const Quantum);
- MagickBooleanType SetImageChannels(Image*, const size_t);
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ MagickBooleanType SetImageChannels(Image*, const size_t);
+ }
+
MagickBooleanType SetImageStorageClass(Image*, const ClassType);
MagickBooleanType SetImageType(Image*, const ImageType);
MagickBooleanType StripImage(Image*);
@@ -518,7 +531,10 @@ extern(C)
ssize_t GetImageReferenceCount(Image*);
- size_t GetImageChannels(Image*);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ size_t GetImageChannels(Image*);
+ }
VirtualPixelMethod GetImageVirtualPixelMethod(const(Image)*);
VirtualPixelMethod SetImageVirtualPixelMethod(const(Image)*, const VirtualPixelMethod);
diff --git a/dmagick/c/list.d b/dmagick/c/list.d
index 81eb69b..2a7e195 100644
--- a/dmagick/c/list.d
+++ b/dmagick/c/list.d
@@ -4,13 +4,19 @@ import core.sys.posix.sys.types;
import dmagick.c.exception;
import dmagick.c.image;
+import dmagick.c.magickVersion;
extern(C)
{
Image* CloneImageList(const(Image)*, ExceptionInfo*);
Image* CloneImages(const(Image)*, const(char)*, ExceptionInfo*);
Image* DestroyImageList(Image*);
- Image* DuplicateImages(Image*, const size_t, const char*, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ Image* DuplicateImages(Image*, const size_t, const char*, ExceptionInfo*);
+ }
+
Image* GetFirstImageInList(const(Image)*);
Image* GetImageFromList(const(Image)*, const ssize_t);
Image* GetLastImageInList(const(Image)*);
@@ -35,7 +41,12 @@ extern(C)
void InsertImageInList(Image**, Image*);
void PrependImageToList(Image**, Image*);
void ReplaceImageInList(Image**, Image*);
- void ReplaceImageInListReturnLast(Image**, Image*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ void ReplaceImageInListReturnLast(Image**, Image*);
+ }
+
void ReverseImageList(Image**);
void SyncImageList(Image*);
}
diff --git a/dmagick/c/locale.d b/dmagick/c/locale.d
index e302f92..de9f435 100644
--- a/dmagick/c/locale.d
+++ b/dmagick/c/locale.d
@@ -7,6 +7,7 @@ import core.vararg;
import dmagick.c.exception;
import dmagick.c.hashmap;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
@@ -35,7 +36,10 @@ extern(C)
const(LocaleInfo)* GetLocaleInfo_(const(char)*, ExceptionInfo*);
const(LocaleInfo)** GetLocaleInfoList(const(char)*, size_t*, ExceptionInfo*);
- double InterpretLocaleValue(const(char)*, char**);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ double InterpretLocaleValue(const(char)*, char**);
+ }
LinkedListInfo* DestroyLocaleOptions(LinkedListInfo*);
LinkedListInfo* GetLocaleOptions(const(char)*, ExceptionInfo*);
@@ -43,10 +47,13 @@ extern(C)
MagickBooleanType ListLocaleInfo(FILE*, ExceptionInfo*);
MagickBooleanType LocaleComponentGenesis();
- ssize_t FormatLocaleFile(FILE*, const(char)*, ...);
- ssize_t FormatLocaleFileList(FILE*, const(char)*, va_list);
- ssize_t FormatLocaleString(char*, const size_t, const(char)*, ...);
- ssize_t FormatLocaleStringList(char*, const size_t, const(char)*, va_list);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ ssize_t FormatLocaleFile(FILE*, const(char)*, ...);
+ ssize_t FormatLocaleFileList(FILE*, const(char)*, va_list);
+ ssize_t FormatLocaleString(char*, const size_t, const(char)*, ...);
+ ssize_t FormatLocaleStringList(char*, const size_t, const(char)*, va_list);
+ }
void LocaleComponentTerminus();
}
diff --git a/dmagick/c/magickString.d b/dmagick/c/magickString.d
index 8c5f939..7281f0c 100644
--- a/dmagick/c/magickString.d
+++ b/dmagick/c/magickString.d
@@ -3,9 +3,11 @@ module dmagick.c.magickString;
import core.stdc.stdio;
import core.stdc.time;
import core.sys.posix.sys.types;
+import core.vararg;
import dmagick.c.exception;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
@@ -50,6 +52,13 @@ extern(C)
size_t GetStringInfoLength(const(StringInfo)*);
ssize_t FormatMagickSize(const MagickSizeType, const MagickBooleanType, char*);
+
+ static if ( MagickLibVersion < 0x670 )
+ {
+ ssize_t FormatMagickString(char*, const size_t, const(char)*, ...);
+ ssize_t FormatMagickStringList(char*, const size_t, const(char)*, va_list);
+ }
+
ssize_t FormatMagickTime(const time_t, const size_t, char*);
StringInfo* AcquireStringInfo(const size_t);
diff --git a/dmagick/c/magickType.d b/dmagick/c/magickType.d
index 9d92e4c..f2eabb0 100644
--- a/dmagick/c/magickType.d
+++ b/dmagick/c/magickType.d
@@ -1,5 +1,7 @@
module dmagick.c.magickType;
+import dmagick.c.magickVersion;
+
extern (C)
{
version(Quantum8)
@@ -63,30 +65,52 @@ extern (C)
enum MaxTextExtent = 4096;
enum OpaqueOpacity = 0;
- enum ChannelType
+ mixin(
{
- UndefinedChannel,
- RedChannel = 0x0001,
- GrayChannel = 0x0001,
- CyanChannel = 0x0001,
- GreenChannel = 0x0002,
- MagentaChannel = 0x0002,
- BlueChannel = 0x0004,
- YellowChannel = 0x0004,
- AlphaChannel = 0x0008,
- OpacityChannel = 0x0008,
- MatteChannel = 0x0008, // deprecated
- BlackChannel = 0x0020,
- IndexChannel = 0x0020,
- CompositeChannels = 0x002F,
- AllChannels = 0x7FFFFFF,
-
- TrueAlphaChannel = 0x0040, // extract actual alpha channel from opacity
- RGBChannels = 0x0080, // set alpha from grayscale mask in RGB
- GrayChannels = 0x0080,
- SyncChannels = 0x0100, // channels should be modified equally
- DefaultChannels = ( (AllChannels | SyncChannels) &~ OpacityChannel)
- }
+ string channels = "enum ChannelType
+ {
+ UndefinedChannel,
+ RedChannel = 0x0001,
+ GrayChannel = 0x0001,
+ CyanChannel = 0x0001,
+ GreenChannel = 0x0002,
+ MagentaChannel = 0x0002,
+ BlueChannel = 0x0004,
+ YellowChannel = 0x0004,
+ AlphaChannel = 0x0008,
+ OpacityChannel = 0x0008,
+ MatteChannel = 0x0008, // deprecated
+ BlackChannel = 0x0020,
+ IndexChannel = 0x0020,
+ CompositeChannels = 0x002F,";
+
+ static if ( MagickLibVersion < 0x670 )
+ {
+ channels ~= "AllChannels = 0x002F,";
+ }
+ else static if ( MagickLibVersion == 0x670 )
+ {
+ channels ~= "AllChannels = ~0UL,";
+ }
+ else static if ( MagickLibVersion == 0x671 )
+ {
+ channels ~= "AllChannels = ~0L,";
+ }
+ else
+ {
+ channels ~= "AllChannels = 0x7FFFFFF,";
+ }
+
+ channels ~= "
+ TrueAlphaChannel = 0x0040, // extract actual alpha channel from opacity
+ RGBChannels = 0x0080, // set alpha from grayscale mask in RGB
+ GrayChannels = 0x0080,
+ SyncChannels = 0x0100, // channels should be modified equally
+ DefaultChannels = ( (AllChannels | SyncChannels) &~ OpacityChannel)
+ }";
+
+ return channels;
+ }());
enum ClassType
{
diff --git a/dmagick/c/magickVersion.d b/dmagick/c/magickVersion.d
index 4b9a0e5..7422c13 100644
--- a/dmagick/c/magickVersion.d
+++ b/dmagick/c/magickVersion.d
@@ -2,10 +2,55 @@ module dmagick.c.magickVersion;
extern(C)
{
- /// Defines the version of ImageMagick where these headers are based on.
- enum MagickLibVersion = 0x672;
- ///ditto
- enum MagickLibVersionText = "6.7.2";
+ version(MagickCore_666)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x666;
+ ///ditto
+ enum MagickLibVersionText = "6.6.6";
+ }
+ else version(MagickCore_667)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x667;
+ ///ditto
+ enum MagickLibVersionText = "6.6.7";
+ }
+ else version(MagickCore_668)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x668;
+ ///ditto
+ enum MagickLibVersionText = "6.6.8";
+ }
+ else version(MagickCore_669)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x669;
+ ///ditto
+ enum MagickLibVersionText = "6.6.9";
+ }
+ else version(MagickCore_670)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x670;
+ ///ditto
+ enum MagickLibVersionText = "6.7.0";
+ }
+ else version(MagickCore_671)
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x671;
+ ///ditto
+ enum MagickLibVersionText = "6.7.1";
+ }
+ else
+ {
+ /// Defines the version of ImageMagick where these headers are based on.
+ enum MagickLibVersion = 0x672;
+ ///ditto
+ enum MagickLibVersionText = "6.7.2";
+ }
char* GetMagickHomeURL();
diff --git a/dmagick/c/morphology.d b/dmagick/c/morphology.d
index fa6ffd3..c48c6ba 100644
--- a/dmagick/c/morphology.d
+++ b/dmagick/c/morphology.d
@@ -6,47 +6,59 @@ import dmagick.c.exception;
import dmagick.c.geometry;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
- enum KernelInfoType
+ mixin(
{
- UndefinedKernel, /* equivelent to UnityKernel */
- UnityKernel, /* The no-op or 'original image' kernel */
- GaussianKernel, /* Convolution Kernels, Gaussian Based */
- DoGKernel,
- LoGKernel,
- BlurKernel,
- CometKernel,
- LaplacianKernel, /* Convolution Kernels, by Name */
- SobelKernel,
- FreiChenKernel,
- RobertsKernel,
- PrewittKernel,
- CompassKernel,
- KirschKernel,
- DiamondKernel, /* Shape Kernels */
- SquareKernel,
- RectangleKernel,
- OctagonKernel,
- DiskKernel,
- PlusKernel,
- CrossKernel,
- RingKernel,
- PeaksKernel, /* Hit And Miss Kernels */
- EdgesKernel,
- CornersKernel,
- ThinDiagonalsKernel,
- LineEndsKernel,
- LineJunctionsKernel,
- RidgesKernel,
- ConvexHullKernel,
- SkeletonKernel,
- ChebyshevKernel, /* Distance Measuring Kernels */
- ManhattanKernel,
- EuclideanKernel,
- UserDefinedKernel /* User Specified Kernel Array */
- }
+ string info = "enum KernelInfoType
+ {
+ UndefinedKernel, /* equivelent to UnityKernel */
+ UnityKernel, /* The no-op or 'original image' kernel */
+ GaussianKernel, /* Convolution Kernels, Gaussian Based */
+ DoGKernel,
+ LoGKernel,
+ BlurKernel,
+ CometKernel,
+ LaplacianKernel, /* Convolution Kernels, by Name */
+ SobelKernel,
+ FreiChenKernel,
+ RobertsKernel,
+ PrewittKernel,
+ CompassKernel,
+ KirschKernel,
+ DiamondKernel, /* Shape Kernels */
+ SquareKernel,
+ RectangleKernel,";
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ info ~= "OctagonKernel,";
+ }
+
+ info ~= "
+ DiskKernel,
+ PlusKernel,
+ CrossKernel,
+ RingKernel,
+ PeaksKernel, /* Hit And Miss Kernels */
+ EdgesKernel,
+ CornersKernel,
+ ThinDiagonalsKernel,
+ LineEndsKernel,
+ LineJunctionsKernel,
+ RidgesKernel,
+ ConvexHullKernel,
+ SkeletonKernel,
+ ChebyshevKernel, /* Distance Measuring Kernels */
+ ManhattanKernel,
+ EuclideanKernel,
+ UserDefinedKernel /* User Specified Kernel Array */
+ }";
+
+ return info;
+ }());
enum MorphologyMethod
{
diff --git a/dmagick/c/option.d b/dmagick/c/option.d
index 915796a..655582f 100644
--- a/dmagick/c/option.d
+++ b/dmagick/c/option.d
@@ -6,80 +6,101 @@ import core.sys.posix.sys.types;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
- enum CommandOption
+ mixin(
{
- MagickUndefinedOptions = -1,
- MagickAlignOptions = 0,
- MagickAlphaOptions,
- MagickBooleanOptions,
- MagickChannelOptions,
- MagickClassOptions,
- MagickClipPathOptions,
- MagickCoderOptions,
- MagickColorOptions,
- MagickColorspaceOptions,
- MagickCommandOptions,
- MagickComposeOptions,
- MagickCompressOptions,
- MagickConfigureOptions,
- MagickDataTypeOptions,
- MagickDebugOptions,
- MagickDecorateOptions,
- MagickDelegateOptions,
- MagickDirectionOptions,
- MagickDisposeOptions,
- MagickDistortOptions,
- MagickDitherOptions,
- MagickEndianOptions,
- MagickEvaluateOptions,
- MagickFillRuleOptions,
- MagickFilterOptions,
- MagickFontOptions,
- MagickFontsOptions,
- MagickFormatOptions,
- MagickFunctionOptions,
- MagickGravityOptions,
- MagickIntentOptions,
- MagickInterlaceOptions,
- MagickInterpolateOptions,
- MagickKernelOptions,
- MagickLayerOptions,
- MagickLineCapOptions,
- MagickLineJoinOptions,
- MagickListOptions,
- MagickLocaleOptions,
- MagickLogEventOptions,
- MagickLogOptions,
- MagickMagicOptions,
- MagickMethodOptions,
- MagickMetricOptions,
- MagickMimeOptions,
- MagickModeOptions,
- MagickModuleOptions,
- MagickMorphologyOptions,
- MagickNoiseOptions,
- MagickOrientationOptions,
- MagickPolicyOptions,
- MagickPolicyDomainOptions,
- MagickPolicyRightsOptions,
- MagickPreviewOptions,
- MagickPrimitiveOptions,
- MagickQuantumFormatOptions,
- MagickResolutionOptions,
- MagickResourceOptions,
- MagickSparseColorOptions,
- MagickStatisticOptions,
- MagickStorageOptions,
- MagickStretchOptions,
- MagickStyleOptions,
- MagickThresholdOptions,
- MagickTypeOptions,
- MagickValidateOptions,
- MagickVirtualPixelOptions
- }
+ string options = "enum CommandOption
+ {
+ MagickUndefinedOptions = -1,
+ MagickAlignOptions = 0,
+ MagickAlphaOptions,
+ MagickBooleanOptions,
+ MagickChannelOptions,
+ MagickClassOptions,
+ MagickClipPathOptions,
+ MagickCoderOptions,
+ MagickColorOptions,
+ MagickColorspaceOptions,
+ MagickCommandOptions,
+ MagickComposeOptions,
+ MagickCompressOptions,
+ MagickConfigureOptions,
+ MagickDataTypeOptions,
+ MagickDebugOptions,
+ MagickDecorateOptions,
+ MagickDelegateOptions,
+ MagickDirectionOptions,
+ MagickDisposeOptions,
+ MagickDistortOptions,
+ MagickDitherOptions,
+ MagickEndianOptions,
+ MagickEvaluateOptions,
+ MagickFillRuleOptions,
+ MagickFilterOptions,
+ MagickFontOptions,
+ MagickFontsOptions,
+ MagickFormatOptions,
+ MagickFunctionOptions,
+ MagickGravityOptions,";
+
+ static if ( MagickLibVersion < 0x670 )
+ {
+ options ~= "MagickImageListOptions,";
+ }
+
+ options ~= "
+ MagickIntentOptions,
+ MagickInterlaceOptions,
+ MagickInterpolateOptions,
+ MagickKernelOptions,
+ MagickLayerOptions,
+ MagickLineCapOptions,
+ MagickLineJoinOptions,
+ MagickListOptions,
+ MagickLocaleOptions,
+ MagickLogEventOptions,
+ MagickLogOptions,
+ MagickMagicOptions,
+ MagickMethodOptions,
+ MagickMetricOptions,
+ MagickMimeOptions,
+ MagickModeOptions,
+ MagickModuleOptions,
+ MagickMorphologyOptions,
+ MagickNoiseOptions,
+ MagickOrientationOptions,
+ MagickPolicyOptions,
+ MagickPolicyDomainOptions,
+ MagickPolicyRightsOptions,
+ MagickPreviewOptions,
+ MagickPrimitiveOptions,
+ MagickQuantumFormatOptions,
+ MagickResolutionOptions,
+ MagickResourceOptions,
+ MagickSparseColorOptions,";
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ options ~= "MagickStatisticOptions,";
+ }
+
+ options ~= "
+ MagickStorageOptions,
+ MagickStretchOptions,
+ MagickStyleOptions,
+ MagickThresholdOptions,
+ MagickTypeOptions,
+ MagickValidateOptions,
+ MagickVirtualPixelOptions
+ }";
+
+ return options;
+ }());
+
+ alias CommandOption MagickOption;
enum ValidateType
{
@@ -119,8 +140,13 @@ extern(C)
mnemonic;
ssize_t
- type,
- flags;
+ type;
+
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ ssize_t
+ flags;
+ }
MagickBooleanType
stealth;
@@ -140,11 +166,22 @@ extern(C)
MagickBooleanType ListCommandOptions(FILE*, const CommandOption, ExceptionInfo*);
MagickBooleanType SetImageOption(ImageInfo*, const(char)*, const(char)*);
- ssize_t GetCommandOptionFlags(const CommandOption, const MagickBooleanType, const(char)*);
+ static if ( MagickLibVersion >= 0x670 )
+ {
+ ssize_t GetCommandOptionFlags(const CommandOption, const MagickBooleanType, const(char)*);
+ }
+
ssize_t ParseChannelOption(const(char)*);
ssize_t ParseCommandOption(const CommandOption, const MagickBooleanType, const(char)*);
void DestroyImageOptions(ImageInfo*);
void ResetImageOptions(const(ImageInfo)*);
void ResetImageOptionIterator(const(ImageInfo)*);
+
+ //Renamed functions in 6.7.0
+ alias GetCommandOptions GetMagickOptions;
+ alias CommandOptionToMnemonic MagickOptionToMnemonic;
+ alias IsCommandOption IsMagickOption;
+ alias ListCommandOptions ListMagickOptions;
+ alias ParseCommandOption ParseMagickOption;
}
diff --git a/dmagick/c/pixel.d b/dmagick/c/pixel.d
index fd6ed6e..2f8b806 100644
--- a/dmagick/c/pixel.d
+++ b/dmagick/c/pixel.d
@@ -8,6 +8,7 @@ import dmagick.c.constitute;
import dmagick.c.exception;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
@@ -24,21 +25,45 @@ extern(C)
SplineInterpolatePixel
}
- enum PixelComponent
+
+ static if ( MagickLibVersion >= 0x671 )
+ {
+ enum PixelComponent
+ {
+ PixelRed = 0,
+ PixelCyan = 0,
+ PixelGray = 0,
+ PixelY = 0,
+ PixelGreen = 1,
+ PixelMagenta = 1,
+ PixelCb = 1,
+ PixelBlue = 2,
+ PixelYellow = 2,
+ PixelCr = 2,
+ PixelAlpha = 3,
+ PixelBlack = 4,
+ PixelIndex = 4,
+ }
+ }
+ else
{
- PixelRed = 0,
- PixelCyan = 0,
- PixelGray = 0,
- PixelY = 0,
- PixelGreen = 1,
- PixelMagenta = 1,
- PixelCb = 1,
- PixelBlue = 2,
- PixelYellow = 2,
- PixelCr = 2,
- PixelAlpha = 3,
- PixelBlack = 4,
- PixelIndex = 4,
+ enum PixelComponent
+ {
+ RedPixelComponent = 0,
+ CyanPixelComponent = 0,
+ GrayPixelComponent = 0,
+ YPixelComponent = 0,
+ GreenPixelComponent = 1,
+ MagentaPixelComponent = 1,
+ CbPixelComponent = 1,
+ BluePixelComponent = 2,
+ YellowPixelComponent = 2,
+ CrPixelComponent = 2,
+ AlphaPixelComponent = 3,
+ BlackPixelComponent = 4,
+ IndexPixelComponent = 4,
+ MaskPixelComponent = 5
+ }
}
struct DoublePixelPacket
@@ -100,7 +125,11 @@ extern(C)
MagickBooleanType ExportImagePixels(const(Image)*, const ssize_t, const ssize_t, const size_t, const size_t, const(char)*, const StorageType, void*, ExceptionInfo*);
MagickBooleanType ImportImagePixels(Image*, const ssize_t, const ssize_t, const size_t, const size_t, const(char)*, const StorageType, const(void)*);
- MagickBooleanType InterpolateMagickPixelPacket(const Image*, const CacheView*, const InterpolatePixelMethod, const double, const double, MagickPixelPacket*, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ MagickBooleanType InterpolateMagickPixelPacket(const Image*, const CacheView*, const InterpolatePixelMethod, const double, const double, MagickPixelPacket*, ExceptionInfo*);
+ }
void GetMagickPixelPacket(const(Image)*, MagickPixelPacket*);
}
diff --git a/dmagick/c/property.d b/dmagick/c/property.d
index 90ffd9f..912e7be 100644
--- a/dmagick/c/property.d
+++ b/dmagick/c/property.d
@@ -1,7 +1,10 @@
module dmagick.c.property;
+import core.vararg;
+
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
@@ -16,6 +19,12 @@ extern(C)
MagickBooleanType DefineImageProperty(Image*, const(char)*);
MagickBooleanType DeleteImageProperty(Image*, const(char)*);
MagickBooleanType FormatImageProperty(Image*, const(char)*, const(char)*, ...);
+
+ static if ( MagickLibVersion < 0x670 )
+ {
+ MagickBooleanType FormatImagePropertyList(Image*, const(char)*, const(char)*, va_list);
+ }
+
MagickBooleanType SetImageProperty(Image*, const(char)*, const(char)*);
void DestroyImageProperties(Image*);
diff --git a/dmagick/c/quantize.d b/dmagick/c/quantize.d
index 9ab262f..53983b9 100644
--- a/dmagick/c/quantize.d
+++ b/dmagick/c/quantize.d
@@ -3,6 +3,7 @@ module dmagick.c.quantize;
import dmagick.c.colorspace;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
@@ -41,7 +42,12 @@ extern(C)
MagickBooleanType CompressImageColormap(Image*);
MagickBooleanType GetImageQuantizeError(Image*);
MagickBooleanType PosterizeImage(Image*, const size_t, const MagickBooleanType);
- MagickBooleanType PosterizeImageChannel(Image*, const ChannelType, const size_t, const MagickBooleanType);
+
+ static if ( MagickLibVersion >= 0x668 )
+ {
+ MagickBooleanType PosterizeImageChannel(Image*, const ChannelType, const size_t, const MagickBooleanType);
+ }
+
MagickBooleanType QuantizeImage(const(QuantizeInfo)*, Image*);
MagickBooleanType QuantizeImages(const(QuantizeInfo)*, Image*);
MagickBooleanType RemapImage(const(QuantizeInfo)*, Image*, const(Image)*);
diff --git a/dmagick/c/transform.d b/dmagick/c/transform.d
index fd7ab12..fd413ea 100644
--- a/dmagick/c/transform.d
+++ b/dmagick/c/transform.d
@@ -6,13 +6,19 @@ import dmagick.c.exception;
import dmagick.c.geometry;
import dmagick.c.image;
import dmagick.c.magickType;
+import dmagick.c.magickVersion;
extern(C)
{
Image* ChopImage(const(Image)*, const(RectangleInfo)*, ExceptionInfo*);
Image* ConsolidateCMYKImages(const(Image)*, ExceptionInfo*);
Image* CropImage(const(Image)*, const(RectangleInfo)*, ExceptionInfo*);
- Image* CropImageToTiles(const(Image)*, const(char)*, ExceptionInfo*);
+
+ static if ( MagickLibVersion >= 0x669 )
+ {
+ Image* CropImageToTiles(const(Image)*, const(char)*, ExceptionInfo*);
+ }
+
Image* ExcerptImage(const(Image)*, const(RectangleInfo)*, ExceptionInfo*);
Image* ExtentImage(const(Image)*, const(RectangleInfo)*, ExceptionInfo*);
Image* FlipImage(const(Image)*, ExceptionInfo*);