00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045 #include "wand/studio.h"
00046 #include "wand/MagickWand.h"
00047 #include "wand/mogrify-private.h"
00048
00049
00050
00051
00052 #define ThrowFileException(exception,severity,tag,context) \
00053 { \
00054 (void) ThrowMagickException(exception,GetMagickModule(),severity, \
00055 tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context, \
00056 GetExceptionMessage(errno)); \
00057 }
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093 static MagickBooleanType ConcatenateImages(int argc,char **argv,
00094 ExceptionInfo *exception)
00095 {
00096 FILE
00097 *input,
00098 *output;
00099
00100 int
00101 c;
00102
00103 register long
00104 i;
00105
00106
00107
00108
00109 output=OpenMagickStream(argv[argc-1],"wb");
00110 if (output == (FILE *) NULL)
00111 {
00112 ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
00113 argv[argc-1]);
00114 return(MagickFalse);
00115 }
00116 for (i=2; i < (long) (argc-1); i++)
00117 {
00118 input=OpenMagickStream(argv[i],"rb");
00119 if (input == (FILE *) NULL)
00120 ThrowFileException(exception,FileOpenError,"UnableToOpenFile",argv[i]);
00121 for (c=fgetc(input); c != EOF; c=fgetc(input))
00122 (void) fputc((char) c,output);
00123 (void) fclose(input);
00124 (void) remove(argv[i]);
00125 }
00126 (void) fclose(output);
00127 return(MagickTrue);
00128 }
00129
00130 static MagickBooleanType ConvertUsage(void)
00131 {
00132 static const char
00133 *miscellaneous[]=
00134 {
00135 "-debug events display copious debugging information",
00136 "-help print program options",
00137 "-list type print a list of supported option arguments",
00138 "-log format format of debugging information",
00139 "-version print version information",
00140 (char *) NULL
00141 },
00142 *operators[]=
00143 {
00144 "-adaptive-blur geometry",
00145 " adaptively blur pixels; decrease effect near edges",
00146 "-adaptive-resize geometry",
00147 " adaptively resize image using 'mesh' interpolation",
00148 "-adaptive-sharpen geometry",
00149 " adaptively sharpen pixels; increase effect near edges",
00150 "-alpha option on, activate, off, deactivate, set, opaque, copy",
00151 " transparent, extract, background, or shape",
00152 "-annotate geometry text",
00153 " annotate the image with text",
00154 "-auto-orient automatically orient image",
00155 "-bench iterations measure performance",
00156 "-black-threshold value",
00157 " force all pixels below the threshold into black",
00158 "-blue-shift simulate a scene at nighttime in the moonlight",
00159 "-blur geometry reduce image noise and reduce detail levels",
00160 "-border geometry surround image with a border of color",
00161 "-bordercolor color border color",
00162 "-charcoal radius simulate a charcoal drawing",
00163 "-chop geometry remove pixels from the image interior",
00164 "-clip clip along the first path from the 8BIM profile",
00165 "-clip-mask filename associate a clip mask with the image",
00166 "-clip-path id clip along a named path from the 8BIM profile",
00167 "-colorize value colorize the image with the fill color",
00168 "-contrast enhance or reduce the image contrast",
00169 "-contrast-stretch geometry",
00170 " improve contrast by `stretching' the intensity range",
00171 "-convolve coefficients",
00172 " apply a convolution kernel to the image",
00173 "-cycle amount cycle the image colormap",
00174 "-decipher filename convert cipher pixels to plain pixels",
00175 "-deskew threshold straighten an image",
00176 "-despeckle reduce the speckles within an image",
00177 "-distort method args",
00178 " distort images according to given method ad args",
00179 "-draw string annotate the image with a graphic primitive",
00180 "-edge radius apply a filter to detect edges in the image",
00181 "-encipher filename convert plain pixels to cipher pixels",
00182 "-emboss radius emboss an image",
00183 "-enhance apply a digital filter to enhance a noisy image",
00184 "-equalize perform histogram equalization to an image",
00185 "-evaluate operator value",
00186 " evaluate an expression over image values",
00187 "-extent geometry set the image size",
00188 "-extract geometry extract area from image",
00189 "-flip flip image vertically",
00190 "-floodfill geometry color",
00191 " floodfill the image with color",
00192 "-flop flop image horizontally",
00193 "-frame geometry surround image with an ornamental border",
00194 "-function name paramters",
00195 " apply function over image values",
00196 "-gamma value level of gamma correction",
00197 "-gaussian-blur geometry",
00198 " reduce image noise and reduce detail levels",
00199 "-geometry geometry preferred size or location of the image",
00200 "-identify identify the format and characteristics of the image",
00201 "-implode amount implode image pixels about the center",
00202 "-lat geometry local adaptive thresholding",
00203 "-layers method optimize, merge, or compare image layers",
00204 "-level value adjust the level of image contrast",
00205 "-level-colors color,color",
00206 " level image using given colors",
00207 "-linear-stretch geometry",
00208 " improve contrast by `stretching with saturation'",
00209 "-liquid-rescale geometry",
00210 " rescale image with seam-carving",
00211 "-median radius apply a median filter to the image",
00212 "-modulate value vary the brightness, saturation, and hue",
00213 "-monochrome transform image to black and white",
00214 "-motion-blur geometry",
00215 " simulate motion blur",
00216 "-negate replace every pixel with its complementary color ",
00217 "-noise radius add or reduce noise in an image",
00218 "-normalize transform image to span the full range of colors",
00219 "-opaque color change this color to the fill color",
00220 "-ordered-dither NxN",
00221 " add a noise pattern to the image with specific",
00222 " amplitudes",
00223 "-paint radius simulate an oil painting",
00224 "-polaroid angle simulate a Polaroid picture",
00225 "-posterize levels reduce the image to a limited number of color levels",
00226 "-print string interpret string and print to console",
00227 "-profile filename add, delete, or apply an image profile",
00228 "-quantize colorspace reduce colors in this colorspace",
00229 "-radial-blur angle radial blur the image",
00230 "-raise value lighten/darken image edges to create a 3-D effect",
00231 "-random-threshold low,high",
00232 " random threshold the image",
00233 "-recolor matrix translate, scale, shear, or rotate image colors",
00234 "-region geometry apply options to a portion of the image",
00235 "-render render vector graphics",
00236 "-repage geometry size and location of an image canvas",
00237 "-resample geometry change the resolution of an image",
00238 "-resize geometry resize the image",
00239 "-roll geometry roll an image vertically or horizontally",
00240 "-rotate degrees apply Paeth rotation to the image",
00241 "-sample geometry scale image with pixel sampling",
00242 "-scale geometry scale the image",
00243 "-segment values segment an image",
00244 "-selective-blur geometry",
00245 " selectively blur pixels within a contrast threshold",
00246 "-sepia-tone threshold",
00247 " simulate a sepia-toned photo",
00248 "-set property value set an image property",
00249 "-shade degrees shade the image using a distant light source",
00250 "-shadow geometry simulate an image shadow",
00251 "-sharpen geometry sharpen the image",
00252 "-shave geometry shave pixels from the image edges",
00253 "-shear geometry slide one edge of the image along the X or Y axis",
00254 "-sigmoidal-contrast geometry",
00255 " increase the contrast without saturating highlights or shadows",
00256 "-sketch geometry simulate a pencil sketch",
00257 "-solarize threshold negate all pixels above the threshold level",
00258 "-sparse-color method args",
00259 " fill in a image based on a few color points",
00260 "-splice geometry splice the background color into the image",
00261 "-spread radius displace image pixels by a random amount",
00262 "-strip strip image of all profiles and comments",
00263 "-swirl degrees swirl image pixels about the center",
00264 "-threshold value threshold the image",
00265 "-thumbnail geometry create a thumbnail of the image",
00266 "-tile filename tile image when filling a graphic primitive",
00267 "-tint value tint the image with the fill color",
00268 "-transform affine transform image",
00269 "-transparent color make this color transparent within the image",
00270 "-transpose flip image vertically and rotate 90 degrees",
00271 "-transverse flop image horizontally and rotate 270 degrees",
00272 "-trim trim image edges",
00273 "-type type image type",
00274 "-unique-colors discard all but one of any pixel color",
00275 "-unsharp geometry sharpen the image",
00276 "-vignette geometry soften the edges of the image in vignette style",
00277 "-wave geometry alter an image along a sine wave",
00278 "-white-threshold value",
00279 " force all pixels above the threshold into white",
00280 (char *) NULL
00281 },
00282 *sequence_operators[]=
00283 {
00284 "-append append an image sequence",
00285 "-average average an image sequence",
00286 "-clut apply a color lookup table to the image",
00287 "-coalesce merge a sequence of images",
00288 "-combine combine a sequence of images",
00289 "-composite composite image",
00290 "-crop geometry cut out a rectangular region of the image",
00291 "-deconstruct break down an image sequence into constituent parts",
00292 "-flatten flatten a sequence of images",
00293 "-fx expression apply mathematical expression to an image channel(s)",
00294 "-hald-clut apply a Hald color lookup table to the image",
00295 "-morph value morph an image sequence",
00296 "-mosaic create a mosaic from an image sequence",
00297 "-process arguments process the image with a custom image filter",
00298 "-reverse reverse image sequence",
00299 "-separate separate an image channel into a grayscale image",
00300 "-write filename write images to this file",
00301 (char *) NULL
00302 },
00303 *settings[]=
00304 {
00305 "-adjoin join images into a single multi-image file",
00306 "-affine matrix affine transform matrix",
00307 "-alpha option activate, deactivate, reset, or set the alpha channel",
00308 "-antialias remove pixel-aliasing",
00309 "-authenticate password",
00310 " decipher image with this password",
00311 "-attenuate value lessen (or intensify) when adding noise to an image",
00312 "-background color background color",
00313 "-bias value add bias when convolving an image",
00314 "-black-point-compensation",
00315 " use black point compensation",
00316 "-blue-primary point chromaticity blue primary point",
00317 "-bordercolor color border color",
00318 "-caption string assign a caption to an image",
00319 "-channel type apply option to select image channels",
00320 "-colors value preferred number of colors in the image",
00321 "-colorspace type alternate image colorspace",
00322 "-comment string annotate image with comment",
00323 "-compose operator set image composite operator",
00324 "-compress type type of pixel compression when writing the image",
00325 "-define format:option",
00326 " define one or more image format options",
00327 "-delay value display the next image after pausing",
00328 "-density geometry horizontal and vertical density of the image",
00329 "-depth value image depth",
00330 "-display server get image or font from this X server",
00331 "-dispose method layer disposal method",
00332 "-dither method apply error diffusion to image",
00333 "-encoding type text encoding type",
00334 "-endian type endianness (MSB or LSB) of the image",
00335 "-family name render text with this font family",
00336 "-fill color color to use when filling a graphic primitive",
00337 "-filter type use this filter when resizing an image",
00338 "-font name render text with this font",
00339 "-format \"string\" output formatted image characteristics",
00340 "-fuzz distance colors within this distance are considered equal",
00341 "-gravity type horizontal and vertical text placement",
00342 "-green-primary point chromaticity green primary point",
00343 "-intent type type of rendering intent when managing the image color",
00344 "-interlace type type of image interlacing scheme",
00345 "-interpolate method pixel color interpolation method",
00346 "-interword-spacing value",
00347 " set the space between two words",
00348 "-kerning value set the space between two letters",
00349 "-label string assign a label to an image",
00350 "-limit type value pixel cache resource limit",
00351 "-loop iterations add Netscape loop extension to your GIF animation",
00352 "-mask filename associate a mask with the image",
00353 "-mattecolor color frame color",
00354 "-monitor monitor progress",
00355 "-orient type image orientation",
00356 "-page geometry size and location of an image canvas (setting)",
00357 "-ping efficiently determine image attributes",
00358 "-pointsize value font point size",
00359 "-preview type image preview type",
00360 "-quality value JPEG/MIFF/PNG compression level",
00361 "-quiet suppress all warning messages",
00362 "-red-primary point chromaticity red primary point",
00363 "-regard-warnings pay attention to warning messages",
00364 "-remap filename transform image colors to match this set of colors",
00365 "-respect-parentheses settings remain in effect until parenthesis boundary",
00366 "-sampling-factor geometry",
00367 " horizontal and vertical sampling factor",
00368 "-scene value image scene number",
00369 "-seed value seed a new sequence of pseudo-random numbers",
00370 "-size geometry width and height of image",
00371 "-stretch type render text with this font stretch",
00372 "-stroke color graphic primitive stroke color",
00373 "-strokewidth value graphic primitive stroke width",
00374 "-style type render text with this font style",
00375 "-taint image as ineligible for bi-modal delegate",
00376 "-texture filename name of texture to tile onto the image background",
00377 "-tile-offset geometry",
00378 " tile offset",
00379 "-treedepth value color tree depth",
00380 "-transparent-color color",
00381 " transparent color",
00382 "-undercolor color annotation bounding box color",
00383 "-units type the units of image resolution",
00384 "-verbose print detailed information about the image",
00385 "-view FlashPix viewing transforms",
00386 "-virtual-pixel method",
00387 " virtual pixel access method",
00388 "-weight type render text with this font weight",
00389 "-white-point point chromaticity white point",
00390 (char *) NULL
00391 },
00392 *stack_operators[]=
00393 {
00394 "-clone index clone an image",
00395 "-delete index delete the image from the image sequence",
00396 "-insert index insert last image into the image sequence",
00397 "-swap indexes swap two images in the image sequence",
00398 (char *) NULL
00399 };
00400
00401 const char
00402 **p;
00403
00404 (void) printf("Version: %s\n",GetMagickVersion((unsigned long *) NULL));
00405 (void) printf("Copyright: %s\n\n",GetMagickCopyright());
00406 (void) printf("Usage: %s [options ...] file [ [options ...] "
00407 "file ...] [options ...] file\n",GetClientName());
00408 (void) printf("\nImage Settings:\n");
00409 for (p=settings; *p != (char *) NULL; p++)
00410 (void) printf(" %s\n",*p);
00411 (void) printf("\nImage Operators:\n");
00412 for (p=operators; *p != (char *) NULL; p++)
00413 (void) printf(" %s\n",*p);
00414 (void) printf("\nImage Sequence Operators:\n");
00415 for (p=sequence_operators; *p != (char *) NULL; p++)
00416 (void) printf(" %s\n",*p);
00417 (void) printf("\nImage Stack Operators:\n");
00418 for (p=stack_operators; *p != (char *) NULL; p++)
00419 (void) printf(" %s\n",*p);
00420 (void) printf("\nMiscellaneous Options:\n");
00421 for (p=miscellaneous; *p != (char *) NULL; p++)
00422 (void) printf(" %s\n",*p);
00423 (void) printf(
00424 "\nBy default, the image format of `file' is determined by its magic\n");
00425 (void) printf(
00426 "number. To specify a particular image format, precede the filename\n");
00427 (void) printf(
00428 "with an image format name and a colon (i.e. ps:image) or specify the\n");
00429 (void) printf(
00430 "image type as the filename suffix (i.e. image.ps). Specify 'file' as\n");
00431 (void) printf("'-' for standard input or output.\n");
00432 return(MagickFalse);
00433 }
00434
00435 WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
00436 int argc,char **argv,char **metadata,ExceptionInfo *exception)
00437 {
00438 #define NotInitialized (unsigned int) (~0)
00439 #define DestroyConvert() \
00440 { \
00441 DestroyImageStack(); \
00442 for (i=0; i < (long) argc; i++) \
00443 argv[i]=DestroyString(argv[i]); \
00444 argv=(char **) RelinquishMagickMemory(argv); \
00445 }
00446 #define ThrowConvertException(asperity,tag,option) \
00447 { \
00448 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
00449 option); \
00450 DestroyConvert(); \
00451 return(MagickFalse); \
00452 }
00453 #define ThrowConvertInvalidArgumentException(option,argument) \
00454 { \
00455 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
00456 "InvalidArgument","`%s': %s",option,argument); \
00457 DestroyConvert(); \
00458 return(MagickFalse); \
00459 }
00460
00461 char
00462 *filename,
00463 *option;
00464
00465 const char
00466 *format;
00467
00468 Image
00469 *image;
00470
00471 ImageStack
00472 image_stack[MaxImageStackDepth+1];
00473
00474 long
00475 j,
00476 k;
00477
00478 MagickBooleanType
00479 fire,
00480 pend;
00481
00482 MagickStatusType
00483 status;
00484
00485 register long
00486 i;
00487
00488
00489
00490
00491 assert(image_info != (ImageInfo *) NULL);
00492 assert(image_info->signature == MagickSignature);
00493 if (image_info->debug != MagickFalse)
00494 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
00495 assert(exception != (ExceptionInfo *) NULL);
00496 if (argc == 2)
00497 {
00498 option=argv[1];
00499 if ((LocaleCompare("version",option+1) == 0) ||
00500 (LocaleCompare("-version",option+1) == 0))
00501 {
00502 (void) fprintf(stdout,"Version: %s\n",
00503 GetMagickVersion((unsigned long *) NULL));
00504 (void) fprintf(stdout,"Copyright: %s\n\n",GetMagickCopyright());
00505 return(MagickFalse);
00506 }
00507 }
00508 if (argc < 3)
00509 {
00510 (void) ConvertUsage();
00511 return(MagickTrue);
00512 }
00513 filename=(char *) NULL;
00514 format="%w,%h,%m";
00515 j=1;
00516 k=0;
00517 NewImageStack();
00518 option=(char *) NULL;
00519 pend=MagickFalse;
00520 status=MagickTrue;
00521
00522
00523
00524 ReadCommandlLine(argc,&argv);
00525 status=ExpandFilenames(&argc,&argv);
00526 if (status == MagickFalse)
00527 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed",
00528 GetExceptionMessage(errno));
00529 if ((argc > 2) && (LocaleCompare("-concatenate",argv[1]) == 0))
00530 return(ConcatenateImages(argc,argv,exception));
00531 for (i=1; i < (long) (argc-1); i++)
00532 {
00533 option=argv[i];
00534 if (LocaleCompare(option,"(") == 0)
00535 {
00536 FireImageStack(MagickTrue,MagickTrue,pend);
00537 if (k == MaxImageStackDepth)
00538 ThrowConvertException(OptionError,"ParenthesisNestedTooDeeply",
00539 option);
00540 PushImageStack();
00541 continue;
00542 }
00543 if (LocaleCompare(option,")") == 0)
00544 {
00545 FireImageStack(MagickTrue,MagickTrue,MagickTrue);
00546 if (k == 0)
00547 ThrowConvertException(OptionError,"UnableToParseExpression",option);
00548 PopImageStack();
00549 continue;
00550 }
00551 if (IsMagickOption(option) == MagickFalse)
00552 {
00553 Image
00554 *images;
00555
00556
00557
00558
00559 FireImageStack(MagickTrue,MagickTrue,pend);
00560 filename=argv[i];
00561 if ((LocaleCompare(filename,"--") == 0) && (i < (argc-1)))
00562 filename=argv[++i];
00563 (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
00564 if (image_info->ping != MagickFalse)
00565 images=PingImages(image_info,exception);
00566 else
00567 images=ReadImages(image_info,exception);
00568 status&=(images != (Image *) NULL) &&
00569 (exception->severity < ErrorException);
00570 if (images == (Image *) NULL)
00571 continue;
00572 AppendImageStack(images);
00573 continue;
00574 }
00575 pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
00576 switch (*(option+1))
00577 {
00578 case 'a':
00579 {
00580 if (LocaleCompare("adaptive-blur",option+1) == 0)
00581 {
00582 i++;
00583 if (i == (long) (argc-1))
00584 ThrowConvertException(OptionError,"MissingArgument",option);
00585 if (IsGeometry(argv[i]) == MagickFalse)
00586 ThrowConvertInvalidArgumentException(option,argv[i]);
00587 break;
00588 }
00589 if (LocaleCompare("adaptive-resize",option+1) == 0)
00590 {
00591 i++;
00592 if (i == (long) (argc-1))
00593 ThrowConvertException(OptionError,"MissingArgument",option);
00594 if (IsGeometry(argv[i]) == MagickFalse)
00595 ThrowConvertInvalidArgumentException(option,argv[i]);
00596 break;
00597 }
00598 if (LocaleCompare("adaptive-sharpen",option+1) == 0)
00599 {
00600 i++;
00601 if (i == (long) (argc-1))
00602 ThrowConvertException(OptionError,"MissingArgument",option);
00603 if (IsGeometry(argv[i]) == MagickFalse)
00604 ThrowConvertInvalidArgumentException(option,argv[i]);
00605 break;
00606 }
00607 if (LocaleCompare("adjoin",option+1) == 0)
00608 break;
00609 if (LocaleCompare("affine",option+1) == 0)
00610 {
00611 if (*option == '+')
00612 break;
00613 i++;
00614 if (i == (long) (argc-1))
00615 ThrowConvertException(OptionError,"MissingArgument",option);
00616 if (IsGeometry(argv[i]) == MagickFalse)
00617 ThrowConvertInvalidArgumentException(option,argv[i]);
00618 break;
00619 }
00620 if (LocaleCompare("alpha",option+1) == 0)
00621 {
00622 long
00623 type;
00624
00625 if (*option == '+')
00626 break;
00627 i++;
00628 if (i == (long) argc)
00629 ThrowConvertException(OptionError,"MissingArgument",option);
00630 type=ParseMagickOption(MagickAlphaOptions,MagickFalse,argv[i]);
00631 if (type < 0)
00632 ThrowConvertException(OptionError,"UnrecognizedAlphaChannelType",
00633 argv[i]);
00634 break;
00635 }
00636 if (LocaleCompare("annotate",option+1) == 0)
00637 {
00638 if (*option == '+')
00639 break;
00640 i++;
00641 if (i == (long) (argc-1))
00642 ThrowConvertException(OptionError,"MissingArgument",option);
00643 if (IsGeometry(argv[i]) == MagickFalse)
00644 ThrowConvertInvalidArgumentException(option,argv[i]);
00645 i++;
00646 if (i == (long) (argc-1))
00647 ThrowConvertException(OptionError,"MissingArgument",option);
00648 break;
00649 }
00650 if (LocaleCompare("antialias",option+1) == 0)
00651 break;
00652 if (LocaleCompare("append",option+1) == 0)
00653 break;
00654 if (LocaleCompare("attenuate",option+1) == 0)
00655 {
00656 if (*option == '+')
00657 break;
00658 i++;
00659 if (i == (long) (argc-1))
00660 ThrowConvertException(OptionError,"MissingArgument",option);
00661 if (IsGeometry(argv[i]) == MagickFalse)
00662 ThrowConvertInvalidArgumentException(option,argv[i]);
00663 break;
00664 }
00665 if (LocaleCompare("authenticate",option+1) == 0)
00666 {
00667 if (*option == '+')
00668 break;
00669 i++;
00670 if (i == (long) (argc-1))
00671 ThrowConvertException(OptionError,"MissingArgument",option);
00672 break;
00673 }
00674 if (LocaleCompare("auto-orient",option+1) == 0)
00675 break;
00676 if (LocaleCompare("average",option+1) == 0)
00677 break;
00678 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00679 }
00680 case 'b':
00681 {
00682 if (LocaleCompare("background",option+1) == 0)
00683 {
00684 if (*option == '+')
00685 break;
00686 i++;
00687 if (i == (long) (argc-1))
00688 ThrowConvertException(OptionError,"MissingArgument",option);
00689 break;
00690 }
00691 if (LocaleCompare("bench",option+1) == 0)
00692 {
00693 if (*option == '+')
00694 break;
00695 i++;
00696 if (i == (long) (argc-1))
00697 ThrowConvertException(OptionError,"MissingArgument",option);
00698 if (IsGeometry(argv[i]) == MagickFalse)
00699 ThrowConvertInvalidArgumentException(option,argv[i]);
00700 break;
00701 }
00702 if (LocaleCompare("bias",option+1) == 0)
00703 {
00704 if (*option == '+')
00705 break;
00706 i++;
00707 if (i == (long) (argc-1))
00708 ThrowConvertException(OptionError,"MissingArgument",option);
00709 if (IsGeometry(argv[i]) == MagickFalse)
00710 ThrowConvertInvalidArgumentException(option,argv[i]);
00711 break;
00712 }
00713 if (LocaleCompare("black-point-compensation",option+1) == 0)
00714 break;
00715 if (LocaleCompare("black-threshold",option+1) == 0)
00716 {
00717 if (*option == '+')
00718 break;
00719 i++;
00720 if (i == (long) (argc-1))
00721 ThrowConvertException(OptionError,"MissingArgument",option);
00722 if (IsGeometry(argv[i]) == MagickFalse)
00723 ThrowConvertInvalidArgumentException(option,argv[i]);
00724 break;
00725 }
00726 if (LocaleCompare("blue-primary",option+1) == 0)
00727 {
00728 if (*option == '+')
00729 break;
00730 i++;
00731 if (i == (long) (argc-1))
00732 ThrowConvertException(OptionError,"MissingArgument",option);
00733 if (IsGeometry(argv[i]) == MagickFalse)
00734 ThrowConvertInvalidArgumentException(option,argv[i]);
00735 break;
00736 }
00737 if (LocaleCompare("blue-shift",option+1) == 0)
00738 {
00739 if (*option == '+')
00740 break;
00741 i++;
00742 if (i == (long) (argc-1))
00743 ThrowConvertException(OptionError,"MissingArgument",option);
00744 if (IsGeometry(argv[i]) == MagickFalse)
00745 ThrowConvertInvalidArgumentException(option,argv[i]);
00746 break;
00747 }
00748 if (LocaleCompare("blur",option+1) == 0)
00749 {
00750 if (*option == '+')
00751 break;
00752 i++;
00753 if (i == (long) (argc-1))
00754 ThrowConvertException(OptionError,"MissingArgument",option);
00755 if (IsGeometry(argv[i]) == MagickFalse)
00756 ThrowConvertInvalidArgumentException(option,argv[i]);
00757 break;
00758 }
00759 if (LocaleCompare("border",option+1) == 0)
00760 {
00761 if (*option == '+')
00762 break;
00763 i++;
00764 if (i == (long) (argc-1))
00765 ThrowConvertException(OptionError,"MissingArgument",option);
00766 if (IsGeometry(argv[i]) == MagickFalse)
00767 ThrowConvertInvalidArgumentException(option,argv[i]);
00768 break;
00769 }
00770 if (LocaleCompare("bordercolor",option+1) == 0)
00771 {
00772 if (*option == '+')
00773 break;
00774 i++;
00775 if (i == (long) (argc-1))
00776 ThrowConvertException(OptionError,"MissingArgument",option);
00777 break;
00778 }
00779 if (LocaleCompare("box",option+1) == 0)
00780 {
00781 if (*option == '+')
00782 break;
00783 i++;
00784 if (i == (long) (argc-1))
00785 ThrowConvertException(OptionError,"MissingArgument",option);
00786 break;
00787 }
00788 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00789 }
00790 case 'c':
00791 {
00792 if (LocaleCompare("cache",option+1) == 0)
00793 {
00794 if (*option == '+')
00795 break;
00796 i++;
00797 if (i == (long) (argc-1))
00798 ThrowConvertException(OptionError,"MissingArgument",option);
00799 if (IsGeometry(argv[i]) == MagickFalse)
00800 ThrowConvertInvalidArgumentException(option,argv[i]);
00801 break;
00802 }
00803 if (LocaleCompare("caption",option+1) == 0)
00804 {
00805 if (*option == '+')
00806 break;
00807 i++;
00808 if (i == (long) argc)
00809 ThrowConvertException(OptionError,"MissingArgument",option);
00810 break;
00811 }
00812 if (LocaleCompare("channel",option+1) == 0)
00813 {
00814 long
00815 channel;
00816
00817 if (*option == '+')
00818 break;
00819 i++;
00820 if (i == (long) (argc-1))
00821 ThrowConvertException(OptionError,"MissingArgument",option);
00822 channel=ParseChannelOption(argv[i]);
00823 if (channel < 0)
00824 ThrowConvertException(OptionError,"UnrecognizedChannelType",
00825 argv[i]);
00826 break;
00827 }
00828 if (LocaleCompare("charcoal",option+1) == 0)
00829 {
00830 if (*option == '+')
00831 break;
00832 i++;
00833 if (i == (long) (argc-1))
00834 ThrowConvertException(OptionError,"MissingArgument",option);
00835 if (IsGeometry(argv[i]) == MagickFalse)
00836 ThrowConvertInvalidArgumentException(option,argv[i]);
00837 break;
00838 }
00839 if (LocaleCompare("chop",option+1) == 0)
00840 {
00841 if (*option == '+')
00842 break;
00843 i++;
00844 if (i == (long) (argc-1))
00845 ThrowConvertException(OptionError,"MissingArgument",option);
00846 if (IsGeometry(argv[i]) == MagickFalse)
00847 ThrowConvertInvalidArgumentException(option,argv[i]);
00848 break;
00849 }
00850 if (LocaleCompare("clip",option+1) == 0)
00851 break;
00852 if (LocaleCompare("clip-mask",option+1) == 0)
00853 {
00854 if (*option == '+')
00855 break;
00856 i++;
00857 if (i == (long) (argc-1))
00858 ThrowConvertException(OptionError,"MissingArgument",option);
00859 break;
00860 }
00861 if (LocaleCompare("clip-path",option+1) == 0)
00862 {
00863 i++;
00864 if (i == (long) (argc-1))
00865 ThrowConvertException(OptionError,"MissingArgument",option);
00866 break;
00867 }
00868 if (LocaleCompare("clone",option+1) == 0)
00869 {
00870 Image
00871 *clone_images;
00872
00873 clone_images=image;
00874 if (k != 0)
00875 clone_images=image_stack[k-1].image;
00876 if (clone_images == (Image *) NULL)
00877 ThrowConvertException(ImageError,"ImageSequenceRequired",option);
00878 FireImageStack(MagickTrue,MagickTrue,MagickTrue);
00879 if (*option == '+')
00880 clone_images=CloneImages(clone_images,"-1",exception);
00881 else
00882 {
00883 i++;
00884 if (i == (long) (argc-1))
00885 ThrowConvertException(OptionError,"MissingArgument",option);
00886 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse)
00887 ThrowConvertInvalidArgumentException(option,argv[i]);
00888 clone_images=CloneImages(clone_images,argv[i],exception);
00889 }
00890 if (clone_images == (Image *) NULL)
00891 ThrowConvertException(OptionError,"NoSuchImage",option);
00892 AppendImageStack(clone_images);
00893 break;
00894 }
00895 if (LocaleCompare("clut",option+1) == 0)
00896 break;
00897 if (LocaleCompare("coalesce",option+1) == 0)
00898 break;
00899 if (LocaleCompare("colorize",option+1) == 0)
00900 {
00901 if (*option == '+')
00902 break;
00903 i++;
00904 if (i == (long) (argc-1))
00905 ThrowConvertException(OptionError,"MissingArgument",option);
00906 if (IsGeometry(argv[i]) == MagickFalse)
00907 ThrowConvertInvalidArgumentException(option,argv[i]);
00908 break;
00909 }
00910 if (LocaleCompare("colors",option+1) == 0)
00911 {
00912 if (*option == '+')
00913 break;
00914 i++;
00915 if ((i == (long) (argc-1)) ||
00916 (IsGeometry(argv[i]) == MagickFalse))
00917 ThrowConvertException(OptionError,"MissingArgument",option);
00918 break;
00919 }
00920 if (LocaleCompare("colorspace",option+1) == 0)
00921 {
00922 long
00923 colorspace;
00924
00925 if (*option == '+')
00926 break;
00927 i++;
00928 if (i == (long) (argc-1))
00929 ThrowConvertException(OptionError,"MissingArgument",option);
00930 colorspace=ParseMagickOption(MagickColorspaceOptions,
00931 MagickFalse,argv[i]);
00932 if (colorspace < 0)
00933 ThrowConvertException(OptionError,"UnrecognizedColorspace",
00934 argv[i]);
00935 break;
00936 }
00937 if (LocaleCompare("combine",option+1) == 0)
00938 break;
00939 if (LocaleCompare("comment",option+1) == 0)
00940 {
00941 if (*option == '+')
00942 break;
00943 i++;
00944 if (i == (long) argc)
00945 ThrowConvertException(OptionError,"MissingArgument",option);
00946 break;
00947 }
00948 if (LocaleCompare("compose",option+1) == 0)
00949 {
00950 long
00951 compose;
00952
00953 if (*option == '+')
00954 break;
00955 i++;
00956 if (i == (long) argc)
00957 ThrowConvertException(OptionError,"MissingArgument",option);
00958 compose=ParseMagickOption(MagickComposeOptions,MagickFalse,
00959 argv[i]);
00960 if (compose < 0)
00961 ThrowConvertException(OptionError,"UnrecognizedComposeOperator",
00962 argv[i]);
00963 break;
00964 }
00965 if (LocaleCompare("composite",option+1) == 0)
00966 break;
00967 if (LocaleCompare("compress",option+1) == 0)
00968 {
00969 long
00970 compress;
00971
00972 if (*option == '+')
00973 break;
00974 i++;
00975 if (i == (long) (argc-1))
00976 ThrowConvertException(OptionError,"MissingArgument",option);
00977 compress=ParseMagickOption(MagickCompressOptions,MagickFalse,
00978 argv[i]);
00979 if (compress < 0)
00980 ThrowConvertException(OptionError,"UnrecognizedImageCompression",
00981 argv[i]);
00982 break;
00983 }
00984 if (LocaleCompare("contrast",option+1) == 0)
00985 break;
00986 if (LocaleCompare("contrast-stretch",option+1) == 0)
00987 {
00988 i++;
00989 if (i == (long) (argc-1))
00990 ThrowConvertException(OptionError,"MissingArgument",option);
00991 if (IsGeometry(argv[i]) == MagickFalse)
00992 ThrowConvertInvalidArgumentException(option,argv[i]);
00993 break;
00994 }
00995 if (LocaleCompare("convolve",option+1) == 0)
00996 {
00997 if (*option == '+')
00998 break;
00999 i++;
01000 if (i == (long) (argc-1))
01001 ThrowConvertException(OptionError,"MissingArgument",option);
01002 if (IsGeometry(argv[i]) == MagickFalse)
01003 ThrowConvertInvalidArgumentException(option,argv[i]);
01004 break;
01005 }
01006 if (LocaleCompare("crop",option+1) == 0)
01007 {
01008 if (*option == '+')
01009 break;
01010 i++;
01011 if (i == (long) (argc-1))
01012 ThrowConvertException(OptionError,"MissingArgument",option);
01013 if (IsGeometry(argv[i]) == MagickFalse)
01014 ThrowConvertInvalidArgumentException(option,argv[i]);
01015 break;
01016 }
01017 if (LocaleCompare("cycle",option+1) == 0)
01018 {
01019 if (*option == '+')
01020 break;
01021 i++;
01022 if (i == (long) (argc-1))
01023 ThrowConvertException(OptionError,"MissingArgument",option);
01024 if (IsGeometry(argv[i]) == MagickFalse)
01025 ThrowConvertInvalidArgumentException(option,argv[i]);
01026 break;
01027 }
01028 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01029 }
01030 case 'd':
01031 {
01032 if (LocaleCompare("decipher",option+1) == 0)
01033 {
01034 if (*option == '+')
01035 break;
01036 i++;
01037 if (i == (long) (argc-1))
01038 ThrowConvertException(OptionError,"MissingArgument",option);
01039 break;
01040 }
01041 if (LocaleCompare("deconstruct",option+1) == 0)
01042 break;
01043 if (LocaleCompare("debug",option+1) == 0)
01044 {
01045 long
01046 event;
01047
01048 if (*option == '+')
01049 break;
01050 i++;
01051 if (i == (long) argc)
01052 ThrowConvertException(OptionError,"MissingArgument",option);
01053 event=ParseMagickOption(MagickLogEventOptions,MagickFalse,argv[i]);
01054 if (event < 0)
01055 ThrowConvertException(OptionError,"UnrecognizedEventType",
01056 argv[i]);
01057 (void) SetLogEventMask(argv[i]);
01058 break;
01059 }
01060 if (LocaleCompare("define",option+1) == 0)
01061 {
01062 i++;
01063 if (i == (long) argc)
01064 ThrowConvertException(OptionError,"MissingArgument",option);
01065 if (*option == '+')
01066 {
01067 const char
01068 *define;
01069
01070 define=GetImageOption(image_info,argv[i]);
01071 if (define == (const char *) NULL)
01072 ThrowConvertException(OptionError,"NoSuchOption",argv[i]);
01073 break;
01074 }
01075 break;
01076 }
01077 if (LocaleCompare("delay",option+1) == 0)
01078 {
01079 if (*option == '+')
01080 break;
01081 i++;
01082 if (i == (long) argc)
01083 ThrowConvertException(OptionError,"MissingArgument",option);
01084 if (IsGeometry(argv[i]) == MagickFalse)
01085 ThrowConvertInvalidArgumentException(option,argv[i]);
01086 break;
01087 }
01088 if (LocaleCompare("density",option+1) == 0)
01089 {
01090 if (*option == '+')
01091 break;
01092 i++;
01093 if (i == (long) (argc-1))
01094 ThrowConvertException(OptionError,"MissingArgument",option);
01095 if (IsGeometry(argv[i]) == MagickFalse)
01096 ThrowConvertInvalidArgumentException(option,argv[i]);
01097 break;
01098 }
01099 if (LocaleCompare("depth",option+1) == 0)
01100 {
01101 if (*option == '+')
01102 break;
01103 i++;
01104 if (i == (long) (argc-1))
01105 ThrowConvertException(OptionError,"MissingArgument",option);
01106 if (IsGeometry(argv[i]) == MagickFalse)
01107 ThrowConvertInvalidArgumentException(option,argv[i]);
01108 break;
01109 }
01110 if (LocaleCompare("delete",option+1) == 0)
01111 {
01112 if (*option == '+')
01113 break;
01114 i++;
01115 if (i == (long) (argc-1))
01116 ThrowConvertException(OptionError,"MissingArgument",option);
01117 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse)
01118 ThrowConvertInvalidArgumentException(option,argv[i]);
01119 break;
01120 }
01121 if (LocaleCompare("deskew",option+1) == 0)
01122 {
01123 if (*option == '+')
01124 break;
01125 i++;
01126 if (i == (long) (argc-1))
01127 ThrowConvertException(OptionError,"MissingArgument",option);
01128 if (IsGeometry(argv[i]) == MagickFalse)
01129 ThrowConvertInvalidArgumentException(option,argv[i]);
01130 break;
01131 }
01132 if (LocaleCompare("despeckle",option+1) == 0)
01133 break;
01134 if (LocaleCompare("display",option+1) == 0)
01135 {
01136 if (*option == '+')
01137 break;
01138 i++;
01139 if (i == (long) (argc-1))
01140 ThrowConvertException(OptionError,"MissingArgument",option);
01141 break;
01142 }
01143 if (LocaleCompare("dispose",option+1) == 0)
01144 {
01145 long
01146 dispose;
01147
01148 if (*option == '+')
01149 break;
01150 i++;
01151 if (i == (long) argc)
01152 ThrowConvertException(OptionError,"MissingArgument",option);
01153 dispose=ParseMagickOption(MagickDisposeOptions,MagickFalse,argv[i]);
01154 if (dispose < 0)
01155 ThrowConvertException(OptionError,"UnrecognizedDisposeMethod",
01156 argv[i]);
01157 break;
01158 }
01159 if (LocaleCompare("distort",option+1) == 0)
01160 {
01161 long
01162 op;
01163
01164 i++;
01165 if (i == (long) argc)
01166 ThrowConvertException(OptionError,"MissingArgument",option);
01167 op=ParseMagickOption(MagickDistortOptions,MagickFalse,argv[i]);
01168 if (op < 0)
01169 ThrowConvertException(OptionError,"UnrecognizedDistortMethod",
01170 argv[i]);
01171 i++;
01172 if (i == (long) (argc-1))
01173 ThrowConvertException(OptionError,"MissingArgument",option);
01174 break;
01175 }
01176 if (LocaleCompare("dither",option+1) == 0)
01177 {
01178 long
01179 method;
01180
01181 if (*option == '+')
01182 break;
01183 i++;
01184 if (i == (long) argc)
01185 ThrowConvertException(OptionError,"MissingArgument",option);
01186 method=ParseMagickOption(MagickDitherOptions,MagickFalse,argv[i]);
01187 if (method < 0)
01188 ThrowConvertException(OptionError,"UnrecognizedDitherMethod",
01189 argv[i]);
01190 break;
01191 }
01192 if (LocaleCompare("draw",option+1) == 0)
01193 {
01194 if (*option == '+')
01195 break;
01196 i++;
01197 if (i == (long) (argc-1))
01198 ThrowConvertException(OptionError,"MissingArgument",option);
01199 break;
01200 }
01201 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01202 }
01203 case 'e':
01204 {
01205 if (LocaleCompare("edge",option+1) == 0)
01206 {
01207 if (*option == '+')
01208 break;
01209 i++;
01210 if (i == (long) (argc-1))
01211 ThrowConvertException(OptionError,"MissingArgument",option);
01212 if (IsGeometry(argv[i]) == MagickFalse)
01213 ThrowConvertInvalidArgumentException(option,argv[i]);
01214 break;
01215 }
01216 if (LocaleCompare("emboss",option+1) == 0)
01217 {
01218 if (*option == '+')
01219 break;
01220 i++;
01221 if (i == (long) (argc-1))
01222 ThrowConvertException(OptionError,"MissingArgument",option);
01223 if (IsGeometry(argv[i]) == MagickFalse)
01224 ThrowConvertInvalidArgumentException(option,argv[i]);
01225 break;
01226 }
01227 if (LocaleCompare("encipher",option+1) == 0)
01228 {
01229 if (*option == '+')
01230 break;
01231 i++;
01232 if (i == (long) (argc-1))
01233 ThrowConvertException(OptionError,"MissingArgument",option);
01234 break;
01235 }
01236 if (LocaleCompare("encoding",option+1) == 0)
01237 {
01238 if (*option == '+')
01239 break;
01240 i++;
01241 if (i == (long) (argc-1))
01242 ThrowConvertException(OptionError,"MissingArgument",option);
01243 break;
01244 }
01245 if (LocaleCompare("endian",option+1) == 0)
01246 {
01247 long
01248 endian;
01249
01250 if (*option == '+')
01251 break;
01252 i++;
01253 if (i == (long) (argc-1))
01254 ThrowConvertException(OptionError,"MissingArgument",option);
01255 endian=ParseMagickOption(MagickEndianOptions,MagickFalse,
01256 argv[i]);
01257 if (endian < 0)
01258 ThrowConvertException(OptionError,"UnrecognizedEndianType",
01259 argv[i]);
01260 break;
01261 }
01262 if (LocaleCompare("enhance",option+1) == 0)
01263 break;
01264 if (LocaleCompare("equalize",option+1) == 0)
01265 break;
01266 if (LocaleCompare("evaluate",option+1) == 0)
01267 {
01268 long
01269 op;
01270
01271 if (*option == '+')
01272 break;
01273 i++;
01274 if (i == (long) argc)
01275 ThrowConvertException(OptionError,"MissingArgument",option);
01276 op=ParseMagickOption(MagickEvaluateOptions,MagickFalse,argv[i]);
01277 if (op < 0)
01278 ThrowConvertException(OptionError,"UnrecognizedEvaluateOperator",
01279 argv[i]);
01280 i++;
01281 if (i == (long) (argc-1))
01282 ThrowConvertException(OptionError,"MissingArgument",option);
01283 if (IsGeometry(argv[i]) == MagickFalse)
01284 ThrowConvertInvalidArgumentException(option,argv[i]);
01285 break;
01286 }
01287 if (LocaleCompare("extent",option+1) == 0)
01288 {
01289 if (*option == '+')
01290 break;
01291 i++;
01292 if (i == (long) (argc-1))
01293 ThrowConvertException(OptionError,"MissingArgument",option);
01294 if (IsGeometry(argv[i]) == MagickFalse)
01295 ThrowConvertInvalidArgumentException(option,argv[i]);
01296 break;
01297 }
01298 if (LocaleCompare("extract",option+1) == 0)
01299 {
01300 if (*option == '+')
01301 break;
01302 i++;
01303 if (i == (long) (argc-1))
01304 ThrowConvertException(OptionError,"MissingArgument",option);
01305 if (IsGeometry(argv[i]) == MagickFalse)
01306 ThrowConvertInvalidArgumentException(option,argv[i]);
01307 break;
01308 }
01309 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01310 }
01311 case 'f':
01312 {
01313 if (LocaleCompare("family",option+1) == 0)
01314 {
01315 if (*option == '+')
01316 break;
01317 i++;
01318 if (i == (long) (argc-1))
01319 ThrowConvertException(OptionError,"MissingArgument",option);
01320 break;
01321 }
01322 if (LocaleCompare("fill",option+1) == 0)
01323 {
01324 if (*option == '+')
01325 break;
01326 i++;
01327 if (i == (long) (argc-1))
01328 ThrowConvertException(OptionError,"MissingArgument",option);
01329 break;
01330 }
01331 if (LocaleCompare("filter",option+1) == 0)
01332 {
01333 long
01334 filter;
01335
01336 if (*option == '+')
01337 break;
01338 i++;
01339 if (i == (long) (argc-1))
01340 ThrowConvertException(OptionError,"MissingArgument",option);
01341 filter=ParseMagickOption(MagickFilterOptions,MagickFalse,argv[i]);
01342 if (filter < 0)
01343 ThrowConvertException(OptionError,"UnrecognizedImageFilter",
01344 argv[i]);
01345 break;
01346 }
01347 if (LocaleCompare("flatten",option+1) == 0)
01348 break;
01349 if (LocaleCompare("flip",option+1) == 0)
01350 break;
01351 if (LocaleCompare("flop",option+1) == 0)
01352 break;
01353 if (LocaleCompare("floodfill",option+1) == 0)
01354 {
01355 if (*option == '+')
01356 break;
01357 i++;
01358 if (i == (long) (argc-1))
01359 ThrowConvertException(OptionError,"MissingArgument",option);
01360 if (IsGeometry(argv[i]) == MagickFalse)
01361 ThrowConvertInvalidArgumentException(option,argv[i]);
01362 i++;
01363 if (i == (long) (argc-1))
01364 ThrowConvertException(OptionError,"MissingArgument",option);
01365 break;
01366 }
01367 if (LocaleCompare("font",option+1) == 0)
01368 {
01369 if (*option == '+')
01370 break;
01371 i++;
01372 if (i == (long) (argc-1))
01373 ThrowConvertException(OptionError,"MissingArgument",option);
01374 break;
01375 }
01376 if (LocaleCompare("format",option+1) == 0)
01377 {
01378 if (*option == '+')
01379 break;
01380 i++;
01381 if (i == (long) (argc-1))
01382 ThrowConvertException(OptionError,"MissingArgument",option);
01383 format=argv[i];
01384 break;
01385 }
01386 if (LocaleCompare("frame",option+1) == 0)
01387 {
01388 if (*option == '+')
01389 break;
01390 i++;
01391 if (i == (long) (argc-1))
01392 ThrowConvertException(OptionError,"MissingArgument",option);
01393 if (IsGeometry(argv[i]) == MagickFalse)
01394 ThrowConvertInvalidArgumentException(option,argv[i]);
01395 break;
01396 }
01397 if (LocaleCompare("function",option+1) == 0)
01398 {
01399 long
01400 op;
01401
01402 if (*option == '+')
01403 break;
01404 i++;
01405 if (i == (long) argc)
01406 ThrowConvertException(OptionError,"MissingArgument",option);
01407 op=ParseMagickOption(MagickFunctionOptions,MagickFalse,argv[i]);
01408 if (op < 0)
01409 ThrowConvertException(OptionError,"UnrecognizedFunction",argv[i]);
01410 i++;
01411 if (i == (long) (argc-1))
01412 ThrowConvertException(OptionError,"MissingArgument",option);
01413 break;
01414 }
01415 if (LocaleCompare("fuzz",option+1) == 0)
01416 {
01417 if (*option == '+')
01418 break;
01419 i++;
01420 if (i == (long) (argc-1))
01421 ThrowConvertException(OptionError,"MissingArgument",option);
01422 if (IsGeometry(argv[i]) == MagickFalse)
01423 ThrowConvertInvalidArgumentException(option,argv[i]);
01424 break;
01425 }
01426 if (LocaleCompare("fx",option+1) == 0)
01427 {
01428 if (*option == '+')
01429 break;
01430 i++;
01431 if (i == (long) (argc-1))
01432 ThrowConvertException(OptionError,"MissingArgument",option);
01433 break;
01434 }
01435 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01436 }
01437 case 'g':
01438 {
01439 if (LocaleCompare("gamma",option+1) == 0)
01440 {
01441 i++;
01442 if (i == (long) (argc-1))
01443 ThrowConvertException(OptionError,"MissingArgument",option);
01444 if (IsGeometry(argv[i]) == MagickFalse)
01445 ThrowConvertInvalidArgumentException(option,argv[i]);
01446 break;
01447 }
01448 if ((LocaleCompare("gaussian-blur",option+1) == 0) ||
01449 (LocaleCompare("gaussian",option+1) == 0))
01450 {
01451 i++;
01452 if (i == (long) (argc-1))
01453 ThrowConvertException(OptionError,"MissingArgument",option);
01454 if (IsGeometry(argv[i]) == MagickFalse)
01455 ThrowConvertInvalidArgumentException(option,argv[i]);
01456 break;
01457 }
01458 if (LocaleCompare("geometry",option+1) == 0)
01459 {
01460 if (*option == '+')
01461 break;
01462 i++;
01463 if (i == (long) (argc-1))
01464 ThrowConvertException(OptionError,"MissingArgument",option);
01465 if (IsGeometry(argv[i]) == MagickFalse)
01466 ThrowConvertInvalidArgumentException(option,argv[i]);
01467 break;
01468 }
01469 if (LocaleCompare("gravity",option+1) == 0)
01470 {
01471 long
01472 gravity;
01473
01474 if (*option == '+')
01475 break;
01476 i++;
01477 if (i == (long) (argc-1))
01478 ThrowConvertException(OptionError,"MissingArgument",option);
01479 gravity=ParseMagickOption(MagickGravityOptions,MagickFalse,
01480 argv[i]);
01481 if (gravity < 0)
01482 ThrowConvertException(OptionError,"UnrecognizedGravityType",
01483 argv[i]);
01484 break;
01485 }
01486 if (LocaleCompare("green-primary",option+1) == 0)
01487 {
01488 if (*option == '+')
01489 break;
01490 i++;
01491 if (i == (long) (argc-1))
01492 ThrowConvertException(OptionError,"MissingArgument",option);
01493 if (IsGeometry(argv[i]) == MagickFalse)
01494 ThrowConvertInvalidArgumentException(option,argv[i]);
01495 break;
01496 }
01497 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01498 }
01499 case 'h':
01500 {
01501 if (LocaleCompare("hald-clut",option+1) == 0)
01502 break;
01503 if ((LocaleCompare("help",option+1) == 0) ||
01504 (LocaleCompare("-help",option+1) == 0))
01505 return(ConvertUsage());
01506 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01507 }
01508 case 'i':
01509 {
01510 if (LocaleCompare("identify",option+1) == 0)
01511 break;
01512 if (LocaleCompare("implode",option+1) == 0)
01513 {
01514 if (*option == '+')
01515 break;
01516 i++;
01517 if (i == (long) (argc-1))
01518 ThrowConvertException(OptionError,"MissingArgument",option);
01519 if (IsGeometry(argv[i]) == MagickFalse)
01520 ThrowConvertInvalidArgumentException(option,argv[i]);
01521 break;
01522 }
01523 if (LocaleCompare("insert",option+1) == 0)
01524 {
01525 if (*option == '+')
01526 break;
01527 i++;
01528 if (i == (long) (argc-1))
01529 ThrowConvertException(OptionError,"MissingArgument",option);
01530 if (IsGeometry(argv[i]) == MagickFalse)
01531 ThrowConvertInvalidArgumentException(option,argv[i]);
01532 break;
01533 }
01534 if (LocaleCompare("intent",option+1) == 0)
01535 {
01536 long
01537 intent;
01538
01539 if (*option == '+')
01540 break;
01541 i++;
01542 if (i == (long) (argc-1))
01543 ThrowConvertException(OptionError,"MissingArgument",option);
01544 intent=ParseMagickOption(MagickIntentOptions,MagickFalse,
01545 argv[i]);
01546 if (intent < 0)
01547 ThrowConvertException(OptionError,"UnrecognizedIntentType",
01548 argv[i]);
01549 break;
01550 }
01551 if (LocaleCompare("interlace",option+1) == 0)
01552 {
01553 long
01554 interlace;
01555
01556 if (*option == '+')
01557 break;
01558 i++;
01559 if (i == (long) (argc-1))
01560 ThrowConvertException(OptionError,"MissingArgument",option);
01561 interlace=ParseMagickOption(MagickInterlaceOptions,MagickFalse,
01562 argv[i]);
01563 if (interlace < 0)
01564 ThrowConvertException(OptionError,"UnrecognizedInterlaceType",
01565 argv[i]);
01566 break;
01567 }
01568 if (LocaleCompare("interpolate",option+1) == 0)
01569 {
01570 long
01571 interpolate;
01572
01573 if (*option == '+')
01574 break;
01575 i++;
01576 if (i == (long) argc)
01577 ThrowConvertException(OptionError,"MissingArgument",option);
01578 interpolate=ParseMagickOption(MagickInterpolateOptions,MagickFalse,
01579 argv[i]);
01580 if (interpolate < 0)
01581 ThrowConvertException(OptionError,"UnrecognizedInterpolateMethod",
01582 argv[i]);
01583 break;
01584 }
01585 if (LocaleCompare("interword-spacing",option+1) == 0)
01586 {
01587 if (*option == '+')
01588 break;
01589 i++;
01590 if (i == (long) (argc-1))
01591 ThrowConvertException(OptionError,"MissingArgument",option);
01592 if (IsGeometry(argv[i]) == MagickFalse)
01593 ThrowConvertInvalidArgumentException(option,argv[i]);
01594 break;
01595 }
01596 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01597 }
01598 case 'k':
01599 {
01600 if (LocaleCompare("kerning",option+1) == 0)
01601 {
01602 if (*option == '+')
01603 break;
01604 i++;
01605 if (i == (long) (argc-1))
01606 ThrowConvertException(OptionError,"MissingArgument",option);
01607 if (IsGeometry(argv[i]) == MagickFalse)
01608 ThrowConvertInvalidArgumentException(option,argv[i]);
01609 break;
01610 }
01611 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01612 }
01613 case 'l':
01614 {
01615 if (LocaleCompare("label",option+1) == 0)
01616 {
01617 if (*option == '+')
01618 break;
01619 i++;
01620 if (i == (long) argc)
01621 ThrowConvertException(OptionError,"MissingArgument",option);
01622 break;
01623 }
01624 if (LocaleCompare("lat",option+1) == 0)
01625 {
01626 if (*option == '+')
01627 break;
01628 i++;
01629 if (i == (long) (argc-1))
01630 ThrowConvertException(OptionError,"MissingArgument",option);
01631 if (IsGeometry(argv[i]) == MagickFalse)
01632 ThrowConvertInvalidArgumentException(option,argv[i]);
01633 break;
01634 }
01635 if (LocaleCompare("layers",option+1) == 0)
01636 {
01637 long
01638 type;
01639
01640 if (*option == '+')
01641 break;
01642 i++;
01643 if (i == (long) (argc-1))
01644 ThrowConvertException(OptionError,"MissingArgument",option);
01645 type=ParseMagickOption(MagickLayerOptions,MagickFalse,argv[i]);
01646 if (type < 0)
01647 ThrowConvertException(OptionError,"UnrecognizedLayerMethod",
01648 argv[i]);
01649 break;
01650 }
01651 if (LocaleCompare("level",option+1) == 0)
01652 {
01653 i++;
01654 if (i == (long) (argc-1))
01655 ThrowConvertException(OptionError,"MissingArgument",option);
01656 if (IsGeometry(argv[i]) == MagickFalse)
01657 ThrowConvertInvalidArgumentException(option,argv[i]);
01658 break;
01659 }
01660 if (LocaleCompare("level-colors",option+1) == 0)
01661 {
01662 i++;
01663 if (i == (long) (argc-1))
01664 ThrowConvertException(OptionError,"MissingArgument",option);
01665 break;
01666 }
01667 if (LocaleCompare("linewidth",option+1) == 0)
01668 {
01669 if (*option == '+')
01670 break;
01671 i++;
01672 if (i == (long) (argc-1))
01673 ThrowConvertException(OptionError,"MissingArgument",option);
01674 if (IsGeometry(argv[i]) == MagickFalse)
01675 ThrowConvertInvalidArgumentException(option,argv[i]);
01676 break;
01677 }
01678 if (LocaleCompare("liquid-rescale",option+1) == 0)
01679 {
01680 i++;
01681 if (i == (long) (argc-1))
01682 ThrowConvertException(OptionError,"MissingArgument",option);
01683 if (IsGeometry(argv[i]) == MagickFalse)
01684 ThrowConvertInvalidArgumentException(option,argv[i]);
01685 break;
01686 }
01687 if (LocaleCompare("limit",option+1) == 0)
01688 {
01689 char
01690 *p;
01691
01692 double
01693 value;
01694
01695 long
01696 resource;
01697
01698 if (*option == '+')
01699 break;
01700 i++;
01701 if (i == (long) argc)
01702 ThrowConvertException(OptionError,"MissingArgument",option);
01703 resource=ParseMagickOption(MagickResourceOptions,MagickFalse,
01704 argv[i]);
01705 if (resource < 0)
01706 ThrowConvertException(OptionError,"UnrecognizedResourceType",
01707 argv[i]);
01708 i++;
01709 if (i == (long) argc)
01710 ThrowConvertException(OptionError,"MissingArgument",option);
01711 value=strtod(argv[i],&p);
01712 if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0))
01713 ThrowConvertInvalidArgumentException(option,argv[i]);
01714 break;
01715 }
01716 if (LocaleCompare("linear-stretch",option+1) == 0)
01717 {
01718 i++;
01719 if (i == (long) (argc-1))
01720 ThrowConvertException(OptionError,"MissingArgument",option);
01721 if (IsGeometry(argv[i]) == MagickFalse)
01722 ThrowConvertInvalidArgumentException(option,argv[i]);
01723 break;
01724 }
01725 if (LocaleCompare("list",option+1) == 0)
01726 {
01727 long
01728 list;
01729
01730 if (*option == '+')
01731 break;
01732 i++;
01733 if (i == (long) argc)
01734 ThrowConvertException(OptionError,"MissingArgument",option);
01735 list=ParseMagickOption(MagickListOptions,MagickFalse,argv[i]);
01736 if (list < 0)
01737 ThrowConvertException(OptionError,"UnrecognizedListType",argv[i]);
01738 (void) MogrifyImageInfo(image_info,(int) (i-j+1),(const char **)
01739 argv+j,exception);
01740 DestroyConvert();
01741 return(MagickTrue);
01742 }
01743 if (LocaleCompare("log",option+1) == 0)
01744 {
01745 if (*option == '+')
01746 break;
01747 i++;
01748 if ((i == (long) argc) ||
01749 (strchr(argv[i],'%') == (char *) NULL))
01750 ThrowConvertException(OptionError,"MissingArgument",option);
01751 break;
01752 }
01753 if (LocaleCompare("loop",option+1) == 0)
01754 {
01755 if (*option == '+')
01756 break;
01757 i++;
01758 if (i == (long) (argc-1))
01759 ThrowConvertException(OptionError,"MissingArgument",option);
01760 if (IsGeometry(argv[i]) == MagickFalse)
01761 ThrowConvertInvalidArgumentException(option,argv[i]);
01762 break;
01763 }
01764 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01765 }
01766 case 'm':
01767 {
01768 if (LocaleCompare("map",option+1) == 0)
01769 {
01770 if (*option == '+')
01771 break;
01772 i++;
01773 if (i == (long) (argc-1))
01774 ThrowConvertException(OptionError,"MissingArgument",option);
01775 break;
01776 }
01777 if (LocaleCompare("mask",option+1) == 0)
01778 {
01779 if (*option == '+')
01780 break;
01781 i++;
01782 if (i == (long) (argc-1))
01783 ThrowConvertException(OptionError,"MissingArgument",option);
01784 break;
01785 }
01786 if (LocaleCompare("matte",option+1) == 0)
01787 break;
01788 if (LocaleCompare("mattecolor",option+1) == 0)
01789 {
01790 if (*option == '+')
01791 break;
01792 i++;
01793 if (i == (long) (argc-1))
01794 ThrowConvertException(OptionError,"MissingArgument",option);
01795 break;
01796 }
01797 if (LocaleCompare("median",option+1) == 0)
01798 {
01799 if (*option == '+')
01800 break;
01801 i++;
01802 if (i == (long) (argc-1))
01803 ThrowConvertException(OptionError,"MissingArgument",option);
01804 if (IsGeometry(argv[i]) == MagickFalse)
01805 ThrowConvertInvalidArgumentException(option,argv[i]);
01806 break;
01807 }
01808 if (LocaleCompare("modulate",option+1) == 0)
01809 {
01810 if (*option == '+')
01811 break;
01812 i++;
01813 if (i == (long) (argc-1))
01814 ThrowConvertException(OptionError,"MissingArgument",option);
01815 if (IsGeometry(argv[i]) == MagickFalse)
01816 ThrowConvertInvalidArgumentException(option,argv[i]);
01817 break;
01818 }
01819 if (LocaleCompare("monitor",option+1) == 0)
01820 break;
01821 if (LocaleCompare("monochrome",option+1) == 0)
01822 break;
01823 if (LocaleCompare("morph",option+1) == 0)
01824 {
01825 if (*option == '+')
01826 break;
01827 i++;
01828 if (i == (long) (argc-1))
01829 ThrowConvertException(OptionError,"MissingArgument",option);
01830 if (IsGeometry(argv[i]) == MagickFalse)
01831 ThrowConvertInvalidArgumentException(option,argv[i]);
01832 break;
01833 }
01834 if (LocaleCompare("mosaic",option+1) == 0)
01835 break;
01836 if (LocaleCompare("motion-blur",option+1) == 0)
01837 {
01838 if (*option == '+')
01839 break;
01840 i++;
01841 if (i == (long) (argc-1))
01842 ThrowConvertException(OptionError,"MissingArgument",option);
01843 if (IsGeometry(argv[i]) == MagickFalse)
01844 ThrowConvertInvalidArgumentException(option,argv[i]);
01845 break;
01846 }
01847 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01848 }
01849 case 'n':
01850 {
01851 if (LocaleCompare("negate",option+1) == 0)
01852 break;
01853 if (LocaleCompare("noise",option+1) == 0)
01854 {
01855 i++;
01856 if (i == (long) (argc-1))
01857 ThrowConvertException(OptionError,"MissingArgument",option);
01858 if (*option == '+')
01859 {
01860 long
01861 noise;
01862
01863 noise=ParseMagickOption(MagickNoiseOptions,MagickFalse,argv[i]);
01864 if (noise < 0)
01865 ThrowConvertException(OptionError,"UnrecognizedNoiseType",
01866 argv[i]);
01867 break;
01868 }
01869 if (IsGeometry(argv[i]) == MagickFalse)
01870 ThrowConvertInvalidArgumentException(option,argv[i]);
01871 break;
01872 }
01873 if (LocaleCompare("noop",option+1) == 0)
01874 break;
01875 if (LocaleCompare("normalize",option+1) == 0)
01876 break;
01877 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01878 }
01879 case 'o':
01880 {
01881 if (LocaleCompare("opaque",option+1) == 0)
01882 {
01883 i++;
01884 if (i == (long) (argc-1))
01885 ThrowConvertException(OptionError,"MissingArgument",option);
01886 break;
01887 }
01888 if (LocaleCompare("ordered-dither",option+1) == 0)
01889 {
01890 if (*option == '+')
01891 break;
01892 i++;
01893 if (i == (long) (argc-1))
01894 ThrowConvertException(OptionError,"MissingArgument",option);
01895 break;
01896 }
01897 if (LocaleCompare("orient",option+1) == 0)
01898 {
01899 long
01900 orientation;
01901
01902 if (*option == '+')
01903 break;
01904 i++;
01905 if (i == (long) (argc-1))
01906 ThrowConvertException(OptionError,"MissingArgument",option);
01907 orientation=ParseMagickOption(MagickOrientationOptions,
01908 MagickFalse,argv[i]);
01909 if (orientation < 0)
01910 ThrowConvertException(OptionError,"UnrecognizedImageOrientation",
01911 argv[i]);
01912 break;
01913 }
01914 ThrowConvertException(OptionError,"UnrecognizedOption",argv[i])
01915 }
01916 case 'p':
01917 {
01918 if (LocaleCompare("page",option+1) == 0)
01919 {
01920 if (*option == '+')
01921 break;
01922 i++;
01923 if (i == (long) argc)
01924 ThrowConvertException(OptionError,"MissingArgument",option);
01925 break;
01926 }
01927 if (LocaleCompare("paint",option+1) == 0)
01928 {
01929 if (*option == '+')
01930 break;
01931 i++;
01932 if (i == (long) (argc-1))
01933 ThrowConvertException(OptionError,"MissingArgument",option);
01934 if (IsGeometry(argv[i]) == MagickFalse)
01935 ThrowConvertInvalidArgumentException(option,argv[i]);
01936 break;
01937 }
01938 if (LocaleCompare("ping",option+1) == 0)
01939 break;
01940 if (LocaleCompare("pointsize",option+1) == 0)
01941 {
01942 if (*option == '+')
01943 break;
01944 i++;
01945 if (i == (long) (argc-1))
01946 ThrowConvertException(OptionError,"MissingArgument",option);
01947 if (IsGeometry(argv[i]) == MagickFalse)
01948 ThrowConvertInvalidArgumentException(option,argv[i]);
01949 break;
01950 }
01951 if (LocaleCompare("polaroid",option+1) == 0)
01952 {
01953 if (*option == '+')
01954 break;
01955 i++;
01956 if (i == (long) (argc-1))
01957 ThrowConvertException(OptionError,"MissingArgument",option);
01958 if (IsGeometry(argv[i]) == MagickFalse)
01959 ThrowConvertInvalidArgumentException(option,argv[i]);
01960 break;
01961 }
01962 if (LocaleCompare("posterize",option+1) == 0)
01963 {
01964 if (*option == '+')
01965 break;
01966 i++;
01967 if (i == (long) (argc-1))
01968 ThrowConvertException(OptionError,"MissingArgument",option);
01969 if (IsGeometry(argv[i]) == MagickFalse)
01970 ThrowConvertInvalidArgumentException(option,argv[i]);
01971 break;
01972 }
01973 if (LocaleCompare("preview",option+1) == 0)
01974 {
01975 long
01976 preview;
01977
01978 if (*option == '+')
01979 break;
01980 i++;
01981 if (i == (long) (argc-1))
01982 ThrowConvertException(OptionError,"MissingArgument",option);
01983 preview=ParseMagickOption(MagickPreviewOptions,MagickFalse,
01984 argv[i]);
01985 if (preview < 0)
01986 ThrowConvertException(OptionError,"UnrecognizedPreviewType",
01987 argv[i]);
01988 break;
01989 }
01990 if (LocaleCompare("print",option+1) == 0)
01991 {
01992 if (*option == '+')
01993 break;
01994 i++;
01995 if (i == (long) (argc-1))
01996 ThrowConvertException(OptionError,"MissingArgument",option);
01997 break;
01998 }
01999 if (LocaleCompare("process",option+1) == 0)
02000 {
02001 if (*option == '+')
02002 break;
02003 i++;
02004 if (i == (long) (argc-1))
02005 ThrowConvertException(OptionError,"MissingArgument",option);
02006 break;
02007 }
02008 if (LocaleCompare("profile",option+1) == 0)
02009 {
02010 i++;
02011 if (i == (long) (argc-1))
02012 ThrowConvertException(OptionError,"MissingArgument",option);
02013 break;
02014 }
02015 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02016 }
02017 case 'q':
02018 {
02019 if (LocaleCompare("quality",option+1) == 0)
02020 {
02021 if (*option == '+')
02022 break;
02023 i++;
02024 if (i == (long) (argc-1))
02025 ThrowConvertException(OptionError,"MissingArgument",option);
02026 if (IsGeometry(argv[i]) == MagickFalse)
02027 ThrowConvertInvalidArgumentException(option,argv[i]);
02028 break;
02029 }
02030 if (LocaleCompare("quantize",option+1) == 0)
02031 {
02032 long
02033 colorspace;
02034
02035 if (*option == '+')
02036 break;
02037 i++;
02038 if (i == (long) (argc-1))
02039 ThrowConvertException(OptionError,"MissingArgument",option);
02040 colorspace=ParseMagickOption(MagickColorspaceOptions,
02041 MagickFalse,argv[i]);
02042 if (colorspace < 0)
02043 ThrowConvertException(OptionError,"UnrecognizedColorspace",
02044 argv[i]);
02045 break;
02046 }
02047 if (LocaleCompare("quiet",option+1) == 0)
02048 break;
02049 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02050 }
02051 case 'r':
02052 {
02053 if (LocaleCompare("radial-blur",option+1) == 0)
02054 {
02055 i++;
02056 if (i == (long) (argc-1))
02057 ThrowConvertException(OptionError,"MissingArgument",option);
02058 if (IsGeometry(argv[i]) == MagickFalse)
02059 ThrowConvertInvalidArgumentException(option,argv[i]);
02060 break;
02061 }
02062 if (LocaleCompare("raise",option+1) == 0)
02063 {
02064 i++;
02065 if (i == (long) (argc-1))
02066 ThrowConvertException(OptionError,"MissingArgument",option);
02067 if (IsGeometry(argv[i]) == MagickFalse)
02068 ThrowConvertInvalidArgumentException(option,argv[i]);
02069 break;
02070 }
02071 if (LocaleCompare("random-threshold",option+1) == 0)
02072 {
02073 if (*option == '+')
02074 break;
02075 i++;
02076 if (i == (long) (argc-1))
02077 ThrowConvertException(OptionError,"MissingArgument",option);
02078 if (IsGeometry(argv[i]) == MagickFalse)
02079 ThrowConvertInvalidArgumentException(option,argv[i]);
02080 break;
02081 }
02082 if (LocaleCompare("recolor",option+1) == 0)
02083 {
02084 if (*option == '+')
02085 break;
02086 i++;
02087 if (i == (long) (argc-1))
02088 ThrowConvertException(OptionError,"MissingArgument",option);
02089 if (IsGeometry(argv[i]) == MagickFalse)
02090 ThrowConvertInvalidArgumentException(option,argv[i]);
02091 break;
02092 }
02093 if (LocaleCompare("red-primary",option+1) == 0)
02094 {
02095 if (*option == '+')
02096 break;
02097 i++;
02098 if (i == (long) (argc-1))
02099 ThrowConvertException(OptionError,"MissingArgument",option);
02100 if (IsGeometry(argv[i]) == MagickFalse)
02101 ThrowConvertInvalidArgumentException(option,argv[i]);
02102 break;
02103 }
02104 if (LocaleCompare("regard-warnings",option+1) == 0)
02105 break;
02106 if (LocaleCompare("region",option+1) == 0)
02107 {
02108 if (*option == '+')
02109 break;
02110 i++;
02111 if (i == (long) (argc-1))
02112 ThrowConvertException(OptionError,"MissingArgument",option);
02113 if (IsGeometry(argv[i]) == MagickFalse)
02114 ThrowConvertInvalidArgumentException(option,argv[i]);
02115 break;
02116 }
02117 if (LocaleCompare("remap",option+1) == 0)
02118 {
02119 if (*option == '+')
02120 break;
02121 i++;
02122 if (i == (long) (argc-1))
02123 ThrowConvertException(OptionError,"MissingArgument",option);
02124 break;
02125 }
02126 if (LocaleCompare("render",option+1) == 0)
02127 break;
02128 if (LocaleCompare("repage",option+1) == 0)
02129 {
02130 if (*option == '+')
02131 break;
02132 i++;
02133 if (i == (long) (argc-1))
02134 ThrowConvertException(OptionError,"MissingArgument",option);
02135 if (IsGeometry(argv[i]) == MagickFalse)
02136 ThrowConvertInvalidArgumentException(option,argv[i]);
02137 break;
02138 }
02139 if (LocaleCompare("resample",option+1) == 0)
02140 {
02141 if (*option == '+')
02142 break;
02143 i++;
02144 if (i == (long) (argc-1))
02145 ThrowConvertException(OptionError,"MissingArgument",option);
02146 if (IsGeometry(argv[i]) == MagickFalse)
02147 ThrowConvertInvalidArgumentException(option,argv[i]);
02148 break;
02149 }
02150 if (LocaleCompare("resize",option+1) == 0)
02151 {
02152 if (*option == '+')
02153 break;
02154 i++;
02155 if (i == (long) (argc-1))
02156 ThrowConvertException(OptionError,"MissingArgument",option);
02157 if (IsGeometry(argv[i]) == MagickFalse)
02158 ThrowConvertInvalidArgumentException(option,argv[i]);
02159 break;
02160 }
02161 if (LocaleNCompare("respect-parentheses",option+1,17) == 0)
02162 {
02163 respect_parenthesis=(*option == '-') ? MagickTrue : MagickFalse;
02164 break;
02165 }
02166 if (LocaleCompare("reverse",option+1) == 0)
02167 break;
02168 if (LocaleCompare("roll",option+1) == 0)
02169 {
02170 if (*option == '+')
02171 break;
02172 i++;
02173 if (i == (long) (argc-1))
02174 ThrowConvertException(OptionError,"MissingArgument",option);
02175 if (IsGeometry(argv[i]) == MagickFalse)
02176 ThrowConvertInvalidArgumentException(option,argv[i]);
02177 break;
02178 }
02179 if (LocaleCompare("rotate",option+1) == 0)
02180 {
02181 i++;
02182 if (i == (long) (argc-1))
02183 ThrowConvertException(OptionError,"MissingArgument",option);
02184 if (IsGeometry(argv[i]) == MagickFalse)
02185 ThrowConvertInvalidArgumentException(option,argv[i]);
02186 break;
02187 }
02188 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02189 }
02190 case 's':
02191 {
02192 if (LocaleCompare("sample",option+1) == 0)
02193 {
02194 if (*option == '+')
02195 break;
02196 i++;
02197 if (i == (long) (argc-1))
02198 ThrowConvertException(OptionError,"MissingArgument",option);
02199 if (IsGeometry(argv[i]) == MagickFalse)
02200 ThrowConvertInvalidArgumentException(option,argv[i]);
02201 break;
02202 }
02203 if (LocaleCompare("sampling-factor",option+1) == 0)
02204 {
02205 if (*option == '+')
02206 break;
02207 i++;
02208 if (i == (long) (argc-1))
02209 ThrowConvertException(OptionError,"MissingArgument",option);
02210 if (IsGeometry(argv[i]) == MagickFalse)
02211 ThrowConvertInvalidArgumentException(option,argv[i]);
02212 break;
02213 }
02214 if (LocaleCompare("scale",option+1) == 0)
02215 {
02216 if (*option == '+')
02217 break;
02218 i++;
02219 if (i == (long) (argc-1))
02220 ThrowConvertException(OptionError,"MissingArgument",option);
02221 if (IsGeometry(argv[i]) == MagickFalse)
02222 ThrowConvertInvalidArgumentException(option,argv[i]);
02223 break;
02224 }
02225 if (LocaleCompare("scene",option+1) == 0)
02226 {
02227 if (*option == '+')
02228 break;
02229 i++;
02230 if (i == (long) (argc-1))
02231 ThrowConvertException(OptionError,"MissingArgument",option);
02232 if (IsGeometry(argv[i]) == MagickFalse)
02233 ThrowConvertInvalidArgumentException(option,argv[i]);
02234 break;
02235 }
02236 if (LocaleCompare("seed",option+1) == 0)
02237 {
02238 if (*option == '+')
02239 break;
02240 i++;
02241 if (i == (long) (argc-1))
02242 ThrowConvertException(OptionError,"MissingArgument",option);
02243 if (IsGeometry(argv[i]) == MagickFalse)
02244 ThrowConvertInvalidArgumentException(option,argv[i]);
02245 break;
02246 }
02247 if (LocaleCompare("segment",option+1) == 0)
02248 {
02249 if (*option == '+')
02250 break;
02251 i++;
02252 if (i == (long) (argc-1))
02253 ThrowConvertException(OptionError,"MissingArgument",option);
02254 if (IsGeometry(argv[i]) == MagickFalse)
02255 ThrowConvertInvalidArgumentException(option,argv[i]);
02256 break;
02257 }
02258 if (LocaleCompare("selective-blur",option+1) == 0)
02259 {
02260 i++;
02261 if (i == (long) (argc-1))
02262 ThrowConvertException(OptionError,"MissingArgument",option);
02263 if (IsGeometry(argv[i]) == MagickFalse)
02264 ThrowConvertInvalidArgumentException(option,argv[i]);
02265 break;
02266 }
02267 if (LocaleCompare("separate",option+1) == 0)
02268 break;
02269 if (LocaleCompare("sepia-tone",option+1) == 0)
02270 {
02271 if (*option == '+')
02272 break;
02273 i++;
02274 if (i == (long) (argc-1))
02275 ThrowConvertException(OptionError,"MissingArgument",option);
02276 if (IsGeometry(argv[i]) == MagickFalse)
02277 ThrowConvertInvalidArgumentException(option,argv[i]);
02278 break;
02279 }
02280 if (LocaleCompare("set",option+1) == 0)
02281 {
02282 i++;
02283 if (i == (long) argc)
02284 ThrowConvertException(OptionError,"MissingArgument",option);
02285 if (*option == '+')
02286 break;
02287 i++;
02288 if (i == (long) argc)
02289 ThrowConvertException(OptionError,"MissingArgument",option);
02290 break;
02291 }
02292 if (LocaleCompare("shade",option+1) == 0)
02293 {
02294 i++;
02295 if (i == (long) (argc-1))
02296 ThrowConvertException(OptionError,"MissingArgument",option);
02297 if (IsGeometry(argv[i]) == MagickFalse)
02298 ThrowConvertInvalidArgumentException(option,argv[i]);
02299 break;
02300 }
02301 if (LocaleCompare("shadow",option+1) == 0)
02302 {
02303 if (*option == '+')
02304 break;
02305 i++;
02306 if (i == (long) (argc-1))
02307 ThrowConvertException(OptionError,"MissingArgument",option);
02308 if (IsGeometry(argv[i]) == MagickFalse)
02309 ThrowConvertInvalidArgumentException(option,argv[i]);
02310 break;
02311 }
02312 if (LocaleCompare("sharpen",option+1) == 0)
02313 {
02314 i++;
02315 if (i == (long) (argc-1))
02316 ThrowConvertException(OptionError,"MissingArgument",option);
02317 if (IsGeometry(argv[i]) == MagickFalse)
02318 ThrowConvertInvalidArgumentException(option,argv[i]);
02319 break;
02320 }
02321 if (LocaleCompare("shave",option+1) == 0)
02322 {
02323 if (*option == '+')
02324 break;
02325 i++;
02326 if (i == (long) (argc-1))
02327 ThrowConvertException(OptionError,"MissingArgument",option);
02328 if (IsGeometry(argv[i]) == MagickFalse)
02329 ThrowConvertInvalidArgumentException(option,argv[i]);
02330 break;
02331 }
02332 if (LocaleCompare("shear",option+1) == 0)
02333 {
02334 i++;
02335 if (i == (long) (argc-1))
02336 ThrowConvertException(OptionError,"MissingArgument",option);
02337 if (IsGeometry(argv[i]) == MagickFalse)
02338 ThrowConvertInvalidArgumentException(option,argv[i]);
02339 break;
02340 }
02341 if (LocaleCompare("sigmoidal-contrast",option+1) == 0)
02342 {
02343 i++;
02344 if (i == (long) (argc-1))
02345 ThrowConvertException(OptionError,"MissingArgument",option);
02346 if (IsGeometry(argv[i]) == MagickFalse)
02347 ThrowConvertInvalidArgumentException(option,argv[i]);
02348 break;
02349 }
02350 if (LocaleCompare("size",option+1) == 0)
02351 {
02352 if (*option == '+')
02353 break;
02354 i++;
02355 if (i == (long) (argc-1))
02356 ThrowConvertException(OptionError,"MissingArgument",option);
02357 if (IsGeometry(argv[i]) == MagickFalse)
02358 ThrowConvertInvalidArgumentException(option,argv[i]);
02359 break;
02360 }
02361 if (LocaleCompare("sketch",option+1) == 0)
02362 {
02363 if (*option == '+')
02364 break;
02365 i++;
02366 if (i == (long) (argc-1))
02367 ThrowConvertException(OptionError,"MissingArgument",option);
02368 if (IsGeometry(argv[i]) == MagickFalse)
02369 ThrowConvertInvalidArgumentException(option,argv[i]);
02370 break;
02371 }
02372 if (LocaleCompare("solarize",option+1) == 0)
02373 {
02374 if (*option == '+')
02375 break;
02376 i++;
02377 if (i == (long) (argc-1))
02378 ThrowConvertException(OptionError,"MissingArgument",option);
02379 if (IsGeometry(argv[i]) == MagickFalse)
02380 ThrowConvertInvalidArgumentException(option,argv[i]);
02381 break;
02382 }
02383 if (LocaleCompare("sparse-color",option+1) == 0)
02384 {
02385 long
02386 op;
02387
02388 i++;
02389 if (i == (long) argc)
02390 ThrowConvertException(OptionError,"MissingArgument",option);
02391 op=ParseMagickOption(MagickSparseColorOptions,MagickFalse,argv[i]);
02392 if (op < 0)
02393 ThrowConvertException(OptionError,"UnrecognizedSparseColorMethod",
02394 argv[i]);
02395 i++;
02396 if (i == (long) (argc-1))
02397 ThrowConvertException(OptionError,"MissingArgument",option);
02398 break;
02399 }
02400 if (LocaleCompare("splice",option+1) == 0)
02401 {
02402 if (*option == '+')
02403 break;
02404 i++;
02405 if (i == (long) (argc-1))
02406 ThrowConvertException(OptionError,"MissingArgument",option);
02407 if (IsGeometry(argv[i]) == MagickFalse)
02408 ThrowConvertInvalidArgumentException(option,argv[i]);
02409 break;
02410 }
02411 if (LocaleCompare("spread",option+1) == 0)
02412 {
02413 if (*option == '+')
02414 break;
02415 i++;
02416 if ((i == (long) (argc-1)) ||
02417 (IsGeometry(argv[i]) == MagickFalse))
02418 ThrowConvertException(OptionError,"MissingArgument",option);
02419 break;
02420 }
02421 if (LocaleCompare("stretch",option+1) == 0)
02422 {
02423 long
02424 stretch;
02425
02426 if (*option == '+')
02427 break;
02428 i++;
02429 if (i == (long) (argc-1))
02430 ThrowConvertException(OptionError,"MissingArgument",option);
02431 stretch=ParseMagickOption(MagickStretchOptions,MagickFalse,
02432 argv[i]);
02433 if (stretch < 0)
02434 ThrowConvertException(OptionError,"UnrecognizedStyleType",
02435 argv[i]);
02436 break;
02437 }
02438 if (LocaleCompare("strip",option+1) == 0)
02439 break;
02440 if (LocaleCompare("stroke",option+1) == 0)
02441 {
02442 if (*option == '+')
02443 break;
02444 i++;
02445 if (i == (long) (argc-1))
02446 ThrowConvertException(OptionError,"MissingArgument",option);
02447 break;
02448 }
02449 if (LocaleCompare("strokewidth",option+1) == 0)
02450 {
02451 if (*option == '+')
02452 break;
02453 i++;
02454 if (i == (long) (argc-1))
02455 ThrowConvertException(OptionError,"MissingArgument",option);
02456 if (IsGeometry(argv[i]) == MagickFalse)
02457 ThrowConvertInvalidArgumentException(option,argv[i]);
02458 break;
02459 }
02460 if (LocaleCompare("style",option+1) == 0)
02461 {
02462 long
02463 style;
02464
02465 if (*option == '+')
02466 break;
02467 i++;
02468 if (i == (long) (argc-1))
02469 ThrowConvertException(OptionError,"MissingArgument",option);
02470 style=ParseMagickOption(MagickStyleOptions,MagickFalse,argv[i]);
02471 if (style < 0)
02472 ThrowConvertException(OptionError,"UnrecognizedStyleType",
02473 argv[i]);
02474 break;
02475 }
02476 if (LocaleCompare("support",option+1) == 0)
02477 {
02478 i++;
02479 break;
02480 }
02481 if (LocaleCompare("swap",option+1) == 0)
02482 {
02483 if (*option == '+')
02484 break;
02485 i++;
02486 if (i == (long) (argc-1))
02487 ThrowConvertException(OptionError,"MissingArgument",option);
02488 if (IsGeometry(argv[i]) == MagickFalse)
02489 ThrowConvertInvalidArgumentException(option,argv[i]);
02490 break;
02491 }
02492 if (LocaleCompare("swirl",option+1) == 0)
02493 {
02494 if (*option == '+')
02495 break;
02496 i++;
02497 if (i == (long) (argc-1))
02498 ThrowConvertException(OptionError,"MissingArgument",option);
02499 if (IsGeometry(argv[i]) == MagickFalse)
02500 ThrowConvertInvalidArgumentException(option,argv[i]);
02501 break;
02502 }
02503 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02504 }
02505 case 't':
02506 {
02507 if (LocaleCompare("taint",option+1) == 0)
02508 break;
02509 if (LocaleCompare("texture",option+1) == 0)
02510 {
02511 if (*option == '+')
02512 break;
02513 i++;
02514 if (i == (long) (argc-1))
02515 ThrowConvertException(OptionError,"MissingArgument",option);
02516 break;
02517 }
02518 if (LocaleCompare("thumbnail",option+1) == 0)
02519 {
02520 if (*option == '+')
02521 break;
02522 i++;
02523 if (i == (long) (argc-1))
02524 ThrowConvertException(OptionError,"MissingArgument",option);
02525 if (IsGeometry(argv[i]) == MagickFalse)
02526 ThrowConvertInvalidArgumentException(option,argv[i]);
02527 break;
02528 }
02529 if (LocaleCompare("threshold",option+1) == 0)
02530 {
02531 if (*option == '+')
02532 break;
02533 i++;
02534 if (i == (long) (argc-1))
02535 ThrowConvertException(OptionError,"MissingArgument",option);
02536 if (IsGeometry(argv[i]) == MagickFalse)
02537 ThrowConvertInvalidArgumentException(option,argv[i]);
02538 break;
02539 }
02540 if (LocaleCompare("tile",option+1) == 0)
02541 {
02542 if (*option == '+')
02543 break;
02544 i++;
02545 if (i == (long) (argc-1))
02546 ThrowConvertException(OptionError,"MissingArgument",option);
02547 break;
02548 }
02549 if (LocaleCompare("tile-offset",option+1) == 0)
02550 {
02551 if (*option == '+')
02552 break;
02553 i++;
02554 if (i == (long) (argc-1))
02555 ThrowConvertException(OptionError,"MissingArgument",option);
02556 if (IsGeometry(argv[i]) == MagickFalse)
02557 ThrowConvertInvalidArgumentException(option,argv[i]);
02558 break;
02559 }
02560 if (LocaleCompare("tint",option+1) == 0)
02561 {
02562 if (*option == '+')
02563 break;
02564 i++;
02565 if (i == (long) (argc-1))
02566 ThrowConvertException(OptionError,"MissingArgument",option);
02567 if (IsGeometry(argv[i]) == MagickFalse)
02568 ThrowConvertInvalidArgumentException(option,argv[i]);
02569 break;
02570 }
02571 if (LocaleCompare("transform",option+1) == 0)
02572 break;
02573 if (LocaleCompare("transparent",option+1) == 0)
02574 {
02575 i++;
02576 if (i == (long) (argc-1))
02577 ThrowConvertException(OptionError,"MissingArgument",option);
02578 break;
02579 }
02580 if (LocaleCompare("transparent-color",option+1) == 0)
02581 {
02582 if (*option == '+')
02583 break;
02584 i++;
02585 if (i == (long) (argc-1))
02586 ThrowConvertException(OptionError,"MissingArgument",option);
02587 break;
02588 }
02589 if (LocaleCompare("transpose",option+1) == 0)
02590 break;
02591 if (LocaleCompare("transverse",option+1) == 0)
02592 break;
02593 if (LocaleCompare("treedepth",option+1) == 0)
02594 {
02595 if (*option == '+')
02596 break;
02597 i++;
02598 if (i == (long) (argc-1))
02599 ThrowConvertException(OptionError,"MissingArgument",option);
02600 if (IsGeometry(argv[i]) == MagickFalse)
02601 ThrowConvertInvalidArgumentException(option,argv[i]);
02602 break;
02603 }
02604 if (LocaleCompare("trim",option+1) == 0)
02605 break;
02606 if (LocaleCompare("type",option+1) == 0)
02607 {
02608 long
02609 type;
02610
02611 if (*option == '+')
02612 break;
02613 i++;
02614 if (i == (long) (argc-1))
02615 ThrowConvertException(OptionError,"MissingArgument",option);
02616 type=ParseMagickOption(MagickTypeOptions,MagickFalse,argv[i]);
02617 if (type < 0)
02618 ThrowConvertException(OptionError,"UnrecognizedImageType",
02619 argv[i]);
02620 break;
02621 }
02622 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02623 }
02624 case 'u':
02625 {
02626 if (LocaleCompare("undercolor",option+1) == 0)
02627 {
02628 if (*option == '+')
02629 break;
02630 i++;
02631 if (i == (long) (argc-1))
02632 ThrowConvertException(OptionError,"MissingArgument",option);
02633 break;
02634 }
02635 if (LocaleCompare("unique-colors",option+1) == 0)
02636 break;
02637 if (LocaleCompare("units",option+1) == 0)
02638 {
02639 long
02640 units;
02641
02642 if (*option == '+')
02643 break;
02644 i++;
02645 if (i == (long) (argc-1))
02646 ThrowConvertException(OptionError,"MissingArgument",option);
02647 units=ParseMagickOption(MagickResolutionOptions,MagickFalse,
02648 argv[i]);
02649 if (units < 0)
02650 ThrowConvertException(OptionError,"UnrecognizedUnitsType",
02651 argv[i]);
02652 break;
02653 }
02654 if (LocaleCompare("unsharp",option+1) == 0)
02655 {
02656 if (*option == '+')
02657 break;
02658 i++;
02659 if (i == (long) (argc-1))
02660 ThrowConvertException(OptionError,"MissingArgument",option);
02661 if (IsGeometry(argv[i]) == MagickFalse)
02662 ThrowConvertInvalidArgumentException(option,argv[i]);
02663 break;
02664 }
02665 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02666 }
02667 case 'v':
02668 {
02669 if (LocaleCompare("verbose",option+1) == 0)
02670 break;
02671 if ((LocaleCompare("version",option+1) == 0) ||
02672 (LocaleCompare("-version",option+1) == 0))
02673 {
02674 (void) fprintf(stdout,"Version: %s\n",
02675 GetMagickVersion((unsigned long *) NULL));
02676 (void) fprintf(stdout,"Copyright: %s\n\n",GetMagickCopyright());
02677 break;
02678 }
02679 if (LocaleCompare("view",option+1) == 0)
02680 {
02681 if (*option == '+')
02682 break;
02683 i++;
02684 if (i == (long) (argc-1))
02685 ThrowConvertException(OptionError,"MissingArgument",option);
02686 break;
02687 }
02688 if (LocaleCompare("vignette",option+1) == 0)
02689 {
02690 if (*option == '+')
02691 break;
02692 i++;
02693 if (i == (long) (argc-1))
02694 ThrowConvertException(OptionError,"MissingArgument",option);
02695 if (IsGeometry(argv[i]) == MagickFalse)
02696 ThrowConvertInvalidArgumentException(option,argv[i]);
02697 break;
02698 }
02699 if (LocaleCompare("virtual-pixel",option+1) == 0)
02700 {
02701 long
02702 method;
02703
02704 if (*option == '+')
02705 break;
02706 i++;
02707 if (i == (long) (argc-1))
02708 ThrowConvertException(OptionError,"MissingArgument",option);
02709 method=ParseMagickOption(MagickVirtualPixelOptions,MagickFalse,
02710 argv[i]);
02711 if (method < 0)
02712 ThrowConvertException(OptionError,
02713 "UnrecognizedVirtualPixelMethod",argv[i]);
02714 break;
02715 }
02716 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02717 }
02718 case 'w':
02719 {
02720 if (LocaleCompare("wave",option+1) == 0)
02721 {
02722 i++;
02723 if (i == (long) (argc-1))
02724 ThrowConvertException(OptionError,"MissingArgument",option);
02725 if (IsGeometry(argv[i]) == MagickFalse)
02726 ThrowConvertInvalidArgumentException(option,argv[i]);
02727 break;
02728 }
02729 if (LocaleCompare("weight",option+1) == 0)
02730 {
02731 if (*option == '+')
02732 break;
02733 i++;
02734 if (i == (long) (argc-1))
02735 ThrowConvertException(OptionError,"MissingArgument",option);
02736 break;
02737 }
02738 if (LocaleCompare("white-point",option+1) == 0)
02739 {
02740 if (*option == '+')
02741 break;
02742 i++;
02743 if (i == (long) (argc-1))
02744 ThrowConvertException(OptionError,"MissingArgument",option);
02745 if (IsGeometry(argv[i]) == MagickFalse)
02746 ThrowConvertInvalidArgumentException(option,argv[i]);
02747 break;
02748 }
02749 if (LocaleCompare("white-threshold",option+1) == 0)
02750 {
02751 if (*option == '+')
02752 break;
02753 i++;
02754 if (i == (long) (argc-1))
02755 ThrowConvertException(OptionError,"MissingArgument",option);
02756 if (IsGeometry(argv[i]) == MagickFalse)
02757 ThrowConvertInvalidArgumentException(option,argv[i]);
02758 break;
02759 }
02760 if (LocaleCompare("write",option+1) == 0)
02761 {
02762 i++;
02763 if (i == (long) (argc-1))
02764 ThrowConvertException(OptionError,"MissingArgument",option);
02765 break;
02766 }
02767 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02768 }
02769 case '?':
02770 break;
02771 default:
02772 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02773 }
02774 fire=ParseMagickOption(MagickImageListOptions,MagickFalse,option+1) < 0 ?
02775 MagickFalse : MagickTrue;
02776 if (fire != MagickFalse)
02777 FireImageStack(MagickTrue,MagickTrue,MagickTrue);
02778 }
02779 if (k != 0)
02780 ThrowConvertException(OptionError,"UnbalancedParenthesis",argv[i]);
02781 if (i-- != (long) (argc-1))
02782 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
02783 if (image == (Image *) NULL)
02784 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
02785 FinalizeImageSettings(image_info,image,MagickTrue);
02786 status&=WriteImages(image_info,image,argv[argc-1],exception);
02787 if (metadata != (char **) NULL)
02788 {
02789 char
02790 *text;
02791
02792 text=InterpretImageProperties(image_info,image,format);
02793 if (text == (char *) NULL)
02794 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed",
02795 GetExceptionMessage(errno));
02796 (void) ConcatenateString(&(*metadata),text);
02797 text=DestroyString(text);
02798 }
02799 DestroyConvert();
02800 return(status != 0 ? MagickTrue : MagickFalse);
02801 }