% o exception: return any errors or warnings in this structure.
%
*/
-WandExport MagickBooleanType SettingsOptionInfo(ImageInfo *image_info,
+WandExport MagickBooleanType ApplySettingsOption(ImageInfo *image_info,
const int argc,const char **argv,ExceptionInfo *exception)
{
GeometryInfo
*image_info;
DrawInfo
- *draw_info
+ *draw_info;
+
+ const char
+ *option;
assert(wand != (MagickWand *) NULL);
assert(wand->signature == WandSignature);
if (argc < 0)
return(MagickTrue);
+ option=argv[0]+1;
image_info=wand->image_info;
draw_info=wand->_info;
- switch (*(argv[0]+1))
+#define DeleteOption (const char*)NULL
+#define IfSetOption ((*argv[0])=='-')
+
+ switch (*option)
{
case 'a':
{
- if (LocaleCompare("adjoin",argv[0]+1) == 0)
+ if (LocaleCompare("adjoin",option) == 0)
{
- image_info->adjoin=(*argv[0] == '-') ? MagickTrue : MagickFalse;
+ image_info->adjoin = IfSetOption ? MagickTrue : MagickFalse;
break;
}
- if (LocaleCompare("affine",argv[0]+1) == 0)
+ if (LocaleCompare("affine",option) == 0)
{
- if (*argv[0] == '+')
- GetAffineMatrix(draw_info->affine);
- else
+ if (IfSetOption)
(void) ParseAffineGeometry(argv[1],draw_info->affine,
exception);
+ else
+ GetAffineMatrix(draw_info->affine);
break;
}
- if (LocaleCompare("antialias",argv[0]+1) == 0)
+ if (LocaleCompare("antialias",option) == 0)
{
image_info->antialias =
draw_info->stroke_antialias =
draw_info->text_antialias =
- (*argv[0] == '-') ? MagickTrue : MagickFalse;
+ IfSetOption ? MagickTrue : MagickFalse;
break;
}
- if (LocaleCompare("attenuate",argv[0]+1) == 0)
+ if (LocaleCompare("attenuate",option) == 0)
{
- if (*argv[0] == '+')
- (void) DeleteImageOption(image_info,argv[0]+1);
- else
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? argv[1] : DeleteOption);
break;
}
- if (LocaleCompare("authenticate",argv[0]+1) == 0)
+ if (LocaleCompare("authenticate",option) == 0)
{
- if (*argv[0] == '+')
- (void) DeleteImageOption(image_info,argv[0]+1);
- else
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? argv[1] : DeleteOption);
break;
}
break;
}
case 'b':
{
- if (LocaleCompare("background",argv[0]+1) == 0)
+ if (LocaleCompare("background",option) == 0)
{
- if (*argv[0] == '+')
+ /* FUTURE: both image_info attribute & ImageOption in use!
+ Note that +background, means fall-back to image attribute
+ so ImageOption is deleted, not set to a default.
+ */
+ if (IfSetOption)
{
- (void) DeleteImageOption(image_info,argv[0]+1);
+ (void) DeleteImageOption(image_info,option);
(void) QueryColorCompliance(BackgroundColor,AllCompliance,
- &image_info->background_color,exception);
+ image_info->background_color,exception);
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
(void) QueryColorCompliance(argv[1],AllCompliance,
- &image_info->background_color,exception);
+ image_info->background_color,exception);
break;
}
- if (LocaleCompare("bias",argv[0]+1) == 0)
+ if (LocaleCompare("bias",option) == 0)
{
- if (*argv[0] == '+')
- {
- (void) SetImageOption(image_info,argv[0]+1,"0.0");
- break;
- }
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ /* FUTURE: bias OBSOLETED, replaced by "convolve:bias"
+ as it is actually rarely used except in direct convolve
+ Usage outside direct convolve is actally non-sensible!
+ */
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? argv[1] : "0");
break;
}
- if (LocaleCompare("black-point-compensation",argv[0]+1) == 0)
+ if (LocaleCompare("black-point-compensation",option) == 0)
{
- if (*argv[0] == '+')
- {
- (void) SetImageOption(image_info,argv[0]+1,"false");
- break;
- }
- (void) SetImageOption(image_info,argv[0]+1,"true");
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? "true" : "false" );
break;
}
- if (LocaleCompare("blue-primary",argv[0]+1) == 0)
+ if (LocaleCompare("blue-primary",option) == 0)
{
- if (*argv[0] == '+')
- {
- (void) SetImageOption(image_info,argv[0]+1,"0.0");
- break;
- }
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? argv[1] : "0" );
break;
}
- if (LocaleCompare("bordercolor",argv[0]+1) == 0)
+ if (LocaleCompare("bordercolor",option) == 0)
{
- if (*argv[0] == '+')
+ /* FUTURE: both image_info attribute & ImageOption in use! */
+ if (IfSetOption)
{
- (void) DeleteImageOption(image_info,argv[0]+1);
- (void) QueryColorCompliance(BorderColor,AllCompliance,
- &image_info->border_color,exception);
+ (void) SetImageOption(image_info,option,argv[1]);
+ (void) QueryColorCompliance(argv[1],AllCompliece,
+ &image_info->border_color,exception);
+ (void) QueryColorCompliance(argv[1],AllCompliance,
+ &draw_info->border_color,exception);
break;
}
- (void) QueryColorCompliance(argv[1],AllCompliece,&image_info->border_color,
- exception);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) DeleteImageOption(image_info,option);
+ (void) QueryColorCompliance(BorderColor,AllCompliance,
+ &image_info->border_color,exception);
+ (void) QueryColorCompliance(BorderColor,AllCompliance,
+ &draw_info->border_color,exception);
break;
}
- if (LocaleCompare("box",argv[0]+1) == 0)
+ if (LocaleCompare("box",option) == 0)
{
- if (*argv[0] == '+')
- {
- (void) SetImageOption(image_info,"undercolor","none");
- break;
- }
- (void) SetImageOption(image_info,"undercolor",argv[1]);
+ const char
+ *value = IfSetOption ? argv[1] : "none";
+ (void) SetImageOption(image_info,option,value);
+ (void) QueryColorCompliance(value,AllCompliance,
+ &draw_info->undercolor,exception);
break;
}
break;
}
case 'c':
{
- if (LocaleCompare("cache",argv[0]+1) == 0)
+ if (LocaleCompare("cache",option) == 0)
{
MagickSizeType
limit;
(void) SetMagickResourceLimit(MapResource,2*limit);
break;
}
- if (LocaleCompare("caption",argv[0]+1) == 0)
+ if (LocaleCompare("caption",option) == 0)
{
- if (*argv[0] == '+')
- {
- (void) DeleteImageOption(image_info,argv[0]+1);
- break;
- }
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,
+ IfSetOption ? argv[1] : DeleteOption);
break;
}
- if (LocaleCompare("channel",argv[0]+1) == 0)
+ if (LocaleCompare("channel",option) == 0)
{
- if (*argv[0] == '+')
- {
- image_info->channel=DefaultChannels;
- break;
- }
- image_info->channel=(ChannelType) ParseChannelOption(argv[1]);
+ image_info->channel=(ChannelType) (
+ IfSetOption ? ParseChannelOption(argv[1]) : DefaultChannels );
+ /* this is also a SimpleImageOperator ??? why ??? */
break;
}
- if (LocaleCompare("colors",argv[0]+1) == 0)
+ if (LocaleCompare("colors",option) == 0)
{
+ /* Why is this saved */
image_info->colors=StringToUnsignedLong(argv[1]);
break;
}
- if (LocaleCompare("colorspace",argv[0]+1) == 0)
+ if (LocaleCompare("colorspace",option) == 0)
{
if (*argv[0] == '+')
{
image_info->colorspace=UndefinedColorspace;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->colorspace=(ColorspaceType) ParseCommandOption(
MagickColorspaceOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("comment",argv[0]+1) == 0)
+ if (LocaleCompare("comment",option) == 0)
{
if (*argv[0] == '+')
{
- (void) DeleteImageOption(image_info,argv[0]+1);
+ (void) DeleteImageOption(image_info,option);
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("compose",argv[0]+1) == 0)
+ if (LocaleCompare("compose",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("compress",argv[0]+1) == 0)
+ if (LocaleCompare("compress",option) == 0)
{
if (*argv[0] == '+')
{
image_info->compression=UndefinedCompression;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->compression=(CompressionType) ParseCommandOption(
MagickCompressOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'd':
{
- if (LocaleCompare("debug",argv[0]+1) == 0)
+ if (LocaleCompare("debug",option) == 0)
{
if (*argv[0] == '+')
(void) SetLogEventMask("none");
image_info->debug=IsEventLogging();
break;
}
- if (LocaleCompare("define",argv[0]+1) == 0)
+ if (LocaleCompare("define",option) == 0)
{
if (*argv[0] == '+')
{
(void) DefineImageOption(image_info,argv[1]);
break;
}
- if (LocaleCompare("delay",argv[0]+1) == 0)
+ if (LocaleCompare("delay",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("density",argv[0]+1) == 0)
+ if (LocaleCompare("density",option) == 0)
{
/*
Set image density.
{
if (image_info->density != (char *) NULL)
image_info->density=DestroyString(image_info->density);
- (void) SetImageOption(image_info,argv[0]+1,"72");
+ (void) SetImageOption(image_info,option,"72");
break;
}
(void) CloneString(&image_info->density,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("depth",argv[0]+1) == 0)
+ if (LocaleCompare("depth",option) == 0)
{
if (*argv[0] == '+')
{
image_info->depth=StringToUnsignedLong(argv[1]);
break;
}
- if (LocaleCompare("direction",argv[0]+1) == 0)
+ if (LocaleCompare("direction",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("display",argv[0]+1) == 0)
+ if (LocaleCompare("display",option) == 0)
{
if (*argv[0] == '+')
{
(void) CloneString(&image_info->server_name,argv[1]);
break;
}
- if (LocaleCompare("dispose",argv[0]+1) == 0)
+ if (LocaleCompare("dispose",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("dither",argv[0]+1) == 0)
+ if (LocaleCompare("dither",option) == 0)
{
if (*argv[0] == '+')
{
image_info->dither=MagickFalse;
- (void) SetImageOption(image_info,argv[0]+1,"none");
+ (void) SetImageOption(image_info,option,"none");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
image_info->dither=MagickTrue;
break;
}
}
case 'e':
{
- if (LocaleCompare("encoding",argv[0]+1) == 0)
+ if (LocaleCompare("encoding",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("endian",argv[0]+1) == 0)
+ if (LocaleCompare("endian",option) == 0)
{
if (*argv[0] == '+')
{
image_info->endian=UndefinedEndian;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->endian=(EndianType) ParseCommandOption(
MagickEndianOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("extract",argv[0]+1) == 0)
+ if (LocaleCompare("extract",option) == 0)
{
/*
Set image extract geometry.
}
case 'f':
{
- if (LocaleCompare("fill",argv[0]+1) == 0)
+ if (LocaleCompare("fill",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"none");
+ (void) SetImageOption(image_info,option,"none");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("filter",argv[0]+1) == 0)
+ if (LocaleCompare("filter",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("font",argv[0]+1) == 0)
+ if (LocaleCompare("font",option) == 0)
{
if (*argv[0] == '+')
{
(void) CloneString(&image_info->font,argv[1]);
break;
}
- if (LocaleCompare("format",argv[0]+1) == 0)
+ if (LocaleCompare("format",option) == 0)
{
register const char
*q;
for (q=strchr(argv[1],'%'); q != (char *) NULL; q=strchr(q+1,'%'))
if (strchr("Agkrz@[#",*(q+1)) != (char *) NULL)
image_info->ping=MagickFalse;
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("fuzz",argv[0]+1) == 0)
+ if (LocaleCompare("fuzz",option) == 0)
{
if (*argv[0] == '+')
{
image_info->fuzz=0.0;
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
image_info->fuzz=SiPrefixToDouble(argv[1],(double) QuantumRange+
1.0);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'g':
{
- if (LocaleCompare("gravity",argv[0]+1) == 0)
+ if (LocaleCompare("gravity",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("green-primary",argv[0]+1) == 0)
+ if (LocaleCompare("green-primary",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0.0");
+ (void) SetImageOption(image_info,option,"0.0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'i':
{
- if (LocaleCompare("intent",argv[0]+1) == 0)
+ if (LocaleCompare("intent",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("interlace",argv[0]+1) == 0)
+ if (LocaleCompare("interlace",option) == 0)
{
if (*argv[0] == '+')
{
image_info->interlace=UndefinedInterlace;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->interlace=(InterlaceType) ParseCommandOption(
MagickInterlaceOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("interline-spacing",argv[0]+1) == 0)
+ if (LocaleCompare("interline-spacing",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("interpolate",argv[0]+1) == 0)
+ if (LocaleCompare("interpolate",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("interword-spacing",argv[0]+1) == 0)
+ if (LocaleCompare("interword-spacing",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'k':
{
- if (LocaleCompare("kerning",argv[0]+1) == 0)
+ if (LocaleCompare("kerning",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'l':
{
- if (LocaleCompare("label",argv[0]+1) == 0)
+ if (LocaleCompare("label",option) == 0)
{
if (*argv[0] == '+')
{
- (void) DeleteImageOption(image_info,argv[0]+1);
+ (void) DeleteImageOption(image_info,option);
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("limit",argv[0]+1) == 0)
+ if (LocaleCompare("limit",option) == 0)
{
MagickSizeType
limit;
(void) SetMagickResourceLimit(type,limit);
break;
}
- if (LocaleCompare("list",argv[0]+1) == 0)
+ if (LocaleCompare("list",option) == 0)
{
ssize_t
list;
}
break;
}
- if (LocaleCompare("log",argv[0]+1) == 0)
+ if (LocaleCompare("log",option) == 0)
{
if (*argv[0] == '+')
break;
(void) SetLogFormat(argv[1]);
break;
}
- if (LocaleCompare("loop",argv[0]+1) == 0)
+ if (LocaleCompare("loop",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'm':
{
- if (LocaleCompare("matte",argv[0]+1) == 0)
+ if (LocaleCompare("matte",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"false");
+ (void) SetImageOption(image_info,option,"false");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,"true");
+ (void) SetImageOption(image_info,option,"true");
break;
}
- if (LocaleCompare("mattecolor",argv[0]+1) == 0)
+ if (LocaleCompare("mattecolor",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
(void) QueryColorCompliance(MatteColor,AllCompliance,
&image_info->matte_color,exception);
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
(void) QueryColorCompliance(argv[1],AllCompliance,&image_info->matte_color,
exception);
break;
}
- if (LocaleCompare("monitor",argv[0]+1) == 0)
+ if (LocaleCompare("monitor",option) == 0)
{
(void) SetImageInfoProgressMonitor(image_info,MonitorProgress,
(void *) NULL);
break;
}
- if (LocaleCompare("monochrome",argv[0]+1) == 0)
+ if (LocaleCompare("monochrome",option) == 0)
{
image_info->monochrome=(*argv[0] == '-') ? MagickTrue : MagickFalse;
break;
}
case 'o':
{
- if (LocaleCompare("orient",argv[0]+1) == 0)
+ if (LocaleCompare("orient",option) == 0)
{
if (*argv[0] == '+')
{
image_info->orientation=UndefinedOrientation;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->orientation=(OrientationType) ParseCommandOption(
MagickOrientationOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
}
case 'p':
{
- if (LocaleCompare("page",argv[0]+1) == 0)
+ if (LocaleCompare("page",option) == 0)
{
char
*canonical_page,
if (*argv[0] == '+')
{
- (void) DeleteImageOption(image_info,argv[0]+1);
+ (void) DeleteImageOption(image_info,option);
(void) CloneString(&image_info->page,(char *) NULL);
break;
}
(void) FormatLocaleString(page,MaxTextExtent,"%lux%lu%+ld%+ld",
(unsigned long) geometry.width,(unsigned long) geometry.height,
(long) geometry.x,(long) geometry.y);
- (void) SetImageOption(image_info,argv[0]+1,page);
+ (void) SetImageOption(image_info,option,page);
(void) CloneString(&image_info->page,page);
break;
}
- if (LocaleCompare("pen",argv[0]+1) == 0)
+ if (LocaleCompare("pen",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"none");
+ (void) SetImageOption(image_info,option,"none");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("ping",argv[0]+1) == 0)
+ if (LocaleCompare("ping",option) == 0)
{
image_info->ping=(*argv[0] == '-') ? MagickTrue : MagickFalse;
break;
}
- if (LocaleCompare("pointsize",argv[0]+1) == 0)
+ if (LocaleCompare("pointsize",option) == 0)
{
if (*argv[0] == '+')
geometry_info.rho=0.0;
image_info->pointsize=geometry_info.rho;
break;
}
- if (LocaleCompare("precision",argv[0]+1) == 0)
+ if (LocaleCompare("precision",option) == 0)
{
(void) SetMagickPrecision(StringToInteger(argv[1]));
break;
}
- if (LocaleCompare("preview",argv[0]+1) == 0)
+ if (LocaleCompare("preview",option) == 0)
{
/*
Preview image.
}
case 'q':
{
- if (LocaleCompare("quality",argv[0]+1) == 0)
+ if (LocaleCompare("quality",option) == 0)
{
/*
Set image compression quality.
if (*argv[0] == '+')
{
image_info->quality=UndefinedCompressionQuality;
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
image_info->quality=StringToUnsignedLong(argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("quiet",argv[0]+1) == 0)
+ if (LocaleCompare("quiet",option) == 0)
{
static WarningHandler
warning_handler = (WarningHandler) NULL;
}
case 'r':
{
- if (LocaleCompare("red-primary",argv[0]+1) == 0)
+ if (LocaleCompare("red-primary",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0.0");
+ (void) SetImageOption(image_info,option,"0.0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 's':
{
- if (LocaleCompare("sampling-factor",argv[0]+1) == 0)
+ if (LocaleCompare("sampling-factor",option) == 0)
{
/*
Set image sampling factor.
(void) CloneString(&image_info->sampling_factor,argv[1]);
break;
}
- if (LocaleCompare("scene",argv[0]+1) == 0)
+ if (LocaleCompare("scene",option) == 0)
{
/*
Set image scene.
if (*argv[0] == '+')
{
image_info->scene=0;
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
image_info->scene=StringToUnsignedLong(argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("seed",argv[0]+1) == 0)
+ if (LocaleCompare("seed",option) == 0)
{
size_t
seed;
SeedPseudoRandomGenerator(seed);
break;
}
- if (LocaleCompare("size",argv[0]+1) == 0)
+ if (LocaleCompare("size",option) == 0)
{
+ /* FUTURE: convert to ImageOption
+ Look at special handling for "size" in SetImageOption()
+ */
if (*argv[0] == '+')
{
if (image_info->size != (char *) NULL)
(void) CloneString(&image_info->size,argv[1]);
break;
}
- if (LocaleCompare("stroke",argv[0]+1) == 0)
+ if (LocaleCompare("stroke",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"none");
+ (void) SetImageOption(image_info,option,"none");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("strokewidth",argv[0]+1) == 0)
+ if (LocaleCompare("strokewidth",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("synchronize",argv[0]+1) == 0)
+ if (LocaleCompare("synchronize",option) == 0)
{
if (*argv[0] == '+')
{
}
case 't':
{
- if (LocaleCompare("taint",argv[0]+1) == 0)
+ if (LocaleCompare("taint",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"false");
+ (void) SetImageOption(image_info,option,"false");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,"true");
+ (void) SetImageOption(image_info,option,"true");
break;
}
- if (LocaleCompare("texture",argv[0]+1) == 0)
+ if (LocaleCompare("texture",option) == 0)
{
if (*argv[0] == '+')
{
(void) CloneString(&image_info->texture,argv[1]);
break;
}
- if (LocaleCompare("tile-offset",argv[0]+1) == 0)
+ if (LocaleCompare("tile-offset",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0");
+ (void) SetImageOption(image_info,option,"0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("transparent-color",argv[0]+1) == 0)
+ if (LocaleCompare("transparent-color",option) == 0)
{
if (*argv[0] == '+')
{
(void) QueryColorCompliance("none",AllCompliance,
&image_info->transparent_color,exception);
- (void) SetImageOption(image_info,argv[0]+1,"none");
+ (void) SetImageOption(image_info,option,"none");
break;
}
(void) QueryColorCompliance("none",AllCompliance,
&image_info->transparent_color,exception);
exception);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("type",argv[0]+1) == 0)
+ if (LocaleCompare("type",option) == 0)
{
if (*argv[0] == '+')
{
image_info->type=UndefinedType;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->type=(ImageType) ParseCommandOption(MagickTypeOptions,
MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'u':
{
- if (LocaleCompare("undercolor",argv[0]+1) == 0)
+ if (LocaleCompare("undercolor",option) == 0)
{
if (*argv[0] == '+')
{
- (void) DeleteImageOption(image_info,argv[0]+1);
+ (void) DeleteImageOption(image_info,option);
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
- if (LocaleCompare("units",argv[0]+1) == 0)
+ if (LocaleCompare("units",option) == 0)
{
if (*argv[0] == '+')
{
image_info->units=UndefinedResolution;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->units=(ResolutionType) ParseCommandOption(
MagickResolutionOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'v':
{
- if (LocaleCompare("verbose",argv[0]+1) == 0)
+ if (LocaleCompare("verbose",option) == 0)
{
if (*argv[0] == '+')
{
image_info->ping=MagickFalse;
break;
}
- if (LocaleCompare("view",argv[0]+1) == 0)
+ if (LocaleCompare("view",option) == 0)
{
if (*argv[0] == '+')
{
(void) CloneString(&image_info->view,argv[1]);
break;
}
- if (LocaleCompare("virtual-pixel",argv[0]+1) == 0)
+ if (LocaleCompare("virtual-pixel",option) == 0)
{
if (*argv[0] == '+')
{
image_info->virtual_pixel_method=UndefinedVirtualPixelMethod;
- (void) SetImageOption(image_info,argv[0]+1,"undefined");
+ (void) SetImageOption(image_info,option,"undefined");
break;
}
image_info->virtual_pixel_method=(VirtualPixelMethod)
ParseCommandOption(MagickVirtualPixelOptions,MagickFalse,argv[1]);
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
}
case 'w':
{
- if (LocaleCompare("white-point",argv[0]+1) == 0)
+ if (LocaleCompare("white-point",option) == 0)
{
if (*argv[0] == '+')
{
- (void) SetImageOption(image_info,argv[0]+1,"0.0");
+ (void) SetImageOption(image_info,option,"0.0");
break;
}
- (void) SetImageOption(image_info,argv[0]+1,argv[1]);
+ (void) SetImageOption(image_info,option,argv[1]);
break;
}
break;
% %
% %
% %
-+ S i m p l e O p e r a t i o n I m a g e %
++ A p p l y I m a g e O p e r a t o r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
-% SimpleOperationImage() apply one simple operation on one image.
-% The image however may be part of a longer list of images.
+% ApplyImageOperator() apply one simple image operation to just the current
+% image.
%
% The image in the list may be modified in three different ways...
%
% list may also change. GetFirstImageInList() should be used by caller if
% they wish return the Image pointer to the first image in list.
%
-% The format of the SimpleOperationImage method is:
+% The format of the ApplyImageOperator method is:
%
-% MagickBooleanType SimpleOperationImage(ImageInfo *image_info,
-% const int argc,const char **argv,Image **image)
+% MagickBooleanType ApplyImageOperator(MagickWand *wand,
+% const int argc,const char **argv)
%
% A description of each parameter follows:
%
-% o image_info: the image info..
+% o wand: The CLI wand holding all the settings and pointer to image
%
% o argc: Specifies a pointer to an integer describing the number of
% elements in the argument vector.
% o argv: Specifies a pointer to a text array containing the command line
% arguments.
%
-% o image: the image.
-%
% o exception: return any errors or warnings in this structure.
%
*/
-MagickExport MagickBooleanType SimpleOperationImage(ImageInfo *image_info,
- const int wand_unused(argc), const char **argv,Image **image,
- ExceptionInfo *exception)
+MagickExport MagickBooleanType ApplyImageOperator(MagickWand *wand,
+ const int wand_unused(argc), const char **argv, ExceptionInfo *exception)
{
Image *
new_image;
{
if (LocaleCompare("black-threshold",argv[0]+1) == 0)
{
- /*
- Black threshold image.
- */
(void) SyncImageSettings(image_info,*image);
(void) BlackThresholdImage(*image,argv[1],exception);
InheritException(exception,&(*image)->exception);
}
if (LocaleCompare("blue-shift",argv[0]+1) == 0)
{
- /*
- Blue shift image.
- */
(void) SyncImageSettings(image_info,*image);
geometry_info.rho=1.5;
if (*argv[0] == '-')
}
if (LocaleCompare("blur",argv[0]+1) == 0)
{
- /*
- Two pass gaussian blur of image.
- */
+ /* FUTURE: use of "bias" in a blur is non-sensible */
(void) SyncImageSettings(image_info,*image);
flags=ParseGeometry(argv[1],&geometry_info);
if ((flags & SigmaValue) == 0)
}
if (LocaleCompare("border",argv[0]+1) == 0)
{
- /*
- Surround image with a border of solid color.
- */
(void) SyncImageSettings(image_info,*image);
flags=ParsePageGeometry(*image,argv[1],&geometry,exception);
if ((flags & SigmaValue) == 0)
new_image=BorderImage(*image,&geometry,compose,exception);
break;
}
- if (LocaleCompare("bordercolor",argv[0]+1) == 0)
- {
- if (*argv[0] == '+')
- {
- (void) QueryColorCompliance(BorderColor,AllCompliance,
- &draw_info->border_color,exception);
- break;
- }
- (void) QueryColorCompliance(argv[1],AllCompliance,&draw_info->border_color,
- exception);
- break;
- }
- if (LocaleCompare("box",argv[0]+1) == 0)
- {
- (void) QueryColorCompliance(argv[1],AllCompliance,&draw_info->undercolor,
- exception);
- break;
- }
if (LocaleCompare("brightness-contrast",argv[0]+1) == 0)
{
double
MagickStatusType
flags;
- /*
- Brightness / contrast image.
- */
(void) SyncImageSettings(image_info,*image);
flags=ParseGeometry(argv[1],&geometry_info);
brightness=geometry_info.rho;
}
if (LocaleCompare("channel",argv[0]+1) == 0)
{
- if (*argv[0] == '+')
- channel=DefaultChannels;
- else
- channel=(ChannelType) ParseChannelOption(argv[1]);
- SetPixelChannelMap(*image,channel);
+ /* The "channel" setting has already been set */
+ SetPixelChannelMap(*image,image_info->channel);
break;
}
if (LocaleCompare("charcoal",argv[0]+1) == 0)
{
- /*
- Charcoal image.
- */
(void) SyncImageSettings(image_info,*image);
flags=ParseGeometry(argv[1],&geometry_info);
if ((flags & SigmaValue) == 0)
}
if (LocaleCompare("chop",argv[0]+1) == 0)
{
- /*
- Chop the image.
- */
(void) SyncImageSettings(image_info,*image);
(void) ParseGravityGeometry(*image,argv[1],&geometry,exception);
new_image=ChopImage(*image,&geometry,exception);
}
if (LocaleCompare("clamp",argv[0]+1) == 0)
{
- /*
- Clamp image.
- */
(void) SyncImageSettings(image_info,*image);
(void) ClampImage(*image);
InheritException(exception,&(*image)->exception);
(void) SyncImageSettings(image_info,*image);
if (*argv[0] == '+')
{
- /*
- Remove a mask.
- */
+ /* Remove the write mask */
(void) SetImageMask(*image,(Image *) NULL,exception);
break;
}
break;
if (SetImageStorageClass(mask_image,DirectClass,exception) == MagickFalse)
return(MagickFalse);
+ /* create a write mask from clip-mask image */
+ /* FUTURE: use Alpha operations instead */
mask_view=AcquireCacheView(mask_image);
for (y=0; y < (ssize_t) mask_image->rows; y++)
{
if (SyncCacheViewAuthenticPixels(mask_view,exception) == MagickFalse)
break;
}
+ /* set the write mask */
mask_view=DestroyCacheView(mask_view);
mask_image->matte=MagickTrue;
(void) SetImageClipMask(*image,mask_image,exception);
}
if (LocaleCompare("colorize",argv[0]+1) == 0)
{
- /*
- Colorize the image.
- */
(void) SyncImageSettings(image_info,*image);
new_image=ColorizeImage(*image,argv[1],draw_info->fill,
exception);
}
if (LocaleCompare("colors",argv[0]+1) == 0)
{
- /*
- Reduce the number of colors in the image.
- */
+ /* Reduce the number of colors in the image. */
(void) SyncImageSettings(image_info,*image);
quantize_info->number_colors=StringToUnsignedLong(argv[1]);
if (quantize_info->number_colors == 0)
if (*argv[0] == '+')
{
(void) QueryMagickColorCompliance("none",AllCompliance,&fill,
- exception);
+ exception);
(void) QueryColorCompliance("none",AllCompliance,&draw_info->fill,
exception);
if (draw_info->fill_pattern != (Image *) NULL)