\
message=GetExceptionMessage(errno); \
(void) ThrowMagickException(exception,GetMagickModule(),severity, \
- tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context,message); \
+ tag == (const char *) NULL ? "unknown" : tag,"'%s': %s",context,message); \
message=DestroyString(message); \
}
\f
static const char
*channel_operators[]=
{
- "-channel-ops expression",
+ "-channel-fx expression",
" exchange, extract, or transfer one or more image channels",
+ "-separate separate an image channel into a grayscale image",
(char *) NULL
},
*miscellaneous[]=
"-cdl filename color correct with a color decision list",
"-charcoal radius simulate a charcoal drawing",
"-chop geometry remove pixels from the image interior",
- "-clamp restrict pixel range from 0 to the quantum depth",
+ "-clamp keep pixel values in range (0-QuantumRange)",
"-clip clip along the first path from the 8BIM profile",
"-clip-mask filename associate a clip mask with the image",
"-clip-path id clip along a named path from the 8BIM profile",
"-color-matrix matrix apply color correction to the image",
"-contrast enhance or reduce the image contrast",
"-contrast-stretch geometry",
- " improve contrast by `stretching' the intensity range",
+ " improve contrast by 'stretching' the intensity range",
"-convolve coefficients",
" apply a convolution kernel to the image",
"-cycle amount cycle the image colormap",
"-level-colors color,color",
" level image with the given colors",
"-linear-stretch geometry",
- " improve contrast by `stretching with saturation'",
+ " improve contrast by 'stretching with saturation'",
"-liquid-rescale geometry",
" rescale image with seam-carving",
"-median geometry apply a median filter to the image",
- "-mode geometry make each pixel the 'predominant color' of the neighborhood",
+ "-mode geometry make each pixel the 'predominant color' of the",
+ " neighborhood",
"-modulate value vary the brightness, saturation, and hue",
"-monochrome transform image to black and white",
"-morphology method kernel",
" add a noise pattern to the image with specific",
" amplitudes",
"-paint radius simulate an oil painting",
+ "-perceptible epsilon",
+ " pixel value less than |epsilon| become epsilon or",
+ " -epsilon",
"-polaroid angle simulate a Polaroid picture",
"-posterize levels reduce the image to a limited number of color levels",
"-profile filename add, delete, or apply an image profile",
"-shave geometry shave pixels from the image edges",
"-shear geometry slide one edge of the image along the X or Y axis",
"-sigmoidal-contrast geometry",
- " increase the contrast without saturating highlights or shadows",
+ " increase the contrast without saturating highlights or",
+ " shadows",
"-sketch geometry simulate a pencil sketch",
"-solarize threshold negate all pixels above the threshold level",
"-sparse-color method args",
"-splice geometry splice the background color into the image",
"-spread radius displace image pixels by a random amount",
"-statistic type geometry",
- " replace each pixel with corresponding statistic from the neighborhood",
+ " replace each pixel with corresponding statistic from the",
+ " neighborhood",
"-strip strip image of all profiles and comments",
"-swirl degrees swirl image pixels about the center",
"-threshold value threshold the image",
"-hald-clut apply a Hald color lookup table to the image",
"-morph value morph an image sequence",
"-mosaic create a mosaic from an image sequence",
+ "-poly terms build a polynomial from the image sequence and the corresponding",
+ " terms (coefficients and degree pairs).",
"-print string interpret string and print to console",
"-process arguments process the image with a custom image filter",
- "-separate separate an image channel into a grayscale image",
"-smush geometry smush an image sequence together",
"-write filename write images to this file",
(char *) NULL
"-encoding type text encoding type",
"-endian type endianness (MSB or LSB) of the image",
"-family name render text with this font family",
+ "-features distance analyze image features (e.g. contrast, correlation)",
"-fill color color to use when filling a graphic primitive",
"-filter type use this filter when resizing an image",
"-font name render text with this font",
for (p=miscellaneous; *p != (char *) NULL; p++)
(void) printf(" %s\n",*p);
(void) printf(
- "\nBy default, the image format of `file' is determined by its magic\n");
+ "\nBy default, the image format of 'file' is determined by its magic\n");
(void) printf(
"number. To specify a particular image format, precede the filename\n");
(void) printf(
}
#define ThrowConvertException(asperity,tag,option) \
{ \
- (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
+ (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"'%s'", \
option); \
DestroyConvert(); \
return(MagickFalse); \
#define ThrowConvertInvalidArgumentException(option,argument) \
{ \
(void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
- "InvalidArgument","`%s': %s",option,argument); \
+ "InvalidArgument","'%s': %s",option,argument); \
DestroyConvert(); \
return(MagickFalse); \
}
i++;
if (i == (ssize_t) (argc-1))
ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
if (LocaleCompare("alpha",option+1) == 0)
i++;
if (i == (ssize_t) argc)
ThrowConvertException(OptionError,"MissingArgument",option);
- type=ParseCommandOption(MagickAlphaOptions,MagickFalse,argv[i]);
+ type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse,argv[i]);
if (type < 0)
- ThrowConvertException(OptionError,"UnrecognizedAlphaChannelType",
+ ThrowConvertException(OptionError,"UnrecognizedAlphaChannelOption",
argv[i]);
break;
}
argv[i]);
break;
}
- if (LocaleCompare("channel-ops",option+1) == 0)
+ if (LocaleCompare("channel-fx",option+1) == 0)
{
ssize_t
channel;
clone_images=image;
if (k != 0)
clone_images=image_stack[k-1].image;
- /* FUTURE: Change error report to something more meaningful */
if (clone_images == (Image *) NULL)
- ThrowConvertException(ImageError,"ImageSequenceRequired",option);
+ ThrowConvertException(ImageError,"UnableToCloneImage",option);
FireImageStack(MagickTrue,MagickTrue,MagickTrue);
if (*option == '+')
clone_images=CloneImages(clone_images,"-1",exception);
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
+ if (LocaleCompare("features",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("fft",option+1) == 0)
break;
if (LocaleCompare("fill",option+1) == 0)
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
- if (LocaleCompare("liquid-rescale",option+1) == 0)
- {
- i++;
- if (i == (ssize_t) (argc-1))
- ThrowConvertException(OptionError,"MissingArgument",option);
- if (IsGeometry(argv[i]) == MagickFalse)
- ThrowConvertInvalidArgumentException(option,argv[i]);
- break;
- }
if (LocaleCompare("limit",option+1) == 0)
{
char
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("liquid-rescale",option+1) == 0)
+ {
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("list",option+1) == 0)
{
ssize_t
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("perceptible",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("ping",option+1) == 0)
break;
if (LocaleCompare("pointsize",option+1) == 0)
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
+ if (LocaleCompare("poly",option+1) == 0)
+ {
+ if (*option == '+')
+ break;
+ i++;
+ if (i == (ssize_t) (argc-1))
+ ThrowConvertException(OptionError,"MissingArgument",option);
+ if (IsGeometry(argv[i]) == MagickFalse)
+ ThrowConvertInvalidArgumentException(option,argv[i]);
+ break;
+ }
if (LocaleCompare("posterize",option+1) == 0)
{
if (*option == '+')
ThrowConvertException(OptionError,"MissingArgument",option);
break;
}
- if (LocaleCompare("thumbnail",option+1) == 0)
+ if (LocaleCompare("threshold",option+1) == 0)
{
if (*option == '+')
break;
ThrowConvertInvalidArgumentException(option,argv[i]);
break;
}
- if (LocaleCompare("threshold",option+1) == 0)
+ if (LocaleCompare("thumbnail",option+1) == 0)
{
if (*option == '+')
break;
ThrowConvertException(OptionError,"UnbalancedParenthesis",argv[i]);
if (i-- != (ssize_t) (argc-1))
ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
- if (image == (Image *) NULL)
- ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
FinalizeImageSettings(image_info,image,MagickTrue);
if (image == (Image *) NULL)
+ ThrowConvertException(OptionError,"NoImagesDefined",argv[argc-1]);
+ if (IsCommandOption(argv[argc-1]))
+ ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
+ if (LocaleCompare(" ",argv[argc-1])==0) /* common line continuation error */
ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
status&=WriteImages(image_info,image,argv[argc-1],exception);
if (metadata != (char **) NULL)