blob: 764fa7dad7f48ce4abe7bfae37ea57fdde040204 [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
cristyb56bb242014-11-25 17:12:48 +00002 Copyright 1999-2015 ImageMagick Studio LLC, a non-profit organization
cristy3ed852e2009-09-05 21:47:34 +00003 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 http://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)
22extern "C" {
23#endif
24
25typedef enum
26{
27 MagickUndefinedOptions = -1,
28 MagickAlignOptions = 0,
cristy288a3532012-08-28 00:19:44 +000029 MagickAlphaChannelOptions,
cristy3ed852e2009-09-05 21:47:34 +000030 MagickBooleanOptions,
cristy947cef22013-01-17 14:16:40 +000031 MagickCacheOptions,
cristy3ed852e2009-09-05 21:47:34 +000032 MagickChannelOptions,
33 MagickClassOptions,
34 MagickClipPathOptions,
35 MagickCoderOptions,
36 MagickColorOptions,
37 MagickColorspaceOptions,
38 MagickCommandOptions,
cristy790190d2013-10-04 00:51:51 +000039 MagickComplexOptions,
Cristy14010442015-08-15 11:05:42 -040040 MagickComplianceOptions,
cristy3ed852e2009-09-05 21:47:34 +000041 MagickComposeOptions,
42 MagickCompressOptions,
43 MagickConfigureOptions,
44 MagickDataTypeOptions,
45 MagickDebugOptions,
46 MagickDecorateOptions,
47 MagickDelegateOptions,
cristyc9b12952010-03-28 01:12:28 +000048 MagickDirectionOptions,
cristy3ed852e2009-09-05 21:47:34 +000049 MagickDisposeOptions,
50 MagickDistortOptions,
51 MagickDitherOptions,
52 MagickEndianOptions,
53 MagickEvaluateOptions,
54 MagickFillRuleOptions,
55 MagickFilterOptions,
56 MagickFontOptions,
57 MagickFontsOptions,
58 MagickFormatOptions,
59 MagickFunctionOptions,
dirk84c7c042015-07-12 13:01:35 +000060 MagickGradientOptions,
cristy3ed852e2009-09-05 21:47:34 +000061 MagickGravityOptions,
cristy13609b42013-10-30 21:36:37 +000062 MagickIntensityOptions,
cristy3ed852e2009-09-05 21:47:34 +000063 MagickIntentOptions,
64 MagickInterlaceOptions,
65 MagickInterpolateOptions,
anthony29188a82010-01-22 10:12:34 +000066 MagickKernelOptions,
cristy3ed852e2009-09-05 21:47:34 +000067 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,
anthony29188a82010-01-22 10:12:34 +000080 MagickMorphologyOptions,
cristy3ed852e2009-09-05 21:47:34 +000081 MagickNoiseOptions,
82 MagickOrientationOptions,
cristy6dcb9b82011-10-23 23:21:25 +000083 MagickPixelChannelOptions,
cristyac73d1f2013-03-12 00:51:09 +000084 MagickPixelIntensityOptions,
cristy18fd4432013-03-22 01:26:09 +000085 MagickPixelMaskOptions,
cristy6dcb9b82011-10-23 23:21:25 +000086 MagickPixelTraitOptions,
cristy3ed852e2009-09-05 21:47:34 +000087 MagickPolicyOptions,
88 MagickPolicyDomainOptions,
89 MagickPolicyRightsOptions,
90 MagickPreviewOptions,
91 MagickPrimitiveOptions,
92 MagickQuantumFormatOptions,
93 MagickResolutionOptions,
94 MagickResourceOptions,
95 MagickSparseColorOptions,
cristy0834d642011-03-18 18:26:08 +000096 MagickStatisticOptions,
cristy3ed852e2009-09-05 21:47:34 +000097 MagickStorageOptions,
98 MagickStretchOptions,
99 MagickStyleOptions,
100 MagickThresholdOptions,
101 MagickTypeOptions,
102 MagickValidateOptions,
dirk5acf7022015-07-30 18:37:03 +0000103 MagickVirtualPixelOptions,
104 MagickWeightOptions
cristy042ee782011-04-22 18:48:30 +0000105} CommandOption;
cristy3ed852e2009-09-05 21:47:34 +0000106
107typedef enum
108{
109 UndefinedValidate,
110 NoValidate = 0x00000,
cristy80e870e2013-05-07 12:23:02 +0000111 ColorspaceValidate = 0x00001,
112 CompareValidate = 0x00002,
113 CompositeValidate = 0x00004,
114 ConvertValidate = 0x00008,
cristy247eebde2013-06-13 01:01:43 +0000115 FormatsDiskValidate = 0x00010,
116 FormatsMapValidate = 0x00020,
117 FormatsMemoryValidate = 0x00040,
118 IdentifyValidate = 0x00080,
119 ImportExportValidate = 0x00100,
120 MontageValidate = 0x00200,
121 StreamValidate = 0x00400,
cristy3ed852e2009-09-05 21:47:34 +0000122 AllValidate = 0x7fffffff
123} ValidateType;
124
cristy042ee782011-04-22 18:48:30 +0000125/*
126 Flags to describe classes of image processing options.
anthonyfd706f92012-01-19 04:22:02 +0000127 These are used to determine how a option should be processed, and
anthonya322a832013-04-27 06:28:03 +0000128 avoid attempting to process all options in every way posible.
cristy042ee782011-04-22 18:48:30 +0000129*/
anthonyce2716b2011-04-22 09:51:34 +0000130typedef enum
131{
anthonyfd706f92012-01-19 04:22:02 +0000132 UndefinedOptionFlag = 0x0000, /* option flag is not in use */
133
anthony3ae42932012-04-16 13:59:49 +0000134 ImageInfoOptionFlag = 0x0001, /* Setting stored in ImageInfo */
135 DrawInfoOptionFlag = 0x0002, /* Setting stored in DrawInfo */
136 QuantizeInfoOptionFlag = 0x0004, /* Setting stored in QuantizeInfo */
anthony22de2722012-04-19 14:43:00 +0000137 GlobalOptionFlag = 0x0008, /* Global Setting or Control */
anthony964d28e2012-05-17 23:39:46 +0000138 SettingOptionFlags = 0x000F, /* mask any setting option */
anthonyfd706f92012-01-19 04:22:02 +0000139
anthony464f1c42012-04-22 08:51:01 +0000140 NoImageOperatorFlag = 0x0010, /* Images not required operator */
141 SimpleOperatorFlag = 0x0020, /* Simple Image processing operator */
142 ListOperatorFlag = 0x0040, /* Multi-Image processing operator */
anthonybcdb0202012-04-12 11:54:26 +0000143 GenesisOptionFlag = 0x0080, /* MagickCommandGenesis() Only Option */
anthonyfd706f92012-01-19 04:22:02 +0000144
anthony464f1c42012-04-22 08:51:01 +0000145 SpecialOptionFlag = 0x0100, /* Operator with Special Requirements */
146 /* EG: for specific CLI commands */
anthony8226e722012-04-05 14:25:46 +0000147
anthony964d28e2012-05-17 23:39:46 +0000148 AlwaysInterpretArgsFlag = 0x0400, /* Always Interpret escapes in Args */
anthony4837ac22012-05-18 23:39:48 +0000149 /* CF: "convert" compatibility mode */
anthony964d28e2012-05-17 23:39:46 +0000150 NeverInterpretArgsFlag = 0x0800, /* Never Interpret escapes in Args */
anthonya322a832013-04-27 06:28:03 +0000151 /* EG: filename, or delayed escapes */
anthony964d28e2012-05-17 23:39:46 +0000152
anthony668f43a2012-02-20 14:55:32 +0000153 NonMagickOptionFlag = 0x1000, /* Option not used by Magick Command */
anthony975a8d72012-04-12 13:54:36 +0000154 FireOptionFlag = 0x2000, /* Convert operation seq firing point */
155 DeprecateOptionFlag = 0x4000, /* Deprecate option (no code) */
anthony4837ac22012-05-18 23:39:48 +0000156 ReplacedOptionFlag = 0x8800 /* Replaced Option (but still works) */
anthonyaf2746d2012-01-16 00:16:10 +0000157
anthonyce2716b2011-04-22 09:51:34 +0000158} CommandOptionFlags;
159
anthony464f1c42012-04-22 08:51:01 +0000160typedef struct _OptionInfo
161{
162 const char
163 *mnemonic;
164
165 ssize_t
166 type,
167 flags;
168
169 MagickBooleanType
170 stealth;
171} OptionInfo;
172
anthonyfd706f92012-01-19 04:22:02 +0000173
cristy3ed852e2009-09-05 21:47:34 +0000174extern MagickExport char
cristy042ee782011-04-22 18:48:30 +0000175 **GetCommandOptions(const CommandOption),
cristy3ed852e2009-09-05 21:47:34 +0000176 *GetNextImageOption(const ImageInfo *),
177 *RemoveImageOption(ImageInfo *,const char *);
178
179extern MagickExport const char
cristy042ee782011-04-22 18:48:30 +0000180 *CommandOptionToMnemonic(const CommandOption,const ssize_t),
181 *GetImageOption(const ImageInfo *,const char *);
cristy3ed852e2009-09-05 21:47:34 +0000182
cristy3ed852e2009-09-05 21:47:34 +0000183extern MagickExport MagickBooleanType
184 CloneImageOptions(ImageInfo *,const ImageInfo *),
185 DefineImageOption(ImageInfo *,const char *),
186 DeleteImageOption(ImageInfo *,const char *),
cristy042ee782011-04-22 18:48:30 +0000187 IsCommandOption(const char *),
cristy0f975d12014-06-25 18:44:04 +0000188 IsOptionMember(const char *,const char *),
cristy042ee782011-04-22 18:48:30 +0000189 ListCommandOptions(FILE *,const CommandOption,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000190 SetImageOption(ImageInfo *,const char *,const char *);
191
cristy5ed838e2010-05-31 00:05:35 +0000192extern MagickExport ssize_t
cristy042ee782011-04-22 18:48:30 +0000193 GetCommandOptionFlags(const CommandOption,const MagickBooleanType,
194 const char *),
cristy5ed838e2010-05-31 00:05:35 +0000195 ParseChannelOption(const char *),
cristy953c4bd2012-02-24 01:04:04 +0000196 ParsePixelChannelOption(const char *),
cristy042ee782011-04-22 18:48:30 +0000197 ParseCommandOption(const CommandOption,const MagickBooleanType,const char *);
cristy5ed838e2010-05-31 00:05:35 +0000198
cristy3ed852e2009-09-05 21:47:34 +0000199extern MagickExport void
200 DestroyImageOptions(ImageInfo *),
201 ResetImageOptions(const ImageInfo *),
202 ResetImageOptionIterator(const ImageInfo *);
203
anthony32d85bf2012-02-15 14:54:59 +0000204extern MagickExport const OptionInfo
205 *GetCommandOptionInfo(const char *value);
206
cristy3ed852e2009-09-05 21:47:34 +0000207#if defined(__cplusplus) || defined(c_plusplus)
208}
209#endif
210
211#endif