convert.c

Go to the documentation of this file.
00001 /*
00002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00003 %                                                                             %
00004 %                                                                             %
00005 %                                                                             %
00006 %                CCCC   OOO   N   N  V   V  EEEEE  RRRR   TTTTT               %
00007 %               C      O   O  NN  N  V   V  E      R   R    T                 %
00008 %               C      O   O  N N N  V   V  EEE    RRRR     T                 %
00009 %               C      O   O  N  NN   V V   E      R R      T                 %
00010 %                CCCC   OOO   N   N    V    EEEEE  R  R     T                 %
00011 %                                                                             %
00012 %                                                                             %
00013 %                Convert an image from one format to another.                 %
00014 %                                                                             %
00015 %                              Software Design                                %
00016 %                                John Cristy                                  %
00017 %                                April 1992                                   %
00018 %                                                                             %
00019 %                                                                             %
00020 %  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization      %
00021 %  dedicated to making software imaging solutions freely available.           %
00022 %                                                                             %
00023 %  You may not use this file except in compliance with the License.  You may  %
00024 %  obtain a copy of the License at                                            %
00025 %                                                                             %
00026 %    http://www.imagemagick.org/script/license.php                            %
00027 %                                                                             %
00028 %  Unless required by applicable law or agreed to in writing, software        %
00029 %  distributed under the License is distributed on an "AS IS" BASIS,          %
00030 %  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
00031 %  See the License for the specific language governing permissions and        %
00032 %  limitations under the License.                                             %
00033 %                                                                             %
00034 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00035 %
00036 %  Use the convert program to convert between image formats as well as resize
00037 %  an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample,
00038 %  and much more.
00039 %
00040 */
00041 
00042 /*
00043   Include declarations.
00044 */
00045 #include "wand/studio.h"
00046 #include "wand/MagickWand.h"
00047 #include "wand/mogrify-private.h"
00048 
00049 /*
00050   Define declarations.
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 +   C o n v e r t I m a g e C o m m a n d                                     %
00065 %                                                                             %
00066 %                                                                             %
00067 %                                                                             %
00068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
00069 %
00070 %  ConvertImageCommand() reads one or more images, applies one or more image
00071 %  processing operations, and writes out the image in the same or differing
00072 %  format.
00073 %
00074 %  The format of the ConvertImageCommand method is:
00075 %
00076 %      MagickBooleanType ConvertImageCommand(ImageInfo *image_info,int argc,
00077 %        char **argv,char **metadata,ExceptionInfo *exception)
00078 %
00079 %  A description of each parameter follows:
00080 %
00081 %    o image_info: the image info.
00082 %
00083 %    o argc: the number of elements in the argument vector.
00084 %
00085 %    o argv: A text array containing the command line arguments.
00086 %
00087 %    o metadata: any metadata is returned here.
00088 %
00089 %    o exception: return any errors or warnings in this structure.
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     Open output file.
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     Set defaults.
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     Parse command-line arguments.
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           Read input image.
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++;  /* deprecated */
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 }

Generated on Thu Jul 2 12:03:37 2009 for MagickWand by  doxygen 1.5.8