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