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