]> granicus.if.org Git - imagemagick/blob - MagickCore/option.h
https://github.com/ImageMagick/ImageMagick/issues/1681
[imagemagick] / MagickCore / option.h
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