You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
4.8 KiB
141 lines
4.8 KiB
4 months ago
|
/*
|
||
|
Copyright 1999-2021 ImageMagick Studio LLC, a non-profit organization
|
||
|
dedicated to making software imaging solutions freely available.
|
||
|
|
||
|
You may not use this file except in compliance with the License. You may
|
||
|
obtain a copy of the License at
|
||
|
|
||
|
https://imagemagick.org/script/license.php
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing, software
|
||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
See the License for the specific language governing permissions and
|
||
|
limitations under the License.
|
||
|
|
||
|
ImageMagick pixel wand API.
|
||
|
*/
|
||
|
#ifndef MAGICKWAND_WANDCLI_PRIVATE_H
|
||
|
#define MAGICKWAND_WANDCLI_PRIVATE_H
|
||
|
|
||
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
#define CLIWandException(severity,tag,option) \
|
||
|
(void) CLIThrowException(cli_wand,GetMagickModule(),severity,tag, \
|
||
|
"`%s'",option)
|
||
|
|
||
|
#define CLIWandExceptionArg(severity,tag,option,arg) \
|
||
|
(void) CLIThrowException(cli_wand,GetMagickModule(),severity,tag, \
|
||
|
"'%s' '%s'",option, arg)
|
||
|
|
||
|
#define CLIWandWarnReplaced(message) \
|
||
|
if ( (cli_wand->process_flags & ProcessWarnDeprecated) != 0 ) \
|
||
|
(void) CLIThrowException(cli_wand,GetMagickModule(),OptionWarning, \
|
||
|
"ReplacedOption", "'%s', use \"%s\"",option,message)
|
||
|
|
||
|
#define CLIWandExceptionFile(severity,tag,context) \
|
||
|
{ char *message=GetExceptionMessage(errno); \
|
||
|
(void) CLIThrowException(cli_wand,GetMagickModule(),severity,tag, \
|
||
|
"'%s': %s",context,message); \
|
||
|
message=DestroyString(message); \
|
||
|
}
|
||
|
|
||
|
#define CLIWandExceptionBreak(severity,tag,option) \
|
||
|
{ CLIWandException(severity,tag,option); break; }
|
||
|
|
||
|
#define CLIWandExceptionReturn(severity,tag,option) \
|
||
|
{ CLIWandException(severity,tag,option); return; }
|
||
|
|
||
|
#define CLIWandExceptArgBreak(severity,tag,option,arg) \
|
||
|
{ CLIWandExceptionArg(severity,tag,option,arg); break; }
|
||
|
|
||
|
#define CLIWandExceptArgReturn(severity,tag,option,arg) \
|
||
|
{ CLIWandExceptionArg(severity,tag,option,arg); return; }
|
||
|
|
||
|
|
||
|
|
||
|
/* Define how options should be processed */
|
||
|
typedef enum
|
||
|
{
|
||
|
/* General Option Handling */
|
||
|
ProcessImplictRead = 0x0001, /* Non-options are image reads.
|
||
|
If not set then skip implied read
|
||
|
without producing an error.
|
||
|
For use with "mogrify" handling */
|
||
|
ProcessInterpretProperities = 0x0010, /* allow general escapes in args */
|
||
|
|
||
|
/* Special Option Handling */
|
||
|
ProcessExitOption = 0x0100, /* allow '-exit' use */
|
||
|
ProcessScriptOption = 0x0200, /* allow '-script' use */
|
||
|
ProcessReadOption = 0x0400, /* allow '-read' use */
|
||
|
ProcessWarnDeprecated = 0x0800, /* warn about deprecated options */
|
||
|
|
||
|
/* Option Processing Flags */
|
||
|
ProcessOneOptionOnly = 0x4000, /* Process one option only */
|
||
|
ProcessImplictWrite = 0x8000, /* Last arg is an implict write */
|
||
|
|
||
|
/* Flag Groups for specific Situations */
|
||
|
MagickCommandOptionFlags = 0x8FFF, /* Magick Command Flags */
|
||
|
ConvertCommandOptionFlags = 0x800F, /* Convert Command Flags */
|
||
|
MagickScriptArgsFlags = 0x000F, /* Script CLI Process Args Flags */
|
||
|
} ProcessOptionFlags;
|
||
|
|
||
|
|
||
|
/* Define a generic stack linked list, for pushing and popping
|
||
|
user defined ImageInfo settings, and Image lists.
|
||
|
See '(' ')' and '-clone' CLI options.
|
||
|
*/
|
||
|
typedef struct _Stack
|
||
|
{
|
||
|
struct _Stack *next;
|
||
|
void *data;
|
||
|
} Stack;
|
||
|
|
||
|
/* Note this defines an extension to the normal MagickWand
|
||
|
Which adds extra elements specific to the Shell API interface
|
||
|
while still allowing the Wand to be passed to MagickWand API
|
||
|
for specific operations.
|
||
|
*/
|
||
|
struct _MagickCLI /* CLI interface version of MagickWand */
|
||
|
{
|
||
|
struct _MagickWand /* This must be the first structure */
|
||
|
wand; /* The Image List and Global Option Settings */
|
||
|
|
||
|
QuantizeInfo
|
||
|
*quantize_info; /* for CLI API usage, not used by MagickWand API */
|
||
|
|
||
|
DrawInfo
|
||
|
*draw_info; /* for CLI API usage, not used by MagickWand API */
|
||
|
|
||
|
ProcessOptionFlags
|
||
|
process_flags; /* When handling CLI, what options do we process? */
|
||
|
|
||
|
const OptionInfo
|
||
|
*command; /* The option entry that is being processed */
|
||
|
|
||
|
Stack
|
||
|
*image_list_stack, /* Stacks of Image Lists and Image Info settings */
|
||
|
*image_info_stack;
|
||
|
|
||
|
const char /* Location of option being processed for exception */
|
||
|
*location, /* location format string for exception reports */
|
||
|
*filename; /* "CLI", "unknown", or the script filename */
|
||
|
|
||
|
size_t
|
||
|
line, /* location of current option from source */
|
||
|
column; /* note: line also used for cli argument count */
|
||
|
|
||
|
size_t
|
||
|
signature;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|