blob: 33acc63139bdc61c17f9141de8c50ee7d47dbe62 [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,
cristy3ed852e2009-09-05 21:47:34 +000040 MagickComposeOptions,
41 MagickCompressOptions,
42 MagickConfigureOptions,
43 MagickDataTypeOptions,
44 MagickDebugOptions,
45 MagickDecorateOptions,
46 MagickDelegateOptions,
cristyc9b12952010-03-28 01:12:28 +000047 MagickDirectionOptions,
cristy3ed852e2009-09-05 21:47:34 +000048 MagickDisposeOptions,
49 MagickDistortOptions,
50 MagickDitherOptions,
51 MagickEndianOptions,
52 MagickEvaluateOptions,
53 MagickFillRuleOptions,
54 MagickFilterOptions,
55 MagickFontOptions,
56 MagickFontsOptions,
57 MagickFormatOptions,
58 MagickFunctionOptions,
59 MagickGravityOptions,
cristy13609b42013-10-30 21:36:37 +000060 MagickIntensityOptions,
cristy3ed852e2009-09-05 21:47:34 +000061 MagickIntentOptions,
62 MagickInterlaceOptions,
63 MagickInterpolateOptions,
anthony29188a82010-01-22 10:12:34 +000064 MagickKernelOptions,
cristy3ed852e2009-09-05 21:47:34 +000065 MagickLayerOptions,
66 MagickLineCapOptions,
67 MagickLineJoinOptions,
68 MagickListOptions,
69 MagickLocaleOptions,
70 MagickLogEventOptions,
71 MagickLogOptions,
72 MagickMagicOptions,
73 MagickMethodOptions,
74 MagickMetricOptions,
75 MagickMimeOptions,
76 MagickModeOptions,
77 MagickModuleOptions,
anthony29188a82010-01-22 10:12:34 +000078 MagickMorphologyOptions,
cristy3ed852e2009-09-05 21:47:34 +000079 MagickNoiseOptions,
80 MagickOrientationOptions,
cristy6dcb9b82011-10-23 23:21:25 +000081 MagickPixelChannelOptions,
cristyac73d1f2013-03-12 00:51:09 +000082 MagickPixelIntensityOptions,
cristy18fd4432013-03-22 01:26:09 +000083 MagickPixelMaskOptions,
cristy6dcb9b82011-10-23 23:21:25 +000084 MagickPixelTraitOptions,
cristy3ed852e2009-09-05 21:47:34 +000085 MagickPolicyOptions,
86 MagickPolicyDomainOptions,
87 MagickPolicyRightsOptions,
88 MagickPreviewOptions,
89 MagickPrimitiveOptions,
90 MagickQuantumFormatOptions,
91 MagickResolutionOptions,
92 MagickResourceOptions,
93 MagickSparseColorOptions,
cristy0834d642011-03-18 18:26:08 +000094 MagickStatisticOptions,
cristy3ed852e2009-09-05 21:47:34 +000095 MagickStorageOptions,
96 MagickStretchOptions,
97 MagickStyleOptions,
98 MagickThresholdOptions,
99 MagickTypeOptions,
100 MagickValidateOptions,
anthony29188a82010-01-22 10:12:34 +0000101 MagickVirtualPixelOptions
cristy042ee782011-04-22 18:48:30 +0000102} CommandOption;
cristy3ed852e2009-09-05 21:47:34 +0000103
104typedef enum
105{
106 UndefinedValidate,
107 NoValidate = 0x00000,
cristy80e870e2013-05-07 12:23:02 +0000108 ColorspaceValidate = 0x00001,
109 CompareValidate = 0x00002,
110 CompositeValidate = 0x00004,
111 ConvertValidate = 0x00008,
cristy247eebde2013-06-13 01:01:43 +0000112 FormatsDiskValidate = 0x00010,
113 FormatsMapValidate = 0x00020,
114 FormatsMemoryValidate = 0x00040,
115 IdentifyValidate = 0x00080,
116 ImportExportValidate = 0x00100,
117 MontageValidate = 0x00200,
118 StreamValidate = 0x00400,
cristy3ed852e2009-09-05 21:47:34 +0000119 AllValidate = 0x7fffffff
120} ValidateType;
121
cristy042ee782011-04-22 18:48:30 +0000122/*
123 Flags to describe classes of image processing options.
anthonyfd706f92012-01-19 04:22:02 +0000124 These are used to determine how a option should be processed, and
anthonya322a832013-04-27 06:28:03 +0000125 avoid attempting to process all options in every way posible.
cristy042ee782011-04-22 18:48:30 +0000126*/
anthonyce2716b2011-04-22 09:51:34 +0000127typedef enum
128{
anthonyfd706f92012-01-19 04:22:02 +0000129 UndefinedOptionFlag = 0x0000, /* option flag is not in use */
130
anthony3ae42932012-04-16 13:59:49 +0000131 ImageInfoOptionFlag = 0x0001, /* Setting stored in ImageInfo */
132 DrawInfoOptionFlag = 0x0002, /* Setting stored in DrawInfo */
133 QuantizeInfoOptionFlag = 0x0004, /* Setting stored in QuantizeInfo */
anthony22de2722012-04-19 14:43:00 +0000134 GlobalOptionFlag = 0x0008, /* Global Setting or Control */
anthony964d28e2012-05-17 23:39:46 +0000135 SettingOptionFlags = 0x000F, /* mask any setting option */
anthonyfd706f92012-01-19 04:22:02 +0000136
anthony464f1c42012-04-22 08:51:01 +0000137 NoImageOperatorFlag = 0x0010, /* Images not required operator */
138 SimpleOperatorFlag = 0x0020, /* Simple Image processing operator */
139 ListOperatorFlag = 0x0040, /* Multi-Image processing operator */
anthonybcdb0202012-04-12 11:54:26 +0000140 GenesisOptionFlag = 0x0080, /* MagickCommandGenesis() Only Option */
anthonyfd706f92012-01-19 04:22:02 +0000141
anthony464f1c42012-04-22 08:51:01 +0000142 SpecialOptionFlag = 0x0100, /* Operator with Special Requirements */
143 /* EG: for specific CLI commands */
anthony8226e722012-04-05 14:25:46 +0000144
anthony964d28e2012-05-17 23:39:46 +0000145 AlwaysInterpretArgsFlag = 0x0400, /* Always Interpret escapes in Args */
anthony4837ac22012-05-18 23:39:48 +0000146 /* CF: "convert" compatibility mode */
anthony964d28e2012-05-17 23:39:46 +0000147 NeverInterpretArgsFlag = 0x0800, /* Never Interpret escapes in Args */
anthonya322a832013-04-27 06:28:03 +0000148 /* EG: filename, or delayed escapes */
anthony964d28e2012-05-17 23:39:46 +0000149
anthony668f43a2012-02-20 14:55:32 +0000150 NonMagickOptionFlag = 0x1000, /* Option not used by Magick Command */
anthony975a8d72012-04-12 13:54:36 +0000151 FireOptionFlag = 0x2000, /* Convert operation seq firing point */
152 DeprecateOptionFlag = 0x4000, /* Deprecate option (no code) */
anthony4837ac22012-05-18 23:39:48 +0000153 ReplacedOptionFlag = 0x8800 /* Replaced Option (but still works) */
anthonyaf2746d2012-01-16 00:16:10 +0000154
anthonyce2716b2011-04-22 09:51:34 +0000155} CommandOptionFlags;
156
anthony464f1c42012-04-22 08:51:01 +0000157typedef struct _OptionInfo
158{
159 const char
160 *mnemonic;
161
162 ssize_t
163 type,
164 flags;
165
166 MagickBooleanType
167 stealth;
168} OptionInfo;
169
anthonyfd706f92012-01-19 04:22:02 +0000170
cristy3ed852e2009-09-05 21:47:34 +0000171extern MagickExport char
cristy042ee782011-04-22 18:48:30 +0000172 **GetCommandOptions(const CommandOption),
cristy3ed852e2009-09-05 21:47:34 +0000173 *GetNextImageOption(const ImageInfo *),
174 *RemoveImageOption(ImageInfo *,const char *);
175
176extern MagickExport const char
cristy042ee782011-04-22 18:48:30 +0000177 *CommandOptionToMnemonic(const CommandOption,const ssize_t),
178 *GetImageOption(const ImageInfo *,const char *);
cristy3ed852e2009-09-05 21:47:34 +0000179
cristy3ed852e2009-09-05 21:47:34 +0000180extern MagickExport MagickBooleanType
181 CloneImageOptions(ImageInfo *,const ImageInfo *),
182 DefineImageOption(ImageInfo *,const char *),
183 DeleteImageOption(ImageInfo *,const char *),
cristy042ee782011-04-22 18:48:30 +0000184 IsCommandOption(const char *),
cristy0f975d12014-06-25 18:44:04 +0000185 IsOptionMember(const char *,const char *),
cristy042ee782011-04-22 18:48:30 +0000186 ListCommandOptions(FILE *,const CommandOption,ExceptionInfo *),
cristy3ed852e2009-09-05 21:47:34 +0000187 SetImageOption(ImageInfo *,const char *,const char *);
188
cristy5ed838e2010-05-31 00:05:35 +0000189extern MagickExport ssize_t
cristy042ee782011-04-22 18:48:30 +0000190 GetCommandOptionFlags(const CommandOption,const MagickBooleanType,
191 const char *),
cristy5ed838e2010-05-31 00:05:35 +0000192 ParseChannelOption(const char *),
cristy953c4bd2012-02-24 01:04:04 +0000193 ParsePixelChannelOption(const char *),
cristy042ee782011-04-22 18:48:30 +0000194 ParseCommandOption(const CommandOption,const MagickBooleanType,const char *);
cristy5ed838e2010-05-31 00:05:35 +0000195
cristy3ed852e2009-09-05 21:47:34 +0000196extern MagickExport void
197 DestroyImageOptions(ImageInfo *),
198 ResetImageOptions(const ImageInfo *),
199 ResetImageOptionIterator(const ImageInfo *);
200
anthony32d85bf2012-02-15 14:54:59 +0000201extern MagickExport const OptionInfo
202 *GetCommandOptionInfo(const char *value);
203
cristy3ed852e2009-09-05 21:47:34 +0000204#if defined(__cplusplus) || defined(c_plusplus)
205}
206#endif
207
208#endif