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

Generated on Thu Sep 4 11:42:43 2008 for ImageMagick by  doxygen 1.5.6