1 /* 2 Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization 3 dedicated to making software imaging solutions freely available. 4 5 You may not use this file except in compliance with the License. You may 6 obtain a copy of the License at 7 8 https://imagemagick.org/script/license.php 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 16 MagickCore option methods. 17 */ 18 #ifndef MAGICKCORE_OPTION_H 19 #define MAGICKCORE_OPTION_H 20 21 #if defined(__cplusplus) || defined(c_plusplus) 22 extern "C" { 23 #endif 24 25 typedef enum 26 { 27 MagickUndefinedOptions = -1, 28 MagickAlignOptions = 0, 29 MagickAlphaChannelOptions, 30 MagickBooleanOptions, 31 MagickCacheOptions, 32 MagickChannelOptions, 33 MagickClassOptions, 34 MagickClipPathOptions, 35 MagickCoderOptions, 36 MagickColorOptions, 37 MagickColorspaceOptions, 38 MagickCommandOptions, 39 MagickComplexOptions, 40 MagickComplianceOptions, 41 MagickComposeOptions, 42 MagickCompressOptions, 43 MagickConfigureOptions, 44 MagickDataTypeOptions, 45 MagickDebugOptions, 46 MagickDecorateOptions, 47 MagickDelegateOptions, 48 MagickDirectionOptions, 49 MagickDisposeOptions, 50 MagickDistortOptions, 51 MagickDitherOptions, 52 MagickEndianOptions, 53 MagickEvaluateOptions, 54 MagickFillRuleOptions, 55 MagickFilterOptions, 56 MagickFontOptions, 57 MagickFontsOptions, 58 MagickFormatOptions, 59 MagickFunctionOptions, 60 MagickGradientOptions, 61 MagickGravityOptions, 62 MagickIntensityOptions, 63 MagickIntentOptions, 64 MagickInterlaceOptions, 65 MagickInterpolateOptions, 66 MagickKernelOptions, 67 MagickLayerOptions, 68 MagickLineCapOptions, 69 MagickLineJoinOptions, 70 MagickListOptions, 71 MagickLocaleOptions, 72 MagickLogEventOptions, 73 MagickLogOptions, 74 MagickMagicOptions, 75 MagickMethodOptions, 76 MagickMetricOptions, 77 MagickMimeOptions, 78 MagickModeOptions, 79 MagickModuleOptions, 80 MagickMorphologyOptions, 81 MagickNoiseOptions, 82 MagickOrientationOptions, 83 MagickPixelChannelOptions, 84 MagickPixelIntensityOptions, 85 MagickPixelMaskOptions, 86 MagickPixelTraitOptions, 87 MagickPolicyOptions, 88 MagickPolicyDomainOptions, 89 MagickPolicyRightsOptions, 90 MagickPreviewOptions, 91 MagickPrimitiveOptions, 92 MagickQuantumFormatOptions, 93 MagickResolutionOptions, 94 MagickResourceOptions, 95 MagickSparseColorOptions, 96 MagickStatisticOptions, 97 MagickStorageOptions, 98 MagickStretchOptions, 99 MagickStyleOptions, 100 MagickThresholdOptions, 101 MagickTypeOptions, 102 MagickValidateOptions, 103 MagickVirtualPixelOptions, 104 MagickWeightOptions, 105 MagickAutoThresholdOptions, 106 MagickToolOptions, 107 MagickCLIOptions 108 } CommandOption; 109 110 typedef enum 111 { 112 UndefinedValidate, 113 NoValidate = 0x00000, 114 ColorspaceValidate = 0x00001, 115 CompareValidate = 0x00002, 116 CompositeValidate = 0x00004, 117 ConvertValidate = 0x00008, 118 FormatsDiskValidate = 0x00010, 119 FormatsMapValidate = 0x00020, 120 FormatsMemoryValidate = 0x00040, 121 IdentifyValidate = 0x00080, 122 ImportExportValidate = 0x00100, 123 MontageValidate = 0x00200, 124 StreamValidate = 0x00400, 125 AllValidate = 0x7fffffff 126 } ValidateType; 127 128 /* 129 Flags to describe classes of image processing options. 130 These are used to determine how a option should be processed, and 131 avoid attempting to process all options in every way posible. 132 */ 133 typedef enum 134 { 135 UndefinedOptionFlag = 0x0000, /* option flag is not in use */ 136 137 ImageInfoOptionFlag = 0x0001, /* Setting stored in ImageInfo */ 138 DrawInfoOptionFlag = 0x0002, /* Setting stored in DrawInfo */ 139 QuantizeInfoOptionFlag = 0x0004, /* Setting stored in QuantizeInfo */ 140 GlobalOptionFlag = 0x0008, /* Global Setting or Control */ 141 SettingOptionFlags = 0x000F, /* mask any setting option */ 142 143 NoImageOperatorFlag = 0x0010, /* Images not required operator */ 144 SimpleOperatorFlag = 0x0020, /* Simple Image processing operator */ 145 ListOperatorFlag = 0x0040, /* Multi-Image processing operator */ 146 GenesisOptionFlag = 0x0080, /* MagickCommandGenesis() Only Option */ 147 148 SpecialOptionFlag = 0x0100, /* Operator with Special Requirements */ 149 /* EG: for specific CLI commands */ 150 151 AlwaysInterpretArgsFlag = 0x0400, /* Always Interpret escapes in Args */ 152 /* CF: "convert" compatibility mode */ 153 NeverInterpretArgsFlag = 0x0800, /* Never Interpret escapes in Args */ 154 /* EG: filename, or delayed escapes */ 155 156 NonMagickOptionFlag = 0x1000, /* Option not used by Magick Command */ 157 FireOptionFlag = 0x2000, /* Convert operation seq firing point */ 158 DeprecateOptionFlag = 0x4000, /* Deprecate option (no code) */ 159 ReplacedOptionFlag = 0x8800 /* Replaced Option (but still works) */ 160 161 } CommandOptionFlags; 162 163 typedef struct _OptionInfo 164 { 165 const char 166 *mnemonic; 167 168 ssize_t 169 type, 170 flags; 171 172 MagickBooleanType 173 stealth; 174 } OptionInfo; 175 176 177 extern MagickExport char 178 **GetCommandOptions(const CommandOption), 179 *GetNextImageOption(const ImageInfo *), 180 *RemoveImageOption(ImageInfo *,const char *); 181 182 extern MagickExport const char 183 *CommandOptionToMnemonic(const CommandOption,const ssize_t), 184 *GetImageOption(const ImageInfo *,const char *); 185 186 extern MagickExport MagickBooleanType 187 CloneImageOptions(ImageInfo *,const ImageInfo *), 188 DefineImageOption(ImageInfo *,const char *), 189 DeleteImageOption(ImageInfo *,const char *), 190 IsCommandOption(const char *), 191 IsOptionMember(const char *,const char *), 192 ListCommandOptions(FILE *,const CommandOption,ExceptionInfo *), 193 SetImageOption(ImageInfo *,const char *,const char *); 194 195 extern MagickExport ssize_t 196 GetCommandOptionFlags(const CommandOption,const MagickBooleanType, 197 const char *), 198 ParseChannelOption(const char *), 199 ParsePixelChannelOption(const char *), 200 ParseCommandOption(const CommandOption,const MagickBooleanType,const char *); 201 202 extern MagickExport void 203 DestroyImageOptions(ImageInfo *), 204 ResetImageOptions(const ImageInfo *), 205 ResetImageOptionIterator(const ImageInfo *); 206 207 extern MagickExport const OptionInfo 208 *GetCommandOptionInfo(const char *value); 209 210 #if defined(__cplusplus) || defined(c_plusplus) 211 } 212 #endif 213 214 #endif 215