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
00046
00047
00048
00049
00050 #include "magick/studio.h"
00051 #include "magick/annotate.h"
00052 #include "magick/attribute.h"
00053 #include "magick/client.h"
00054 #include "magick/coder.h"
00055 #include "magick/color.h"
00056 #include "magick/configure.h"
00057 #include "magick/constitute.h"
00058 #include "magick/convert.h"
00059 #include "magick/decorate.h"
00060 #include "magick/delegate.h"
00061 #include "magick/draw.h"
00062 #include "magick/effect.h"
00063 #include "magick/exception.h"
00064 #include "magick/exception-private.h"
00065 #include "magick/gem.h"
00066 #include "magick/geometry.h"
00067 #include "magick/image.h"
00068 #include "magick/image-private.h"
00069 #include "magick/list.h"
00070 #include "magick/locale_.h"
00071 #include "magick/log.h"
00072 #include "magick/magic.h"
00073 #include "magick/magick.h"
00074 #include "magick/memory_.h"
00075 #include "magick/module.h"
00076 #include "magick/mogrify.h"
00077 #include "magick/mogrify-private.h"
00078 #include "magick/monitor.h"
00079 #include "magick/montage.h"
00080 #include "magick/option.h"
00081 #include "magick/quantize.h"
00082 #include "magick/random_.h"
00083 #include "magick/resize.h"
00084 #include "magick/resource_.h"
00085 #include "magick/string_.h"
00086 #include "magick/utility.h"
00087 #include "magick/version.h"
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124 static MagickBooleanType ConcatenateImages(int argc,char **argv,
00125 ExceptionInfo *exception)
00126 {
00127 FILE
00128 *input,
00129 *output;
00130
00131 int
00132 c;
00133
00134 register long
00135 i;
00136
00137
00138
00139
00140 output=fopen(argv[argc-1],"wb");
00141 if (output == (FILE *) NULL)
00142 {
00143 ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
00144 argv[argc-1]);
00145 return(MagickFalse);
00146 }
00147 for (i=2; i < (long) (argc-1); i++)
00148 {
00149 input=fopen(argv[i],"rb");
00150 if (input == (FILE *) NULL)
00151 ThrowFileException(exception,FileOpenError,"UnableToOpenFile",argv[i]);
00152 for (c=fgetc(input); c != EOF; c=fgetc(input))
00153 (void) fputc((char) c,output);
00154 (void) fclose(input);
00155 (void) remove(argv[i]);
00156 }
00157 (void) fclose(output);
00158 return(MagickTrue);
00159 }
00160
00161 static void ConvertUsage(void)
00162 {
00163 static const char
00164 *options[]=
00165 {
00166 "-adjoin join images into a single multi-image file",
00167 "-affine matrix affine transform matrix",
00168 "-annotate geometry text",
00169 " annotate the image with text",
00170 "-antialias remove pixel-aliasing",
00171 "-append append an image sequence",
00172 "-authenticate value decrypt image with this password",
00173 "-average average an image sequence",
00174 "-background color background color",
00175 "-bias value add bias when convolving an image",
00176 "-black-threshold value",
00177 " forces all pixels below the threshold into black",
00178 "-blue-primary point chromaticity blue primary point",
00179 "-blur geometry blur the image",
00180 "-border geometry surround image with a border of color",
00181 "-bordercolor color border color",
00182 "-channel type apply option to select image channels",
00183 "-charcoal radius simulate a charcoal drawing",
00184 "-chop geometry remove pixels from the image interior",
00185 "-clip clip along the first path from the 8BIM profile",
00186 "-clip-path id clip along a named path from the 8BIM profile",
00187 "-clone index clone an image",
00188 "-coalesce merge a sequence of images",
00189 "-colorize value colorize the image with the fill color",
00190 "-colors value preferred number of colors in the image",
00191 "-colorspace type alternate image colorspace",
00192 "-combine combine a sequence of images",
00193 "-comment string annotate image with comment",
00194 "-compose operator set image composite operator",
00195 "-composite composite image",
00196 "-compress type type of pixel compression when writing the image",
00197 "-contrast enhance or reduce the image contrast",
00198 "-convolve coefficients",
00199 " apply a convolution kernel to the image",
00200 "-crop geometry cut out a rectangular region of the image",
00201 "-cycle amount cycle the image colormap",
00202 "-debug events display copious debugging information",
00203 "-define format:option",
00204 " define one or more image format options",
00205 "-deconstruct break down an image sequence into constituent parts",
00206 "-delay value display the next image after pausing",
00207 "-delete index delete the image from the image sequence",
00208 "-density geometry horizontal and vertical density of the image",
00209 "-depth value image depth",
00210 "-despeckle reduce the speckles within an image",
00211 "-display server get image or font from this X server",
00212 "-dispose method GIF disposal method",
00213 "-dither apply Floyd/Steinberg error diffusion to image",
00214 "-draw string annotate the image with a graphic primitive",
00215 "-edge radius apply a filter to detect edges in the image",
00216 "-emboss radius emboss an image",
00217 "-encoding type text encoding type",
00218 "-endian type endianness (MSB or LSB) of the image",
00219 "-enhance apply a digital filter to enhance a noisy image",
00220 "-equalize perform histogram equalization to an image",
00221 "-evaluate operator value",
00222 " evaluate an arithmetic, relational, or logical expression",
00223 "-extent geometry set the image size",
00224 "-extract geometry extract area from image",
00225 "-family name render text with this font family",
00226 "-fill color color to use when filling a graphic primitive",
00227 "-filter type use this filter when resizing an image",
00228 "-flatten flatten a sequence of images",
00229 "-flip flip image in the vertical direction",
00230 "-floodfill geometry color",
00231 " floodfill the image with color",
00232 "-flop flop image in the horizontal direction",
00233 "-font name render text with this font",
00234 "-format \"string\" output formatted image characteristics",
00235 "-frame geometry surround image with an ornamental border",
00236 "-fuzz distance colors within this distance are considered equal",
00237 "-fx expression apply mathematical expression to an image channel(s)",
00238 "-gamma value level of gamma correction",
00239 "-gaussian geometry gaussian blur an image",
00240 "-geometry geometry preferred size or location of the image",
00241 "-green-primary point chromaticity green primary point",
00242 "-gravity type horizontal and vertical text placement",
00243 "-help print program options",
00244 "-identify identify the format and characteristics of the image",
00245 "-implode amount implode image pixels about the center",
00246 "-insert index insert last image into the image sequence",
00247 "-intent type type of rendering intent when managing the image color",
00248 "-interlace type type of image interlacing scheme",
00249 "-label name assign a label to an image",
00250 "-lat geometry local adaptive thresholding",
00251 "-level value adjust the level of image contrast",
00252 "-limit type value pixel cache resource limit",
00253 "-log format format of debugging information",
00254 "-loop iterations add Netscape loop extension to your GIF animation",
00255 "-map filename transform image colors to match this set of colors",
00256 "-mask filename set the image clip mask",
00257 "-matte store matte channel if the image has one",
00258 "-mattecolor color frame color",
00259 "-median radius apply a median filter to the image",
00260 "-modulate value vary the brightness, saturation, and hue",
00261 "-monitor monitor progress",
00262 "-monochrome transform image to black and white",
00263 "-morph value morph an image sequence",
00264 "-mosaic create a mosaic from an image sequence",
00265 "-motion-blur geometry",
00266 " simulate motion blur",
00267 "-negate replace every pixel with its complementary color ",
00268 "-noise radius add or reduce noise in an image",
00269 "-normalize transform image to span the full range of colors",
00270 "-opaque color change this color to the fill color",
00271 "-ordered-dither NxN",
00272 " ordered dither the image",
00273 "-orient type image orientation",
00274 "-page geometry size and location of an image canvas (setting)",
00275 "-paint radius simulate an oil painting",
00276 "-ping efficiently determine image attributes",
00277 "-pointsize value font point size",
00278 "-posterize levels reduce the image to a limited number of color levels",
00279 "-preview type image preview type",
00280 "-profile filename add, delete, or apply an image profile",
00281 "-quality value JPEG/MIFF/PNG compression level",
00282 "-quiet suppress all error or warning messages",
00283 "-radial-blur angle radial blur the image",
00284 "-raise value lighten/darken image edges to create a 3-D effect",
00285 "-random-threshold low,high",
00286 " random threshold the image",
00287 "-region geometry apply options to a portion of the image",
00288 "-raise value lighten/darken image edges to create a 3-D effect",
00289 "-red-primary point chromaticity red primary point",
00290 "-render render vector graphics",
00291 "-repage geometry size and location of an image canvas",
00292 "-resample geometry change the resolution of an image",
00293 "-resize geometry resize the image",
00294 "-roll geometry roll an image vertically or horizontally",
00295 "-rotate degrees apply Paeth rotation to the image",
00296 "-sample geometry scale image with pixel sampling",
00297 "-sampling-factor geometry",
00298 " horizontal and vertical sampling factor",
00299 "-scale geometry scale the image",
00300 "-scene value image scene number",
00301 "-seed value pseudo-random number generator seed value",
00302 "-segment values segment an image",
00303 "-separate separate an image channel into a grayscale image",
00304 "-sepia-tone threshold",
00305 " simulate a sepia-toned photo",
00306 "-set attribute value set an image attribute",
00307 "-shade degrees shade the image using a distant light source",
00308 "-shadow geometry simulate an image shadow",
00309 "-sharpen geometry sharpen the image",
00310 "-shave geometry shave pixels from the image edges",
00311 "-shear geometry slide one edge of the image along the X or Y axis",
00312 "-sigmodial-contrast geometry",
00313 " lightness rescaling using sigmoidal contrast enhancement",
00314 "-size geometry width and height of image",
00315 "-solarize threshold negate all pixels above the threshold level",
00316 "-splice geometry splice the background color into the image",
00317 "-spread amount displace image pixels by a random amount",
00318 "-strip strip image of all profiles and comments",
00319 "-stroke color graphic primitive stroke color",
00320 "-strokewidth value graphic primitive stroke width",
00321 "-stretch type render text with this font stretch",
00322 "-style type render text with this font style",
00323 "-support factor resize support: > 1.0 is blurry, < 1.0 is sharp",
00324 "-swap indexes swap two images in the image sequence",
00325 "-swirl degrees swirl image pixels about the center",
00326 "-texture filename name of texture to tile onto the image background",
00327 "-threshold value threshold the image",
00328 "-thumbnail geometry create a thumbnail of the image",
00329 "-tile filename tile image when filling a graphic primitive",
00330 "-tint value tint the image with the fill color",
00331 "-transform affine transform image",
00332 "-transparent color make this color transparent within the image",
00333 "-treedepth value color tree depth",
00334 "-trim trim image edges",
00335 "-type type image type",
00336 "-undercolor color annotation bounding box color",
00337 "-units type the units of image resolution",
00338 "-unsharp geometry sharpen the image",
00339 "-verbose print detailed information about the image",
00340 "-version print version information",
00341 "-view FlashPix viewing transforms",
00342 "-virtual-pixel method",
00343 " virtual pixel access method",
00344 "-wave geometry alter an image along a sine wave",
00345 "-weight type render text with this font weight",
00346 "-white-point point chromaticity white point",
00347 "-white-threshold value",
00348 " forces all pixels above the threshold into white",
00349 "-write filename write images to this file",
00350 (char *) NULL
00351 };
00352
00353 const char
00354 **p;
00355
00356 (void) printf("Version: %s\n",GetMagickVersion((unsigned long *) NULL));
00357 (void) printf("Copyright: %s\n\n",GetMagickCopyright());
00358 (void) printf("Usage: %s [options ...] file [ [options ...] "
00359 "file ...] [options ...] file\n",GetClientName());
00360 (void) printf("\nWhere options include:\n");
00361 for (p=options; *p != (char *) NULL; p++)
00362 (void) printf(" %s\n",*p);
00363 (void) printf(
00364 "\nBy default, the image format of `file' is determined by its magic\n");
00365 (void) printf(
00366 "number. To specify a particular image format, precede the filename\n");
00367 (void) printf(
00368 "with an image format name and a colon (i.e. ps:image) or specify the\n");
00369 (void) printf(
00370 "image type as the filename suffix (i.e. image.ps). Specify 'file' as\n");
00371 (void) printf("'-' for standard input or output.\n");
00372 exit(0);
00373 }
00374
00375 MagickExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info,
00376 int argc,char **argv,char **metadata,ExceptionInfo *exception)
00377 {
00378 #define NotInitialized (unsigned int) (~0)
00379 #define DestroyConvert() \
00380 { \
00381 for ( ; k >= 0; k--) \
00382 image_stack[k]=DestroyImageList(image_stack[k]); \
00383 for (i=0; i < (long) argc; i++) \
00384 argv[i]=(char *) RelinquishMagickMemory(argv[i]); \
00385 argv=(char **) RelinquishMagickMemory(argv); \
00386 }
00387 #define ThrowConvertException(asperity,tag,option) \
00388 { \
00389 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
00390 option); \
00391 DestroyConvert(); \
00392 return(MagickFalse); \
00393 }
00394 #define ThrowConvertInvalidArgumentException(option,argument) \
00395 { \
00396 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
00397 "InvalidArgument","`%s': %s",argument,option); \
00398 DestroyConvert(); \
00399 return(MagickFalse); \
00400 }
00401
00402 char
00403 *filename,
00404 *option;
00405
00406 const char
00407 *format;
00408
00409 Image
00410 *image_stack[MaxImageStackDepth+1];
00411
00412 long
00413 j,
00414 k;
00415
00416 MagickBooleanType
00417 fire,
00418 pend;
00419
00420 MagickStatusType
00421 status;
00422
00423 register long
00424 i;
00425
00426
00427
00428
00429 assert(image_info != (ImageInfo *) NULL);
00430 assert(image_info->signature == MagickSignature);
00431 if (image_info->debug != MagickFalse)
00432 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
00433 assert(exception != (ExceptionInfo *) NULL);
00434 if (argc < 3)
00435 ConvertUsage();
00436 filename=(char *) NULL;
00437 format="%w,%h,%m";
00438 j=1;
00439 k=0;
00440 image_stack[k]=NewImageList();
00441 option=(char *) NULL;
00442 pend=MagickFalse;
00443 status=MagickTrue;
00444
00445
00446
00447 ReadCommandlLine(argc,&argv);
00448 status=ExpandFilenames(&argc,&argv);
00449 if (status == MagickFalse)
00450 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed",
00451 strerror(errno));
00452 if ((argc > 2) && (LocaleCompare("-concatenate",argv[1]) == 0))
00453 return(ConcatenateImages(argc,argv,exception));
00454 for (i=1; i < (long) (argc-1); i++)
00455 {
00456 option=argv[i];
00457 if (LocaleCompare(option,"(") == 0)
00458 {
00459 if (k == MaxImageStackDepth)
00460 ThrowConvertException(OptionError,"ParenthesisNestedTooDeeply",
00461 option);
00462 MogrifyImageStack(image_stack[k],MagickTrue,pend);
00463 k++;
00464 image_stack[k]=NewImageList();
00465 continue;
00466 }
00467 if (LocaleCompare(option,")") == 0)
00468 {
00469 if (k == 0)
00470 ThrowConvertException(OptionError,"UnableToParseExpression",option);
00471 if (image_stack[k] != (Image *) NULL)
00472 {
00473 MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
00474 AppendImageToList(&image_stack[k-1],image_stack[k]);
00475 }
00476 k--;
00477 continue;
00478 }
00479 if (IsMagickOption(option) == MagickFalse)
00480 {
00481 Image
00482 *image;
00483
00484
00485
00486
00487 MogrifyImageStack(image_stack[k],MagickTrue,pend);
00488 filename=argv[i];
00489 (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
00490 if (image_info->ping != MagickFalse)
00491 image=PingImage(image_info,exception);
00492 else
00493 image=ReadImage(image_info,exception);
00494 status&=(image != (Image *) NULL) &&
00495 (exception->severity < ErrorException);
00496 if (image == (Image *) NULL)
00497 continue;
00498 AppendImageToList(&image_stack[k],image);
00499 continue;
00500 }
00501 pend=image_stack[k] != (Image *) NULL ? MagickTrue : MagickFalse;
00502 switch (*(option+1))
00503 {
00504 case 'a':
00505 {
00506 if (LocaleCompare("adjoin",option+1) == 0)
00507 break;
00508 if (LocaleCompare("affine",option+1) == 0)
00509 {
00510 if (*option == '+')
00511 break;
00512 i++;
00513 if (i == (long) (argc-1))
00514 ThrowConvertException(OptionError,"MissingArgument",option);
00515 if (IsGeometry(argv[i]) == MagickFalse)
00516 ThrowConvertInvalidArgumentException(option,argv[i]);
00517 break;
00518 }
00519 if (LocaleCompare("annotate",option+1) == 0)
00520 {
00521 if (*option == '+')
00522 break;
00523 i++;
00524 if (i == (long) (argc-1))
00525 ThrowConvertException(OptionError,"MissingArgument",option);
00526 if (IsGeometry(argv[i]) == MagickFalse)
00527 ThrowConvertInvalidArgumentException(option,argv[i]);
00528 if (i == (long) (argc-1))
00529 ThrowConvertException(OptionError,"MissingArgument",option);
00530 i++;
00531 break;
00532 }
00533 if (LocaleCompare("antialias",option+1) == 0)
00534 break;
00535 if (LocaleCompare("append",option+1) == 0)
00536 break;
00537 if (LocaleCompare("authenticate",option+1) == 0)
00538 {
00539 if (*option == '+')
00540 break;
00541 i++;
00542 if (i == (long) (argc-1))
00543 ThrowConvertException(OptionError,"MissingArgument",option);
00544 break;
00545 }
00546 if (LocaleCompare("average",option+1) == 0)
00547 break;
00548 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00549 }
00550 case 'b':
00551 {
00552 if (LocaleCompare("background",option+1) == 0)
00553 {
00554 if (*option == '+')
00555 break;
00556 i++;
00557 if (i == (long) (argc-1))
00558 ThrowConvertException(OptionError,"MissingArgument",option);
00559 break;
00560 }
00561 if (LocaleCompare("bias",option+1) == 0)
00562 {
00563 if (*option == '+')
00564 break;
00565 i++;
00566 if (i == (long) (argc-1))
00567 ThrowConvertException(OptionError,"MissingArgument",option);
00568 if (IsGeometry(argv[i]) == MagickFalse)
00569 ThrowConvertInvalidArgumentException(option,argv[i]);
00570 break;
00571 }
00572 if (LocaleCompare("black-threshold",option+1) == 0)
00573 {
00574 if (*option == '+')
00575 break;
00576 i++;
00577 if (i == (long) (argc-1))
00578 ThrowConvertException(OptionError,"MissingArgument",option);
00579 if (IsGeometry(argv[i]) == MagickFalse)
00580 ThrowConvertInvalidArgumentException(option,argv[i]);
00581 break;
00582 }
00583 if (LocaleCompare("blue-primary",option+1) == 0)
00584 {
00585 if (*option == '+')
00586 break;
00587 i++;
00588 if (i == (long) (argc-1))
00589 ThrowConvertException(OptionError,"MissingArgument",option);
00590 if (IsGeometry(argv[i]) == MagickFalse)
00591 ThrowConvertInvalidArgumentException(option,argv[i]);
00592 break;
00593 }
00594 if (LocaleCompare("blur",option+1) == 0)
00595 {
00596 if (*option == '+')
00597 break;
00598 i++;
00599 if (i == (long) (argc-1))
00600 ThrowConvertException(OptionError,"MissingArgument",option);
00601 if (IsGeometry(argv[i]) == MagickFalse)
00602 ThrowConvertInvalidArgumentException(option,argv[i]);
00603 break;
00604 }
00605 if (LocaleCompare("border",option+1) == 0)
00606 {
00607 if (*option == '+')
00608 break;
00609 i++;
00610 if (i == (long) (argc-1))
00611 ThrowConvertException(OptionError,"MissingArgument",option);
00612 if (IsGeometry(argv[i]) == MagickFalse)
00613 ThrowConvertInvalidArgumentException(option,argv[i]);
00614 break;
00615 }
00616 if (LocaleCompare("bordercolor",option+1) == 0)
00617 {
00618 if (*option == '+')
00619 break;
00620 i++;
00621 if (i == (long) (argc-1))
00622 ThrowConvertException(OptionError,"MissingArgument",option);
00623 break;
00624 }
00625 if (LocaleCompare("box",option+1) == 0)
00626 {
00627 if (*option == '+')
00628 break;
00629 i++;
00630 if (i == (long) (argc-1))
00631 ThrowConvertException(OptionError,"MissingArgument",option);
00632 break;
00633 }
00634 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00635 }
00636 case 'c':
00637 {
00638 if (LocaleCompare("cache",option+1) == 0)
00639 {
00640 if (*option == '+')
00641 break;
00642 i++;
00643 if (i == (long) (argc-1))
00644 ThrowConvertException(OptionError,"MissingArgument",option);
00645 if (IsGeometry(argv[i]) == MagickFalse)
00646 ThrowConvertInvalidArgumentException(option,argv[i]);
00647 break;
00648 }
00649 if (LocaleCompare("channel",option+1) == 0)
00650 {
00651 long
00652 channel;
00653
00654 if (*option == '+')
00655 break;
00656 i++;
00657 if (i == (long) (argc-1))
00658 ThrowConvertException(OptionError,"MissingArgument",option);
00659 channel=ParseChannelOption(argv[i]);
00660 if (channel < 0)
00661 ThrowConvertException(OptionError,"UnrecognizedChannelType",
00662 argv[i]);
00663 break;
00664 }
00665 if (LocaleCompare("charcoal",option+1) == 0)
00666 {
00667 if (*option == '+')
00668 break;
00669 i++;
00670 if (i == (long) (argc-1))
00671 ThrowConvertException(OptionError,"MissingArgument",option);
00672 if (IsGeometry(argv[i]) == MagickFalse)
00673 ThrowConvertInvalidArgumentException(option,argv[i]);
00674 break;
00675 }
00676 if (LocaleCompare("chop",option+1) == 0)
00677 {
00678 if (*option == '+')
00679 break;
00680 i++;
00681 if (i == (long) (argc-1))
00682 ThrowConvertException(OptionError,"MissingArgument",option);
00683 if (IsGeometry(argv[i]) == MagickFalse)
00684 ThrowConvertInvalidArgumentException(option,argv[i]);
00685 break;
00686 }
00687 if (LocaleCompare("clip",option+1) == 0)
00688 break;
00689 if (LocaleCompare("clip-path",option+1) == 0)
00690 {
00691 i++;
00692 if (i == (long) (argc-1))
00693 ThrowConvertException(OptionError,"MissingArgument",option);
00694 break;
00695 }
00696 if (LocaleCompare("clone",option+1) == 0)
00697 {
00698 Image
00699 *clone_images;
00700
00701 clone_images=image_stack[k];
00702 if (k != 0)
00703 clone_images=image_stack[k-1];
00704 if (clone_images == (Image *) NULL)
00705 ThrowConvertException(ImageError,"ImageSequenceRequired",option);
00706 if (*option == '+')
00707 clone_images=CloneImages(clone_images,"-1",exception);
00708 else
00709 {
00710 i++;
00711 if (i == (long) (argc-1))
00712 ThrowConvertException(OptionError,"MissingArgument",option);
00713 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse)
00714 ThrowConvertInvalidArgumentException(option,argv[i]);
00715 clone_images=CloneImages(clone_images,argv[i],exception);
00716 }
00717 if (clone_images == (Image *) NULL)
00718 ThrowConvertException(OptionError,"NoSuchImage",option);
00719 MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
00720 AppendImageToList(&image_stack[k],clone_images);
00721 break;
00722 }
00723 if (LocaleCompare("coalesce",option+1) == 0)
00724 break;
00725 if (LocaleCompare("colorize",option+1) == 0)
00726 {
00727 if (*option == '+')
00728 break;
00729 i++;
00730 if (i == (long) (argc-1))
00731 ThrowConvertException(OptionError,"MissingArgument",option);
00732 if (IsGeometry(argv[i]) == MagickFalse)
00733 ThrowConvertInvalidArgumentException(option,argv[i]);
00734 break;
00735 }
00736 if (LocaleCompare("colors",option+1) == 0)
00737 {
00738 if (*option == '+')
00739 break;
00740 i++;
00741 if ((i == (long) (argc-1)) ||
00742 (IsGeometry(argv[i]) == MagickFalse))
00743 ThrowConvertException(OptionError,"MissingArgument",option);
00744 break;
00745 }
00746 if (LocaleCompare("colorspace",option+1) == 0)
00747 {
00748 long
00749 colorspace;
00750
00751 if (*option == '+')
00752 break;
00753 i++;
00754 if (i == (long) (argc-1))
00755 ThrowConvertException(OptionError,"MissingArgument",option);
00756 colorspace=ParseMagickOption(MagickColorspaceOptions,
00757 MagickFalse,argv[i]);
00758 if (colorspace < 0)
00759 ThrowConvertException(OptionError,"UnrecognizedColorspace",
00760 argv[i]);
00761 break;
00762 }
00763 if (LocaleCompare("combine",option+1) == 0)
00764 break;
00765 if (LocaleCompare("comment",option+1) == 0)
00766 {
00767 if (*option == '+')
00768 break;
00769 i++;
00770 if (i == (long) argc)
00771 ThrowConvertException(OptionError,"MissingArgument",option);
00772 break;
00773 }
00774 if (LocaleCompare("compose",option+1) == 0)
00775 {
00776 long
00777 compose;
00778
00779 if (*option == '+')
00780 break;
00781 i++;
00782 if (i == (long) argc)
00783 ThrowConvertException(OptionError,"MissingArgument",option);
00784 compose=ParseMagickOption(MagickCompositeOptions,MagickFalse,
00785 argv[i]);
00786 if (compose < 0)
00787 ThrowConvertException(OptionError,
00788 "UnrecognizedComposeOperator",argv[i]);
00789 break;
00790 }
00791 if (LocaleCompare("composite",option+1) == 0)
00792 break;
00793 if (LocaleCompare("compress",option+1) == 0)
00794 {
00795 long
00796 compression;
00797
00798 if (*option == '+')
00799 break;
00800 i++;
00801 if (i == (long) (argc-1))
00802 ThrowConvertException(OptionError,"MissingArgument",option);
00803 compression=ParseMagickOption(MagickCompressionOptions,
00804 MagickFalse,argv[i]);
00805 if (compression < 0)
00806 ThrowConvertException(OptionError,
00807 "UnrecognizedImageCompression",argv[i]);
00808 break;
00809 }
00810 if (LocaleCompare("contrast",option+1) == 0)
00811 break;
00812 if (LocaleCompare("convolve",option+1) == 0)
00813 {
00814 if (*option == '+')
00815 break;
00816 i++;
00817 if (i == (long) (argc-1))
00818 ThrowConvertException(OptionError,"MissingArgument",option);
00819 if (IsGeometry(argv[i]) == MagickFalse)
00820 ThrowConvertInvalidArgumentException(option,argv[i]);
00821 break;
00822 }
00823 if (LocaleCompare("crop",option+1) == 0)
00824 {
00825 if (*option == '+')
00826 break;
00827 i++;
00828 if (i == (long) (argc-1))
00829 ThrowConvertException(OptionError,"MissingArgument",option);
00830 if (IsGeometry(argv[i]) == MagickFalse)
00831 ThrowConvertInvalidArgumentException(option,argv[i]);
00832 break;
00833 }
00834 if (LocaleCompare("cycle",option+1) == 0)
00835 {
00836 if (*option == '+')
00837 break;
00838 i++;
00839 if (i == (long) (argc-1))
00840 ThrowConvertException(OptionError,"MissingArgument",option);
00841 if (IsGeometry(argv[i]) == MagickFalse)
00842 ThrowConvertInvalidArgumentException(option,argv[i]);
00843 break;
00844 }
00845 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00846 }
00847 case 'd':
00848 {
00849 if (LocaleCompare("deconstruct",option+1) == 0)
00850 break;
00851 if (LocaleCompare("debug",option+1) == 0)
00852 {
00853 LogEventType
00854 event_mask;
00855
00856 if (*option == '+')
00857 break;
00858 i++;
00859 if (i == (long) argc)
00860 ThrowConvertException(OptionError,"MissingArgument",option);
00861 event_mask=SetLogEventMask(argv[i]);
00862 if (event_mask == UndefinedEvents)
00863 ThrowConvertException(OptionError,"UnrecognizedEventType",
00864 option);
00865 break;
00866 }
00867 if (LocaleCompare("define",option+1) == 0)
00868 {
00869 i++;
00870 if (i == (long) argc)
00871 ThrowConvertException(OptionError,"MissingArgument",option);
00872 if (*option == '+')
00873 {
00874 const char
00875 *define;
00876
00877 define=GetImageOption(image_info,argv[i]);
00878 if (define == (const char *) NULL)
00879 ThrowConvertException(OptionError,"NoSuchOption",argv[i]);
00880 break;
00881 }
00882 break;
00883 }
00884 if (LocaleCompare("delay",option+1) == 0)
00885 {
00886 if (*option == '+')
00887 break;
00888 i++;
00889 if (i == (long) argc)
00890 ThrowConvertException(OptionError,"MissingArgument",option);
00891 if (IsGeometry(argv[i]) == MagickFalse)
00892 ThrowConvertInvalidArgumentException(option,argv[i]);
00893 break;
00894 }
00895 if (LocaleCompare("density",option+1) == 0)
00896 {
00897 if (*option == '+')
00898 break;
00899 i++;
00900 if (i == (long) (argc-1))
00901 ThrowConvertException(OptionError,"MissingArgument",option);
00902 if (IsGeometry(argv[i]) == MagickFalse)
00903 ThrowConvertInvalidArgumentException(option,argv[i]);
00904 break;
00905 }
00906 if (LocaleCompare("depth",option+1) == 0)
00907 {
00908 if (*option == '+')
00909 break;
00910 i++;
00911 if (i == (long) (argc-1))
00912 ThrowConvertException(OptionError,"MissingArgument",option);
00913 if (IsGeometry(argv[i]) == MagickFalse)
00914 ThrowConvertInvalidArgumentException(option,argv[i]);
00915 break;
00916 }
00917 if (LocaleCompare("delete",option+1) == 0)
00918 {
00919 if (*option == '+')
00920 break;
00921 i++;
00922 if (i == (long) (argc-1))
00923 ThrowConvertException(OptionError,"MissingArgument",option);
00924 if (IsGeometry(argv[i]) == MagickFalse)
00925 ThrowConvertInvalidArgumentException(option,argv[i]);
00926 break;
00927 }
00928 if (LocaleCompare("despeckle",option+1) == 0)
00929 break;
00930 if (LocaleCompare("display",option+1) == 0)
00931 {
00932 if (*option == '+')
00933 break;
00934 i++;
00935 if (i == (long) (argc-1))
00936 ThrowConvertException(OptionError,"MissingArgument",option);
00937 break;
00938 }
00939 if (LocaleCompare("dispose",option+1) == 0)
00940 {
00941 long
00942 dispose;
00943
00944 if (*option == '+')
00945 break;
00946 i++;
00947 if (i == (long) argc)
00948 ThrowConvertException(OptionError,"MissingArgument",option);
00949 dispose=ParseMagickOption(MagickDisposeOptions,MagickFalse,argv[i]);
00950 if (dispose < 0)
00951 ThrowConvertException(OptionError,"UnrecognizedDisposeMethod",
00952 argv[i]);
00953 break;
00954 }
00955 if (LocaleCompare("dither",option+1) == 0)
00956 break;
00957 if (LocaleCompare("draw",option+1) == 0)
00958 {
00959 if (*option == '+')
00960 break;
00961 i++;
00962 if (i == (long) (argc-1))
00963 ThrowConvertException(OptionError,"MissingArgument",option);
00964 break;
00965 }
00966 ThrowConvertException(OptionError,"UnrecognizedOption",option)
00967 }
00968 case 'e':
00969 {
00970 if (LocaleCompare("edge",option+1) == 0)
00971 {
00972 if (*option == '+')
00973 break;
00974 i++;
00975 if (i == (long) (argc-1))
00976 ThrowConvertException(OptionError,"MissingArgument",option);
00977 if (IsGeometry(argv[i]) == MagickFalse)
00978 ThrowConvertInvalidArgumentException(option,argv[i]);
00979 break;
00980 }
00981 if (LocaleCompare("emboss",option+1) == 0)
00982 {
00983 if (*option == '+')
00984 break;
00985 i++;
00986 if (i == (long) (argc-1))
00987 ThrowConvertException(OptionError,"MissingArgument",option);
00988 if (IsGeometry(argv[i]) == MagickFalse)
00989 ThrowConvertInvalidArgumentException(option,argv[i]);
00990 break;
00991 }
00992 if (LocaleCompare("encoding",option+1) == 0)
00993 {
00994 if (*option == '+')
00995 break;
00996 i++;
00997 if (i == (long) (argc-1))
00998 ThrowConvertException(OptionError,"MissingArgument",option);
00999 break;
01000 }
01001 if (LocaleCompare("endian",option+1) == 0)
01002 {
01003 long
01004 endian;
01005
01006 if (*option == '+')
01007 break;
01008 i++;
01009 if (i == (long) (argc-1))
01010 ThrowConvertException(OptionError,"MissingArgument",option);
01011 endian=ParseMagickOption(MagickEndianOptions,MagickFalse,
01012 argv[i]);
01013 if (endian < 0)
01014 ThrowConvertException(OptionError,"UnrecognizedEndianType",
01015 argv[i]);
01016 break;
01017 }
01018 if (LocaleCompare("enhance",option+1) == 0)
01019 break;
01020 if (LocaleCompare("equalize",option+1) == 0)
01021 break;
01022 if (LocaleCompare("evaluate",option+1) == 0)
01023 {
01024 long
01025 op;
01026
01027 if (*option == '+')
01028 break;
01029 i++;
01030 if (i == (long) argc)
01031 ThrowConvertException(OptionError,"MissingArgument",option);
01032 op=ParseMagickOption(MagickEvaluateOptions,MagickFalse,argv[i]);
01033 if (op < 0)
01034 ThrowConvertException(OptionError,
01035 "UnrecognizedEvaluateOperator",argv[i]);
01036 i++;
01037 if (i == (long) (argc-1))
01038 ThrowConvertException(OptionError,"MissingArgument",option);
01039 if (IsGeometry(argv[i]) == MagickFalse)
01040 ThrowConvertInvalidArgumentException(option,argv[i]);
01041 break;
01042 }
01043 if (LocaleCompare("extent",option+1) == 0)
01044 {
01045 if (*option == '+')
01046 break;
01047 i++;
01048 if (i == (long) (argc-1))
01049 ThrowConvertException(OptionError,"MissingArgument",option);
01050 if (IsGeometry(argv[i]) == MagickFalse)
01051 ThrowConvertInvalidArgumentException(option,argv[i]);
01052 break;
01053 }
01054 if (LocaleCompare("extract",option+1) == 0)
01055 {
01056 if (*option == '+')
01057 break;
01058 i++;
01059 if (i == (long) (argc-1))
01060 ThrowConvertException(OptionError,"MissingArgument",option);
01061 if (IsGeometry(argv[i]) == MagickFalse)
01062 ThrowConvertInvalidArgumentException(option,argv[i]);
01063 break;
01064 }
01065 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01066 }
01067 case 'f':
01068 {
01069 if (LocaleCompare("family",option+1) == 0)
01070 {
01071 if (*option == '+')
01072 break;
01073 i++;
01074 if (i == (long) (argc-1))
01075 ThrowConvertException(OptionError,"MissingArgument",option);
01076 break;
01077 }
01078 if (LocaleCompare("fill",option+1) == 0)
01079 {
01080 if (*option == '+')
01081 break;
01082 i++;
01083 if (i == (long) (argc-1))
01084 ThrowConvertException(OptionError,"MissingArgument",option);
01085 break;
01086 }
01087 if (LocaleCompare("filter",option+1) == 0)
01088 {
01089 long
01090 filter;
01091
01092 if (*option == '+')
01093 break;
01094 i++;
01095 if (i == (long) (argc-1))
01096 ThrowConvertException(OptionError,"MissingArgument",option);
01097 filter=ParseMagickOption(MagickFilterOptions,MagickFalse,
01098 argv[i]);
01099 if (filter < 0)
01100 ThrowConvertException(OptionError,"UnrecognizedImageFilter",
01101 argv[i]);
01102 break;
01103 }
01104 if (LocaleCompare("flatten",option+1) == 0)
01105 break;
01106 if (LocaleCompare("flip",option+1) == 0)
01107 break;
01108 if (LocaleCompare("flop",option+1) == 0)
01109 break;
01110 if (LocaleCompare("floodfill",option+1) == 0)
01111 {
01112 if (*option == '+')
01113 break;
01114 i++;
01115 if (i == (long) (argc-1))
01116 ThrowConvertException(OptionError,"MissingArgument",option);
01117 if (IsGeometry(argv[i]) == MagickFalse)
01118 ThrowConvertInvalidArgumentException(option,argv[i]);
01119 if (i == (long) (argc-1))
01120 ThrowConvertException(OptionError,"MissingArgument",option);
01121 i++;
01122 break;
01123 }
01124 if (LocaleCompare("font",option+1) == 0)
01125 {
01126 if (*option == '+')
01127 break;
01128 i++;
01129 if (i == (long) (argc-1))
01130 ThrowConvertException(OptionError,"MissingArgument",option);
01131 break;
01132 }
01133 if (LocaleCompare("format",option+1) == 0)
01134 {
01135 if (*option == '+')
01136 break;
01137 i++;
01138 if (i == (long) (argc-1))
01139 ThrowConvertException(OptionError,"MissingArgument",option);
01140 format=argv[i];
01141 break;
01142 }
01143 if (LocaleCompare("frame",option+1) == 0)
01144 {
01145 if (*option == '+')
01146 break;
01147 i++;
01148 if (i == (long) (argc-1))
01149 ThrowConvertException(OptionError,"MissingArgument",option);
01150 if (IsGeometry(argv[i]) == MagickFalse)
01151 ThrowConvertInvalidArgumentException(option,argv[i]);
01152 break;
01153 }
01154 if (LocaleCompare("fuzz",option+1) == 0)
01155 {
01156 if (*option == '+')
01157 break;
01158 i++;
01159 if (i == (long) (argc-1))
01160 ThrowConvertException(OptionError,"MissingArgument",option);
01161 if (IsGeometry(argv[i]) == MagickFalse)
01162 ThrowConvertInvalidArgumentException(option,argv[i]);
01163 break;
01164 }
01165 if (LocaleCompare("fx",option+1) == 0)
01166 {
01167 if (*option == '+')
01168 break;
01169 i++;
01170 if (i == (long) (argc-1))
01171 ThrowConvertException(OptionError,"MissingArgument",option);
01172 break;
01173 }
01174 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01175 }
01176 case 'g':
01177 {
01178 if (LocaleCompare("gamma",option+1) == 0)
01179 {
01180 i++;
01181 if (i == (long) (argc-1))
01182 ThrowConvertException(OptionError,"MissingArgument",option);
01183 if (IsGeometry(argv[i]) == MagickFalse)
01184 ThrowConvertInvalidArgumentException(option,argv[i]);
01185 break;
01186 }
01187 if (LocaleCompare("gaussian",option+1) == 0)
01188 {
01189 i++;
01190 if (i == (long) (argc-1))
01191 ThrowConvertException(OptionError,"MissingArgument",option);
01192 if (IsGeometry(argv[i]) == MagickFalse)
01193 ThrowConvertInvalidArgumentException(option,argv[i]);
01194 break;
01195 }
01196 if (LocaleCompare("geometry",option+1) == 0)
01197 {
01198 if (*option == '+')
01199 break;
01200 i++;
01201 if (i == (long) (argc-1))
01202 ThrowConvertException(OptionError,"MissingArgument",option);
01203 if (IsGeometry(argv[i]) == MagickFalse)
01204 ThrowConvertInvalidArgumentException(option,argv[i]);
01205 break;
01206 }
01207 if (LocaleCompare("gravity",option+1) == 0)
01208 {
01209 long
01210 gravity;
01211
01212 if (*option == '+')
01213 break;
01214 i++;
01215 if (i == (long) (argc-1))
01216 ThrowConvertException(OptionError,"MissingArgument",option);
01217 gravity=ParseMagickOption(MagickGravityOptions,MagickFalse,
01218 argv[i]);
01219 if (gravity < 0)
01220 ThrowConvertException(OptionError,"UnrecognizedGravityType",
01221 argv[i]);
01222 break;
01223 }
01224 if (LocaleCompare("green-primary",option+1) == 0)
01225 {
01226 if (*option == '+')
01227 break;
01228 i++;
01229 if (i == (long) (argc-1))
01230 ThrowConvertException(OptionError,"MissingArgument",option);
01231 if (IsGeometry(argv[i]) == MagickFalse)
01232 ThrowConvertInvalidArgumentException(option,argv[i]);
01233 break;
01234 }
01235 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01236 }
01237 case 'h':
01238 {
01239 if (LocaleCompare("help",option+1) == 0)
01240 ConvertUsage();
01241 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01242 }
01243 case 'i':
01244 {
01245 if (LocaleCompare("identify",option+1) == 0)
01246 break;
01247 if (LocaleCompare("implode",option+1) == 0)
01248 {
01249 if (*option == '+')
01250 break;
01251 i++;
01252 if (i == (long) (argc-1))
01253 ThrowConvertException(OptionError,"MissingArgument",option);
01254 if (IsGeometry(argv[i]) == MagickFalse)
01255 ThrowConvertInvalidArgumentException(option,argv[i]);
01256 break;
01257 }
01258 if (LocaleCompare("insert",option+1) == 0)
01259 {
01260 if (*option == '+')
01261 break;
01262 i++;
01263 if (i == (long) (argc-1))
01264 ThrowConvertException(OptionError,"MissingArgument",option);
01265 if (IsGeometry(argv[i]) == MagickFalse)
01266 ThrowConvertInvalidArgumentException(option,argv[i]);
01267 break;
01268 }
01269 if (LocaleCompare("intent",option+1) == 0)
01270 {
01271 long
01272 intent;
01273
01274 if (*option == '+')
01275 break;
01276 i++;
01277 if (i == (long) (argc-1))
01278 ThrowConvertException(OptionError,"MissingArgument",option);
01279 intent=ParseMagickOption(MagickIntentOptions,MagickFalse,
01280 argv[i]);
01281 if (intent < 0)
01282 ThrowConvertException(OptionError,"UnrecognizedIntentType",
01283 argv[i]);
01284 break;
01285 }
01286 if (LocaleCompare("interlace",option+1) == 0)
01287 {
01288 long
01289 interlace;
01290
01291 if (*option == '+')
01292 break;
01293 i++;
01294 if (i == (long) (argc-1))
01295 ThrowConvertException(OptionError,"MissingArgument",option);
01296 interlace=ParseMagickOption(MagickInterlaceOptions,MagickFalse,
01297 argv[i]);
01298 if (interlace < 0)
01299 ThrowConvertException(OptionError,"UnrecognizedInterlaceType",
01300 argv[i]);
01301 break;
01302 }
01303 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01304 }
01305 case 'l':
01306 {
01307 if (LocaleCompare("label",option+1) == 0)
01308 {
01309 if (*option == '+')
01310 break;
01311 i++;
01312 if (i == (long) argc)
01313 ThrowConvertException(OptionError,"MissingArgument",option);
01314 break;
01315 }
01316 if (LocaleCompare("lat",option+1) == 0)
01317 {
01318 if (*option == '+')
01319 break;
01320 i++;
01321 if (i == (long) (argc-1))
01322 ThrowConvertException(OptionError,"MissingArgument",option);
01323 if (IsGeometry(argv[i]) == MagickFalse)
01324 ThrowConvertInvalidArgumentException(option,argv[i]);
01325 break;
01326 }
01327 if (LocaleCompare("level",option+1) == 0)
01328 {
01329 i++;
01330 if (i == (long) (argc-1))
01331 ThrowConvertException(OptionError,"MissingArgument",option);
01332 if (IsGeometry(argv[i]) == MagickFalse)
01333 ThrowConvertInvalidArgumentException(option,argv[i]);
01334 break;
01335 }
01336 if (LocaleCompare("linewidth",option+1) == 0)
01337 {
01338 if (*option == '+')
01339 break;
01340 i++;
01341 if (i == (long) (argc-1))
01342 ThrowConvertException(OptionError,"MissingArgument",option);
01343 if (IsGeometry(argv[i]) == MagickFalse)
01344 ThrowConvertInvalidArgumentException(option,argv[i]);
01345 break;
01346 }
01347 if (LocaleCompare("limit",option+1) == 0)
01348 {
01349 long
01350 resource;
01351
01352 if (*option == '+')
01353 break;
01354 i++;
01355 if (i == (long) argc)
01356 ThrowConvertException(OptionError,"MissingArgument",option);
01357 resource=ParseMagickOption(MagickResourceOptions,MagickFalse,
01358 argv[i]);
01359 if (resource < 0)
01360 ThrowConvertException(OptionError,"UnrecognizedResourceType",
01361 argv[i]);
01362 i++;
01363 if (i == (long) argc)
01364 ThrowConvertException(OptionError,"MissingArgument",option);
01365 if ((LocaleCompare("unlimited",argv[i]) != 0) &&
01366 (IsGeometry(argv[i]) == MagickFalse))
01367 ThrowConvertInvalidArgumentException(option,argv[i]);
01368 break;
01369 }
01370 if (LocaleCompare("list",option+1) == 0)
01371 {
01372 long
01373 list;
01374
01375 if (*option == '+')
01376 break;
01377 i++;
01378 if (i == (long) argc)
01379 ThrowConvertException(OptionError,"MissingArgument",option);
01380 list=ParseMagickOption(MagickListOptions,MagickFalse,argv[i]);
01381 if (list < 0)
01382 ThrowConvertException(OptionError,"UnrecognizedListType",argv[i]);
01383 (void) MogrifyImageInfo(image_info,(int) (i-j+1),(const char **)
01384 argv+j,exception);
01385 DestroyConvert();
01386 return(MagickTrue);
01387 }
01388 if (LocaleCompare("log",option+1) == 0)
01389 {
01390 if (*option == '+')
01391 break;
01392 i++;
01393 if ((i == (long) argc) ||
01394 (strchr(argv[i],'%') == (char *) NULL))
01395 ThrowConvertException(OptionError,"MissingArgument",option);
01396 break;
01397 }
01398 if (LocaleCompare("loop",option+1) == 0)
01399 {
01400 if (*option == '+')
01401 break;
01402 i++;
01403 if (i == (long) (argc-1))
01404 ThrowConvertException(OptionError,"MissingArgument",option);
01405 if (IsGeometry(argv[i]) == MagickFalse)
01406 ThrowConvertInvalidArgumentException(option,argv[i]);
01407 break;
01408 }
01409 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01410 }
01411 case 'm':
01412 {
01413 if (LocaleCompare("map",option+1) == 0)
01414 {
01415 if (*option == '+')
01416 break;
01417 i++;
01418 if (i == (long) (argc-1))
01419 ThrowConvertException(OptionError,"MissingArgument",option);
01420 break;
01421 }
01422 if (LocaleCompare("mask",option+1) == 0)
01423 {
01424 if (*option == '+')
01425 break;
01426 i++;
01427 if (i == (long) (argc-1))
01428 ThrowConvertException(OptionError,"MissingArgument",option);
01429 break;
01430 }
01431 if (LocaleCompare("matte",option+1) == 0)
01432 break;
01433 if (LocaleCompare("mattecolor",option+1) == 0)
01434 {
01435 if (*option == '+')
01436 break;
01437 i++;
01438 if (i == (long) (argc-1))
01439 ThrowConvertException(OptionError,"MissingArgument",option);
01440 break;
01441 }
01442 if (LocaleCompare("median",option+1) == 0)
01443 {
01444 if (*option == '+')
01445 break;
01446 i++;
01447 if (i == (long) (argc-1))
01448 ThrowConvertException(OptionError,"MissingArgument",option);
01449 if (IsGeometry(argv[i]) == MagickFalse)
01450 ThrowConvertInvalidArgumentException(option,argv[i]);
01451 break;
01452 }
01453 if (LocaleCompare("modulate",option+1) == 0)
01454 {
01455 if (*option == '+')
01456 break;
01457 i++;
01458 if (i == (long) (argc-1))
01459 ThrowConvertException(OptionError,"MissingArgument",option);
01460 if (IsGeometry(argv[i]) == MagickFalse)
01461 ThrowConvertInvalidArgumentException(option,argv[i]);
01462 break;
01463 }
01464 if (LocaleCompare("monitor",option+1) == 0)
01465 break;
01466 if (LocaleCompare("monochrome",option+1) == 0)
01467 break;
01468 if (LocaleCompare("morph",option+1) == 0)
01469 {
01470 if (*option == '+')
01471 break;
01472 i++;
01473 if (i == (long) (argc-1))
01474 ThrowConvertException(OptionError,"MissingArgument",option);
01475 if (IsGeometry(argv[i]) == MagickFalse)
01476 ThrowConvertInvalidArgumentException(option,argv[i]);
01477 break;
01478 }
01479 if (LocaleCompare("mosaic",option+1) == 0)
01480 break;
01481 if (LocaleCompare("motion-blur",option+1) == 0)
01482 {
01483 if (*option == '+')
01484 break;
01485 i++;
01486 if (i == (long) (argc-1))
01487 ThrowConvertException(OptionError,"MissingArgument",option);
01488 if (IsGeometry(argv[i]) == MagickFalse)
01489 ThrowConvertInvalidArgumentException(option,argv[i]);
01490 break;
01491 }
01492 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01493 }
01494 case 'n':
01495 {
01496 if (LocaleCompare("negate",option+1) == 0)
01497 break;
01498 if (LocaleCompare("noise",option+1) == 0)
01499 {
01500 i++;
01501 if (i == (long) (argc-1))
01502 ThrowConvertException(OptionError,"MissingArgument",option);
01503 if (*option == '+')
01504 {
01505 long
01506 noise;
01507
01508 noise=ParseMagickOption(MagickNoiseOptions,MagickFalse,argv[i]);
01509 if (noise < 0)
01510 ThrowConvertException(OptionError,"UnrecognizedNoiseType",
01511 argv[i]);
01512 break;
01513 }
01514 if (IsGeometry(argv[i]) == MagickFalse)
01515 ThrowConvertInvalidArgumentException(option,argv[i]);
01516 break;
01517 }
01518 if (LocaleCompare("noop",option+1) == 0)
01519 break;
01520 if (LocaleCompare("normalize",option+1) == 0)
01521 break;
01522 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01523 }
01524 case 'o':
01525 {
01526 if (LocaleCompare("opaque",option+1) == 0)
01527 {
01528 if (*option == '+')
01529 break;
01530 i++;
01531 if (i == (long) (argc-1))
01532 ThrowConvertException(OptionError,"MissingArgument",option);
01533 break;
01534 }
01535 if (LocaleCompare("ordered-dither",option+1) == 0)
01536 {
01537 if (*option == '+')
01538 break;
01539 i++;
01540 if (i == (long) (argc-1))
01541 ThrowConvertException(OptionError,"MissingArgument",option);
01542 if (IsGeometry(argv[i]) == MagickFalse)
01543 ThrowConvertInvalidArgumentException(option,argv[i]);
01544 break;
01545 }
01546 if (LocaleCompare("orient",option+1) == 0)
01547 {
01548 long
01549 orientation;
01550
01551 if (*option == '+')
01552 break;
01553 i++;
01554 if (i == (long) (argc-1))
01555 ThrowConvertException(OptionError,"MissingArgument",option);
01556 orientation=ParseMagickOption(MagickOrientationOptions,
01557 MagickFalse,argv[i]);
01558 if (orientation < 0)
01559 ThrowConvertException(OptionError,
01560 "UnrecognizedImageOrientation",argv[i]);
01561 break;
01562 }
01563 ThrowConvertException(OptionError,"UnrecognizedOption",argv[i])
01564 }
01565 case 'p':
01566 {
01567 if (LocaleCompare("page",option+1) == 0)
01568 {
01569 if (*option == '+')
01570 break;
01571 i++;
01572 if (i == (long) argc)
01573 ThrowConvertException(OptionError,"MissingArgument",option);
01574 break;
01575 }
01576 if (LocaleCompare("paint",option+1) == 0)
01577 {
01578 if (*option == '+')
01579 break;
01580 i++;
01581 if (i == (long) (argc-1))
01582 ThrowConvertException(OptionError,"MissingArgument",option);
01583 if (IsGeometry(argv[i]) == MagickFalse)
01584 ThrowConvertInvalidArgumentException(option,argv[i]);
01585 break;
01586 }
01587 if (LocaleCompare("ping",option+1) == 0)
01588 break;
01589 if (LocaleCompare("pointsize",option+1) == 0)
01590 {
01591 if (*option == '+')
01592 break;
01593 i++;
01594 if (i == (long) (argc-1))
01595 ThrowConvertException(OptionError,"MissingArgument",option);
01596 if (IsGeometry(argv[i]) == MagickFalse)
01597 ThrowConvertInvalidArgumentException(option,argv[i]);
01598 break;
01599 }
01600 if (LocaleCompare("posterize",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 if (LocaleCompare("preview",option+1) == 0)
01612 {
01613 long
01614 preview;
01615
01616 if (*option == '+')
01617 break;
01618 i++;
01619 if (i == (long) (argc-1))
01620 ThrowConvertException(OptionError,"MissingArgument",option);
01621 preview=ParseMagickOption(MagickPreviewOptions,MagickFalse,
01622 argv[i]);
01623 if (preview < 0)
01624 ThrowConvertException(OptionError,"UnrecognizedPreviewType",
01625 argv[i]);
01626 break;
01627 }
01628 if (LocaleCompare("process",option+1) == 0)
01629 {
01630 if (*option == '+')
01631 break;
01632 i++;
01633 if (i == (long) (argc-1))
01634 ThrowConvertException(OptionError,"MissingArgument",option);
01635 break;
01636 }
01637 if (LocaleCompare("profile",option+1) == 0)
01638 {
01639 i++;
01640 if (i == (long) (argc-1))
01641 ThrowConvertException(OptionError,"MissingArgument",option);
01642 break;
01643 }
01644 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01645 }
01646 case 'q':
01647 {
01648 if (LocaleCompare("quality",option+1) == 0)
01649 {
01650 if (*option == '+')
01651 break;
01652 i++;
01653 if (i == (long) (argc-1))
01654 ThrowConvertException(OptionError,"MissingArgument",option);
01655 if (IsGeometry(argv[i]) == MagickFalse)
01656 ThrowConvertInvalidArgumentException(option,argv[i]);
01657 break;
01658 }
01659 if (LocaleCompare("quiet",option+1) == 0)
01660 break;
01661 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01662 }
01663 case 'r':
01664 {
01665 if (LocaleCompare("radial-blur",option+1) == 0)
01666 {
01667 i++;
01668 if (i == (long) (argc-1))
01669 ThrowConvertException(OptionError,"MissingArgument",option);
01670 if (IsGeometry(argv[i]) == MagickFalse)
01671 ThrowConvertInvalidArgumentException(option,argv[i]);
01672 break;
01673 }
01674 if (LocaleCompare("raise",option+1) == 0)
01675 {
01676 i++;
01677 if (i == (long) (argc-1))
01678 ThrowConvertException(OptionError,"MissingArgument",option);
01679 if (IsGeometry(argv[i]) == MagickFalse)
01680 ThrowConvertInvalidArgumentException(option,argv[i]);
01681 break;
01682 }
01683 if (LocaleCompare("random-threshold",option+1) == 0)
01684 {
01685 if (*option == '+')
01686 break;
01687 i++;
01688 if (i == (long) (argc-1))
01689 ThrowConvertException(OptionError,"MissingArgument",option);
01690 if (IsGeometry(argv[i]) == MagickFalse)
01691 ThrowConvertInvalidArgumentException(option,argv[i]);
01692 break;
01693 }
01694 if (LocaleCompare("red-primary",option+1) == 0)
01695 {
01696 if (*option == '+')
01697 break;
01698 i++;
01699 if (i == (long) (argc-1))
01700 ThrowConvertException(OptionError,"MissingArgument",option);
01701 if (IsGeometry(argv[i]) == MagickFalse)
01702 ThrowConvertInvalidArgumentException(option,argv[i]);
01703 break;
01704 }
01705 if (LocaleCompare("region",option+1) == 0)
01706 {
01707 if (*option == '+')
01708 break;
01709 i++;
01710 if (i == (long) (argc-1))
01711 ThrowConvertException(OptionError,"MissingArgument",option);
01712 if (IsGeometry(argv[i]) == MagickFalse)
01713 ThrowConvertInvalidArgumentException(option,argv[i]);
01714 break;
01715 }
01716 if (LocaleCompare("render",option+1) == 0)
01717 break;
01718 if (LocaleCompare("repage",option+1) == 0)
01719 {
01720 if (*option == '+')
01721 break;
01722 i++;
01723 if (i == (long) (argc-1))
01724 ThrowConvertException(OptionError,"MissingArgument",option);
01725 if (IsGeometry(argv[i]) == MagickFalse)
01726 ThrowConvertInvalidArgumentException(option,argv[i]);
01727 break;
01728 }
01729 if (LocaleCompare("resample",option+1) == 0)
01730 {
01731 if (*option == '+')
01732 break;
01733 i++;
01734 if (i == (long) (argc-1))
01735 ThrowConvertException(OptionError,"MissingArgument",option);
01736 if (IsGeometry(argv[i]) == MagickFalse)
01737 ThrowConvertInvalidArgumentException(option,argv[i]);
01738 break;
01739 }
01740 if (LocaleCompare("resize",option+1) == 0)
01741 {
01742 if (*option == '+')
01743 break;
01744 i++;
01745 if (i == (long) (argc-1))
01746 ThrowConvertException(OptionError,"MissingArgument",option);
01747 if (IsGeometry(argv[i]) == MagickFalse)
01748 ThrowConvertInvalidArgumentException(option,argv[i]);
01749 break;
01750 }
01751 if (LocaleCompare("roll",option+1) == 0)
01752 {
01753 if (*option == '+')
01754 break;
01755 i++;
01756 if (i == (long) (argc-1))
01757 ThrowConvertException(OptionError,"MissingArgument",option);
01758 if (IsGeometry(argv[i]) == MagickFalse)
01759 ThrowConvertInvalidArgumentException(option,argv[i]);
01760 break;
01761 }
01762 if (LocaleCompare("rotate",option+1) == 0)
01763 {
01764 i++;
01765 if (i == (long) (argc-1))
01766 ThrowConvertException(OptionError,"MissingArgument",option);
01767 if (IsGeometry(argv[i]) == MagickFalse)
01768 ThrowConvertInvalidArgumentException(option,argv[i]);
01769 break;
01770 }
01771 ThrowConvertException(OptionError,"UnrecognizedOption",option)
01772 }
01773 case 's':
01774 {
01775 if (LocaleCompare("sample",option+1) == 0)
01776 {
01777 if (*option == '+')
01778 break;
01779 i++;
01780 if (i == (long) (argc-1))
01781 ThrowConvertException(OptionError,"MissingArgument",option);
01782 if (IsGeometry(argv[i]) == MagickFalse)
01783 ThrowConvertInvalidArgumentException(option,argv[i]);
01784 break;
01785 }
01786 if (LocaleCompare("sampling-factor",option+1) == 0)
01787 {
01788 if (*option == '+')
01789 break;
01790 i++;
01791 if (i == (long) (argc-1))
01792 ThrowConvertException(OptionError,"MissingArgument",option);
01793 if (IsGeometry(argv[i]) == MagickFalse)
01794 ThrowConvertInvalidArgumentException(option,argv[i]);
01795 break;
01796 }
01797 if (LocaleCompare("scale",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("scene",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("seed",option+1) == 0)
01820 {
01821 unsigned long
01822 seed;
01823
01824 if (*option == '+')
01825 break;
01826 i++;
01827 if (i == (long) (argc-1))
01828 ThrowConvertException(OptionError,"MissingArgument",option);
01829 if (IsGeometry(argv[i]) == MagickFalse)
01830 ThrowConvertInvalidArgumentException(option,argv[i]);
01831 seed=(unsigned long) atol(argv[i]);
01832 DistillRandomEvent((unsigned char *) &seed,sizeof(seed));
01833 break;
01834 }
01835 if (LocaleCompare("segment",option+1) == 0)
01836 {
01837 if (*option == '+')
01838 break;
01839 i++;
01840 if (i == (long) (argc-1))
01841 ThrowConvertException(OptionError,"MissingArgument",option);
01842 if (IsGeometry(argv[i]) == MagickFalse)
01843 ThrowConvertInvalidArgumentException(option,argv[i]);
01844 break;
01845 }
01846 if (LocaleCompare("separate",option+1) == 0)
01847 break;
01848 if (LocaleCompare("sepia-tone",option+1) == 0)
01849 {
01850 if (*option == '+')
01851 break;
01852 i++;
01853 if (i == (long) (argc-1))
01854 ThrowConvertException(OptionError,"MissingArgument",option);
01855 if (IsGeometry(argv[i]) == MagickFalse)
01856 ThrowConvertInvalidArgumentException(option,argv[i]);
01857 break;
01858 }
01859 if (LocaleCompare("set",option+1) == 0)
01860 {
01861 i++;
01862 if (i == (long) argc)
01863 ThrowConvertException(OptionError,"MissingArgument",option);
01864 if (*option == '+')
01865 break;
01866 i++;
01867 if (i == (long) argc)
01868 ThrowConvertException(OptionError,"MissingArgument",option);
01869 break;
01870 }
01871 if (LocaleCompare("shade",option+1) == 0)
01872 {
01873 i++;
01874 if (i == (long) (argc-1))
01875 ThrowConvertException(OptionError,"MissingArgument",option);
01876 if (IsGeometry(argv[i]) == MagickFalse)
01877 ThrowConvertInvalidArgumentException(option,argv[i]);
01878 break;
01879 }
01880 if (LocaleCompare("shadow",option+1) == 0)
01881 {
01882 if (*option == '+')
01883 break;
01884 i++;
01885 if (i == (long) (argc-1))
01886 ThrowConvertException(OptionError,"MissingArgument",option);
01887 if (IsGeometry(argv[i]) == MagickFalse)
01888 ThrowConvertInvalidArgumentException(option,argv[i]);
01889 break;
01890 }
01891 if (LocaleCompare("sharpen",option+1) == 0)
01892 {
01893 i++;
01894 if (i == (long) (argc-1))
01895 ThrowConvertException(OptionError,"MissingArgument",option);
01896 if (IsGeometry(argv[i]) == MagickFalse)
01897 ThrowConvertInvalidArgumentException(option,argv[i]);
01898 break;
01899 }
01900 if (LocaleCompare("shave",option+1) == 0)
01901 {
01902 if (*option == '+')
01903 break;
01904 i++;
01905 if (i == (long) (argc-1))
01906 ThrowConvertException(OptionError,"MissingArgument",option);
01907 if (IsGeometry(argv[i]) == MagickFalse)
01908 ThrowConvertInvalidArgumentException(option,argv[i]);
01909 break;
01910 }
01911 if (LocaleCompare("shear",option+1) == 0)
01912 {
01913 i++;
01914 if (i == (long) (argc-1))
01915 ThrowConvertException(OptionError,"MissingArgument",option);
01916 if (IsGeometry(argv[i]) == MagickFalse)
01917 ThrowConvertInvalidArgumentException(option,argv[i]);
01918 break;
01919 }
01920 if (LocaleCompare("sigmoidal-contrast",option+1) == 0)
01921 {
01922 i++;
01923 if (i == (long) (argc-1))
01924 ThrowConvertException(OptionError,"MissingArgument",option);
01925 if (IsGeometry(argv[i]) == MagickFalse)
01926 ThrowConvertInvalidArgumentException(option,argv[i]);
01927 break;
01928 }
01929 if (LocaleCompare("size",option+1) == 0)
01930 {
01931 if (*option == '+')
01932 break;
01933 i++;
01934 if (i == (long) (argc-1))
01935 ThrowConvertException(OptionError,"MissingArgument",option);
01936 if (IsGeometry(argv[i]) == MagickFalse)
01937 ThrowConvertInvalidArgumentException(option,argv[i]);
01938 break;
01939 }
01940 if (LocaleCompare("solarize",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("splice",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("spread",option+1) == 0)
01963 {
01964 if (*option == '+')
01965 break;
01966 i++;
01967 if ((i == (long) (argc-1)) ||
01968 (IsGeometry(argv[i]) == MagickFalse))
01969 ThrowConvertException(OptionError,"MissingArgument",option);
01970 break;
01971 }
01972 if (LocaleCompare("stretch",option+1) == 0)
01973 {
01974 long
01975 stretch;
01976
01977 if (*option == '+')
01978 break;
01979 i++;
01980 if (i == (long) (argc-1))
01981 ThrowConvertException(OptionError,"MissingArgument",option);
01982 stretch=ParseMagickOption(MagickStretchOptions,MagickFalse,
01983 argv[i]);
01984 if (stretch < 0)
01985 ThrowConvertException(OptionError,"UnrecognizedStyleType",
01986 argv[i]);
01987 break;
01988 }
01989 if (LocaleCompare("strip",option+1) == 0)
01990 break;
01991 if (LocaleCompare("stroke",option+1) == 0)
01992 {
01993 if (*option == '+')
01994 break;
01995 i++;
01996 if (i == (long) (argc-1))
01997 ThrowConvertException(OptionError,"MissingArgument",option);
01998 break;
01999 }
02000 if (LocaleCompare("strokewidth",option+1) == 0)
02001 {
02002 if (*option == '+')
02003 break;
02004 i++;
02005 if (i == (long) (argc-1))
02006 ThrowConvertException(OptionError,"MissingArgument",option);
02007 if (IsGeometry(argv[i]) == MagickFalse)
02008 ThrowConvertInvalidArgumentException(option,argv[i]);
02009 break;
02010 }
02011 if (LocaleCompare("style",option+1) == 0)
02012 {
02013 long
02014 style;
02015
02016 if (*option == '+')
02017 break;
02018 i++;
02019 if (i == (long) (argc-1))
02020 ThrowConvertException(OptionError,"MissingArgument",option);
02021 style=ParseMagickOption(MagickStyleOptions,MagickFalse,argv[i]);
02022 if (style < 0)
02023 ThrowConvertException(OptionError,"UnrecognizedStyleType",
02024 argv[i]);
02025 break;
02026 }
02027 if (LocaleCompare("support",option+1) == 0)
02028 {
02029 if (*option == '+')
02030 break;
02031 i++;
02032 if (i == (long) (argc-1))
02033 ThrowConvertException(OptionError,"MissingArgument",option);
02034 if (IsGeometry(argv[i]) == MagickFalse)
02035 ThrowConvertInvalidArgumentException(option,argv[i]);
02036 break;
02037 }
02038 if (LocaleCompare("swap",option+1) == 0)
02039 {
02040 if (*option == '+')
02041 break;
02042 i++;
02043 if (i == (long) (argc-1))
02044 ThrowConvertException(OptionError,"MissingArgument",option);
02045 if (IsGeometry(argv[i]) == MagickFalse)
02046 ThrowConvertInvalidArgumentException(option,argv[i]);
02047 break;
02048 }
02049 if (LocaleCompare("swirl",option+1) == 0)
02050 {
02051 if (*option == '+')
02052 break;
02053 i++;
02054 if (i == (long) (argc-1))
02055 ThrowConvertException(OptionError,"MissingArgument",option);
02056 if (IsGeometry(argv[i]) == MagickFalse)
02057 ThrowConvertInvalidArgumentException(option,argv[i]);
02058 break;
02059 }
02060 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02061 }
02062 case 't':
02063 {
02064 if (LocaleCompare("texture",option+1) == 0)
02065 {
02066 if (*option == '+')
02067 break;
02068 i++;
02069 if (i == (long) (argc-1))
02070 ThrowConvertException(OptionError,"MissingArgument",option);
02071 break;
02072 }
02073 if (LocaleCompare("thumbnail",option+1) == 0)
02074 {
02075 if (*option == '+')
02076 break;
02077 i++;
02078 if (i == (long) (argc-1))
02079 ThrowConvertException(OptionError,"MissingArgument",option);
02080 if (IsGeometry(argv[i]) == MagickFalse)
02081 ThrowConvertInvalidArgumentException(option,argv[i]);
02082 break;
02083 }
02084 if (LocaleCompare("threshold",option+1) == 0)
02085 {
02086 if (*option == '+')
02087 break;
02088 i++;
02089 if (i == (long) (argc-1))
02090 ThrowConvertException(OptionError,"MissingArgument",option);
02091 if (IsGeometry(argv[i]) == MagickFalse)
02092 ThrowConvertInvalidArgumentException(option,argv[i]);
02093 break;
02094 }
02095 if (LocaleCompare("tile",option+1) == 0)
02096 {
02097 if (*option == '+')
02098 break;
02099 i++;
02100 if (i == (long) (argc-1))
02101 ThrowConvertException(OptionError,"MissingArgument",option);
02102 break;
02103 }
02104 if (LocaleCompare("tint",option+1) == 0)
02105 {
02106 if (*option == '+')
02107 break;
02108 i++;
02109 if (i == (long) (argc-1))
02110 ThrowConvertException(OptionError,"MissingArgument",option);
02111 if (IsGeometry(argv[i]) == MagickFalse)
02112 ThrowConvertInvalidArgumentException(option,argv[i]);
02113 break;
02114 }
02115 if (LocaleCompare("transform",option+1) == 0)
02116 break;
02117 if (LocaleCompare("transparent",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("treedepth",option+1) == 0)
02127 {
02128 if (*option == '+')
02129 break;
02130 i++;
02131 if (i == (long) (argc-1))
02132 ThrowConvertException(OptionError,"MissingArgument",option);
02133 if (IsGeometry(argv[i]) == MagickFalse)
02134 ThrowConvertInvalidArgumentException(option,argv[i]);
02135 break;
02136 }
02137 if (LocaleCompare("trim",option+1) == 0)
02138 break;
02139 if (LocaleCompare("type",option+1) == 0)
02140 {
02141 long
02142 type;
02143
02144 if (*option == '+')
02145 break;
02146 i++;
02147 if (i == (long) (argc-1))
02148 ThrowConvertException(OptionError,"MissingArgument",option);
02149 type=ParseMagickOption(MagickImageOptions,MagickFalse,argv[i]);
02150 if (type < 0)
02151 ThrowConvertException(OptionError,"UnrecognizedImageType",
02152 argv[i]);
02153 break;
02154 }
02155 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02156 }
02157 case 'u':
02158 {
02159 if (LocaleCompare("undercolor",option+1) == 0)
02160 {
02161 if (*option == '+')
02162 break;
02163 i++;
02164 if (i == (long) (argc-1))
02165 ThrowConvertException(OptionError,"MissingArgument",option);
02166 break;
02167 }
02168 if (LocaleCompare("units",option+1) == 0)
02169 {
02170 long
02171 units;
02172
02173 if (*option == '+')
02174 break;
02175 i++;
02176 if (i == (long) (argc-1))
02177 ThrowConvertException(OptionError,"MissingArgument",option);
02178 units=ParseMagickOption(MagickResolutionOptions,MagickFalse,
02179 argv[i]);
02180 if (units < 0)
02181 ThrowConvertException(OptionError,"UnrecognizedUnitsType",
02182 argv[i]);
02183 break;
02184 }
02185 if (LocaleCompare("unsharp",option+1) == 0)
02186 {
02187 if (*option == '+')
02188 break;
02189 i++;
02190 if (i == (long) (argc-1))
02191 ThrowConvertException(OptionError,"MissingArgument",option);
02192 if (IsGeometry(argv[i]) == MagickFalse)
02193 ThrowConvertInvalidArgumentException(option,argv[i]);
02194 break;
02195 }
02196 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02197 }
02198 case 'v':
02199 {
02200 if (LocaleCompare("verbose",option+1) == 0)
02201 break;
02202 if (LocaleCompare("version",option+1) == 0)
02203 break;
02204 if (LocaleCompare("view",option+1) == 0)
02205 {
02206 if (*option == '+')
02207 break;
02208 i++;
02209 if (i == (long) (argc-1))
02210 ThrowConvertException(OptionError,"MissingArgument",option);
02211 break;
02212 }
02213 if (LocaleCompare("virtual-pixel",option+1) == 0)
02214 {
02215 long
02216 method;
02217
02218 if (*option == '+')
02219 break;
02220 i++;
02221 if (i == (long) (argc-1))
02222 ThrowConvertException(OptionError,"MissingArgument",option);
02223 method=ParseMagickOption(MagickVirtualPixelOptions,MagickFalse,
02224 argv[i]);
02225 if (method < 0)
02226 ThrowConvertException(OptionError,
02227 "UnrecognizedVirtualPixelMethod",argv[i]);
02228 break;
02229 }
02230 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02231 }
02232 case 'w':
02233 {
02234 if (LocaleCompare("wave",option+1) == 0)
02235 {
02236 i++;
02237 if (i == (long) (argc-1))
02238 ThrowConvertException(OptionError,"MissingArgument",option);
02239 if (IsGeometry(argv[i]) == MagickFalse)
02240 ThrowConvertInvalidArgumentException(option,argv[i]);
02241 break;
02242 }
02243 if (LocaleCompare("weight",option+1) == 0)
02244 {
02245 if (*option == '+')
02246 break;
02247 i++;
02248 if (i == (long) (argc-1))
02249 ThrowConvertException(OptionError,"MissingArgument",option);
02250 break;
02251 }
02252 if (LocaleCompare("white-point",option+1) == 0)
02253 {
02254 if (*option == '+')
02255 break;
02256 i++;
02257 if (i == (long) (argc-1))
02258 ThrowConvertException(OptionError,"MissingArgument",option);
02259 if (IsGeometry(argv[i]) == MagickFalse)
02260 ThrowConvertInvalidArgumentException(option,argv[i]);
02261 break;
02262 }
02263 if (LocaleCompare("white-threshold",option+1) == 0)
02264 {
02265 if (*option == '+')
02266 break;
02267 i++;
02268 if (i == (long) (argc-1))
02269 ThrowConvertException(OptionError,"MissingArgument",option);
02270 if (IsGeometry(argv[i]) == MagickFalse)
02271 ThrowConvertInvalidArgumentException(option,argv[i]);
02272 break;
02273 }
02274 if (LocaleCompare("write",option+1) == 0)
02275 {
02276 i++;
02277 if (i == (long) (argc-1))
02278 ThrowConvertException(OptionError,"MissingArgument",option);
02279 break;
02280 }
02281 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02282 }
02283 case '?':
02284 break;
02285 default:
02286 ThrowConvertException(OptionError,"UnrecognizedOption",option)
02287 }
02288 fire=(MagickBooleanType) ParseMagickOption(MagickMogrifyOptions,
02289 MagickFalse,option+1);
02290 if (fire == MagickTrue)
02291 MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
02292 }
02293 if (k != 0)
02294 ThrowConvertException(OptionError,"UnbalancedParenthesis",argv[i]);
02295 if (i != (long) (argc-1))
02296 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
02297 if (image_stack[k] == (Image *) NULL)
02298 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
02299 MogrifyImageStack(image_stack[k],MagickTrue,MagickTrue);
02300 if (image_stack[k] == (Image *) NULL)
02301 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]);
02302 status&=WriteImages(image_info,image_stack[k],argv[argc-1],exception);
02303 if (metadata != (char **) NULL)
02304 {
02305 char
02306 *text;
02307
02308 text=TranslateText(image_info,image_stack[k],format);
02309 if (text == (char *) NULL)
02310 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed",
02311 strerror(errno));
02312 (void) ConcatenateString(&(*metadata),text);
02313 text=(char *) RelinquishMagickMemory(text);
02314 }
02315 DestroyConvert();
02316 return(status != 0 ? MagickTrue : MagickFalse);
02317 }