1 module dmagick.c.option; 2 3 import core.stdc.stdio; 4 5 import dmagick.c.exception; 6 import dmagick.c.image; 7 import dmagick.c.magickType; 8 import dmagick.c.magickVersion; 9 10 alias ptrdiff_t ssize_t; 11 12 extern(C) 13 { 14 mixin( 15 { 16 static if ( MagickLibVersion >= 0x670 ) 17 { 18 string options = "enum CommandOption"; 19 } 20 else 21 { 22 string options = "enum MagickOption"; 23 } 24 25 options ~= " 26 { 27 MagickUndefinedOptions = -1, 28 MagickAlignOptions = 0, 29 MagickAlphaOptions, 30 MagickBooleanOptions,"; 31 32 static if ( MagickLibVersion >= 0x682 ) 33 { 34 options ~= "MagickCacheOptions,"; 35 } 36 37 options ~= " 38 MagickChannelOptions, 39 MagickClassOptions, 40 MagickClipPathOptions, 41 MagickCoderOptions, 42 MagickColorOptions, 43 MagickColorspaceOptions, 44 MagickCommandOptions, 45 MagickComposeOptions, 46 MagickCompressOptions, 47 MagickConfigureOptions, 48 MagickDataTypeOptions, 49 MagickDebugOptions, 50 MagickDecorateOptions, 51 MagickDelegateOptions,"; 52 53 static if ( MagickLibVersion >= 0x661 ) 54 { 55 options ~= "MagickDirectionOptions,"; 56 } 57 58 options ~= " 59 MagickDisposeOptions, 60 MagickDistortOptions, 61 MagickDitherOptions, 62 MagickEndianOptions, 63 MagickEvaluateOptions, 64 MagickFillRuleOptions, 65 MagickFilterOptions, 66 MagickFontOptions, 67 MagickFontsOptions, 68 MagickFormatOptions, 69 MagickFunctionOptions, 70 MagickGravityOptions,"; 71 72 static if ( MagickLibVersion < 0x670 ) 73 { 74 options ~= "MagickImageListOptions,"; 75 } 76 77 options ~= " 78 MagickIntentOptions, 79 MagickInterlaceOptions, 80 MagickInterpolateOptions, 81 MagickKernelOptions, 82 MagickLayerOptions, 83 MagickLineCapOptions, 84 MagickLineJoinOptions, 85 MagickListOptions, 86 MagickLocaleOptions, 87 MagickLogEventOptions, 88 MagickLogOptions, 89 MagickMagicOptions, 90 MagickMethodOptions, 91 MagickMetricOptions, 92 MagickMimeOptions, 93 MagickModeOptions, 94 MagickModuleOptions, 95 MagickMorphologyOptions, 96 MagickNoiseOptions, 97 MagickOrientationOptions,"; 98 99 static if ( MagickLibVersion >= 0x684 ) 100 { 101 options ~= "MagickPixelIntensityOptions,"; 102 } 103 104 options ~= " 105 MagickPolicyOptions, 106 MagickPolicyDomainOptions, 107 MagickPolicyRightsOptions, 108 MagickPreviewOptions, 109 MagickPrimitiveOptions, 110 MagickQuantumFormatOptions, 111 MagickResolutionOptions, 112 MagickResourceOptions, 113 MagickSparseColorOptions,"; 114 115 static if ( MagickLibVersion >= 0x669 ) 116 { 117 options ~= "MagickStatisticOptions,"; 118 } 119 120 options ~= " 121 MagickStorageOptions, 122 MagickStretchOptions, 123 MagickStyleOptions, 124 MagickThresholdOptions, 125 MagickTypeOptions, 126 MagickValidateOptions, 127 MagickVirtualPixelOptions"; 128 129 static if ( MagickLibVersion >= 0x688 ) 130 { 131 options ~= "MagickComplexOptions, 132 MagickIntensityOptions,"; 133 } 134 135 static if ( MagickLibVersion >= 0x692 ) 136 { 137 options ~= "MagickGradientOptions, 138 MagickWeightOptions,"; 139 } 140 141 options ~= "}"; 142 143 return options; 144 }()); 145 146 static if ( MagickLibVersion >= 0x686 ) 147 { 148 enum ValidateType 149 { 150 UndefinedValidate, 151 NoValidate = 0x00000, 152 ColorspaceValidate = 0x00001, 153 CompareValidate = 0x00002, 154 CompositeValidate = 0x00004, 155 ConvertValidate = 0x00008, 156 FormatsDiskValidate = 0x00010, 157 FormatsMapValidate = 0x00020, 158 FormatsMemoryValidate = 0x00040, 159 IdentifyValidate = 0x00080, 160 ImportExportValidate = 0x00100, 161 MontageValidate = 0x00200, 162 StreamValidate = 0x00400, 163 AllValidate = 0x7fffffff 164 } 165 } 166 else 167 { 168 enum ValidateType 169 { 170 UndefinedValidate, 171 NoValidate = 0x00000, 172 CompareValidate = 0x00001, 173 CompositeValidate = 0x00002, 174 ConvertValidate = 0x00004, 175 FormatsInMemoryValidate = 0x00008, 176 FormatsOnDiskValidate = 0x00010, 177 IdentifyValidate = 0x00020, 178 ImportExportValidate = 0x00040, 179 MontageValidate = 0x00080, 180 StreamValidate = 0x00100, 181 AllValidate = 0x7fffffff 182 } 183 } 184 185 enum CommandOptionFlags 186 { 187 UndefinedOptionFlag = 0x0000, 188 FireOptionFlag = 0x0001, /* Option sequence firing point */ 189 ImageInfoOptionFlag = 0x0002, /* Sets ImageInfo, no image needed */ 190 DrawInfoOptionFlag = 0x0004, /* Sets DrawInfo, no image needed */ 191 QuantizeInfoOptionFlag = 0x0008, /* Sets QuantizeInfo, no image needed */ 192 GlobalOptionFlag = 0x0010, /* Sets Global Option, no image needed */ 193 SimpleOperatorOptionFlag = 0x0100, /* Simple Image processing operator */ 194 ListOperatorOptionFlag = 0x0200, /* Multi-Image List processing operator */ 195 SpecialOperatorOptionFlag = 0x0400, /* Specially handled Operator Option */ 196 GenesisOptionFlag = 0x0400, /* Genesis Command Wrapper Option */ 197 NonConvertOptionFlag = 0x4000, /* Option not used by Convert */ 198 DeprecateOptionFlag = 0x8000 /* Deprecate option, give warning */ 199 } 200 201 struct OptionInfo 202 { 203 const(char)* 204 mnemonic; 205 206 ssize_t 207 type; 208 209 static if ( MagickLibVersion >= 0x670 ) 210 { 211 ssize_t 212 flags; 213 } 214 215 MagickBooleanType 216 stealth; 217 } 218 219 static if ( MagickLibVersion >= 0x670 ) 220 { 221 char** GetCommandOptions(const CommandOption); 222 223 const(char)* CommandOptionToMnemonic(const CommandOption, const ssize_t); 224 225 MagickBooleanType IsCommandOption(const(char)*); 226 MagickBooleanType ListCommandOptions(FILE*, const CommandOption, ExceptionInfo*); 227 228 ssize_t GetCommandOptionFlags(const CommandOption, const MagickBooleanType, const(char)*); 229 ssize_t ParseCommandOption(const CommandOption, const MagickBooleanType, const(char)*); 230 } 231 else 232 { 233 char** GetMagickOptions(const MagickOption); 234 235 const(char)* MagickOptionToMnemonic(const MagickOption, const ssize_t); 236 237 MagickBooleanType IsMagickOption(const(char)*); 238 MagickBooleanType ListMagickOptions(FILE*, const MagickOption, ExceptionInfo*); 239 240 ssize_t ParseMagickOption(const MagickOption, const MagickBooleanType,const(char)*); 241 } 242 243 static if ( MagickLibVersion >= 0x690 ) 244 { 245 MagickBooleanType IsOptionMember(const(char)*, const(char)*); 246 } 247 248 char* GetNextImageOption(const(ImageInfo)*); 249 char* RemoveImageOption(ImageInfo*, const(char)*); 250 251 const(char)* GetImageOption(const(ImageInfo)*, const(char)*); 252 253 MagickBooleanType CloneImageOptions(ImageInfo*, const(ImageInfo)*); 254 MagickBooleanType DefineImageOption(ImageInfo*, const(char)*); 255 MagickBooleanType DeleteImageOption(ImageInfo*, const(char)*); 256 MagickBooleanType SetImageOption(ImageInfo*, const(char)*, const(char)*); 257 258 ssize_t ParseChannelOption(const(char)*); 259 260 void DestroyImageOptions(ImageInfo*); 261 void ResetImageOptions(const(ImageInfo)*); 262 void ResetImageOptionIterator(const(ImageInfo)*); 263 }