1 /* 2 Copyright 1999-2021 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 MagickIlluminantOptions 109 } CommandOption; 110 111 typedef enum 112 { 113 UndefinedValidate, 114 NoValidate = 0x00000, 115 ColorspaceValidate = 0x00001, 116 CompareValidate = 0x00002, 117 CompositeValidate = 0x00004, 118 ConvertValidate = 0x00008, 119 FormatsDiskValidate = 0x00010, 120 FormatsMapValidate = 0x00020, 121 FormatsMemoryValidate = 0x00040, 122 IdentifyValidate = 0x00080, 123 ImportExportValidate = 0x00100, 124 MontageValidate = 0x00200, 125 StreamValidate = 0x00400, 126 AllValidate = 0x7fffffff 127 } ValidateType; 128 129 /* 130 Flags to describe classes of image processing options. 131 These are used to determine how a option should be processed, and 132 avoid attempting to process all options in every way posible. 133 */ 134 typedef enum 135 { 136 UndefinedOptionFlag = 0x0000, /* option flag is not in use */ 137 138 ImageInfoOptionFlag = 0x0001, /* Setting stored in ImageInfo */ 139 DrawInfoOptionFlag = 0x0002, /* Setting stored in DrawInfo */ 140 QuantizeInfoOptionFlag = 0x0004, /* Setting stored in QuantizeInfo */ 141 GlobalOptionFlag = 0x0008, /* Global Setting or Control */ 142 SettingOptionFlags = 0x000F, /* mask any setting option */ 143 144 NoImageOperatorFlag = 0x0010, /* Images not required operator */ 145 SimpleOperatorFlag = 0x0020, /* Simple Image processing operator */ 146 ListOperatorFlag = 0x0040, /* Multi-Image processing operator */ 147 GenesisOptionFlag = 0x0080, /* MagickCommandGenesis() Only Option */ 148 149 SpecialOptionFlag = 0x0100, /* Operator with Special Requirements */ 150 /* EG: for specific CLI commands */ 151 152 AlwaysInterpretArgsFlag = 0x0400, /* Always Interpret escapes in Args */ 153 /* CF: "convert" compatibility mode */ 154 NeverInterpretArgsFlag = 0x0800, /* Never Interpret escapes in Args */ 155 /* EG: filename, or delayed escapes */ 156 157 NonMagickOptionFlag = 0x1000, /* Option not used by Magick Command */ 158 FireOptionFlag = 0x2000, /* Convert operation seq firing point */ 159 DeprecateOptionFlag = 0x4000, /* Deprecate option (no code) */ 160 ReplacedOptionFlag = 0x8800 /* Replaced Option (but still works) */ 161 162 } CommandOptionFlags; 163 164 typedef struct _OptionInfo 165 { 166 const char 167 *mnemonic; 168 169 ssize_t 170 type, 171 flags; 172 173 MagickBooleanType 174 stealth; 175 } OptionInfo; 176 177 178 extern MagickExport char 179 **GetCommandOptions(const CommandOption), 180 *GetNextImageOption(const ImageInfo *), 181 *RemoveImageOption(ImageInfo *,const char *); 182 183 extern MagickExport const char 184 *CommandOptionToMnemonic(const CommandOption,const ssize_t), 185 *GetImageOption(const ImageInfo *,const char *); 186 187 extern MagickExport MagickBooleanType 188 CloneImageOptions(ImageInfo *,const ImageInfo *), 189 DefineImageOption(ImageInfo *,const char *), 190 DeleteImageOption(ImageInfo *,const char *), 191 IsCommandOption(const char *), 192 IsOptionMember(const char *,const char *), 193 ListCommandOptions(FILE *,const CommandOption,ExceptionInfo *), 194 SetImageOption(ImageInfo *,const char *,const char *); 195 196 extern MagickExport ssize_t 197 GetCommandOptionFlags(const CommandOption,const MagickBooleanType, 198 const char *), 199 ParseChannelOption(const char *), 200 ParsePixelChannelOption(const char *), 201 ParseCommandOption(const CommandOption,const MagickBooleanType,const char *); 202 203 extern MagickExport void 204 DestroyImageOptions(ImageInfo *), 205 ResetImageOptions(const ImageInfo *), 206 ResetImageOptionIterator(const ImageInfo *); 207 208 extern MagickExport const OptionInfo 209 *GetCommandOptionInfo(const char *value); 210 211 #if defined(__cplusplus) || defined(c_plusplus) 212 } 213 #endif 214 215 #endif 216