From b636368a771c4b7791244d308529bd9d44abfe99 Mon Sep 17 00:00:00 2001 From: Mike Wey Date: Sun, 11 Sep 2011 11:38:32 +0200 Subject: Version the Headers so DMagick can be used with older versions of MagickCore. --- dmagick/c/magickType.d | 70 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 23 deletions(-) (limited to 'dmagick/c/magickType.d') 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 { -- cgit v1.2.3