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