Home | History | Annotate | Download | only in MagickCore
      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
    215