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

Generated on 19 Nov 2009 for MagickWand by  doxygen 1.6.1