1 /* 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 3 % % 4 % % 5 % % 6 % CCCC OOO N N V V EEEEE RRRR TTTTT % 7 % C O O NN N V V E R R T % 8 % C O O N N N V V EEE RRRR T % 9 % C O O N NN V V E R R T % 10 % CCCC OOO N N V EEEEE R R T % 11 % % 12 % % 13 % Convert an image from one format to another. % 14 % % 15 % Software Design % 16 % Cristy % 17 % April 1992 % 18 % % 19 % % 20 % Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization % 21 % dedicated to making software imaging solutions freely available. % 22 % % 23 % You may not use this file except in compliance with the License. You may % 24 % obtain a copy of the License at % 25 % % 26 % http://www.imagemagick.org/script/license.php % 27 % % 28 % Unless required by applicable law or agreed to in writing, software % 29 % distributed under the License is distributed on an "AS IS" BASIS, % 30 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % 31 % See the License for the specific language governing permissions and % 32 % limitations under the License. % 33 % % 34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 35 % 36 % Use the convert program to convert between image formats as well as resize 37 % an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, 38 % and much more. 39 % 40 */ 41 42 /* 44 Include declarations. 45 */ 46 #include "MagickWand/studio.h" 47 #include "MagickWand/MagickWand.h" 48 #include "MagickWand/mogrify-private.h" 49 #include "MagickCore/string-private.h" 50 #include "MagickCore/utility-private.h" 51 /* 52 Define declarations. 53 */ 54 #define ThrowFileException(exception,severity,tag,context) \ 55 { \ 56 char \ 57 *message; \ 58 \ 59 message=GetExceptionMessage(errno); \ 60 (void) ThrowMagickException(exception,GetMagickModule(),severity, \ 61 tag == (const char *) NULL ? "unknown" : tag,"'%s': %s",context,message); \ 62 message=DestroyString(message); \ 63 } 64 65 /* 67 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 68 % % 69 % % 70 % % 71 + C o n v e r t I m a g e C o m m a n d % 72 % % 73 % % 74 % % 75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 76 % 77 % ConvertImageCommand() reads one or more images, applies one or more image 78 % processing operations, and writes out the image in the same or differing 79 % format. 80 % 81 % The format of the ConvertImageCommand method is: 82 % 83 % MagickBooleanType ConvertImageCommand(ImageInfo *image_info,int argc, 84 % char **argv,char **metadata,ExceptionInfo *exception) 85 % 86 % A description of each parameter follows: 87 % 88 % o image_info: the image info. 89 % 90 % o argc: the number of elements in the argument vector. 91 % 92 % o argv: A text array containing the command line arguments. 93 % 94 % o metadata: any metadata is returned here. 95 % 96 % o exception: return any errors or warnings in this structure. 97 % 98 */ 99 100 static MagickBooleanType ConcatenateImages(int argc,char **argv, 101 ExceptionInfo *exception) 102 { 103 FILE 104 *input, 105 *output; 106 107 int 108 c; 109 110 MagickBooleanType 111 status; 112 113 register ssize_t 114 i; 115 116 /* 117 Open output file. 118 */ 119 output=fopen_utf8(argv[argc-1],"wb"); 120 if (output == (FILE *) NULL) 121 { 122 ThrowFileException(exception,FileOpenError,"UnableToOpenFile", 123 argv[argc-1]); 124 return(MagickFalse); 125 } 126 status=MagickTrue; 127 for (i=2; i < (ssize_t) (argc-1); i++) 128 { 129 input=fopen_utf8(argv[i],"rb"); 130 if (input == (FILE *) NULL) 131 { 132 ThrowFileException(exception,FileOpenError,"UnableToOpenFile",argv[i]); 133 continue; 134 } 135 for (c=fgetc(input); c != EOF; c=fgetc(input)) 136 if (fputc((char) c,output) != c) 137 status=MagickFalse; 138 (void) fclose(input); 139 (void) remove_utf8(argv[i]); 140 } 141 (void) fclose(output); 142 return(status); 143 } 144 145 static MagickBooleanType ConvertUsage(void) 146 { 147 static const char 148 *channel_operators[]= 149 { 150 "-channel-fx expression", 151 " exchange, extract, or transfer one or more image channels", 152 "-separate separate an image channel into a grayscale image", 153 (char *) NULL 154 }, 155 *miscellaneous[]= 156 { 157 "-debug events display copious debugging information", 158 "-distribute-cache port", 159 " distributed pixel cache spanning one or more servers", 160 "-help print program options", 161 "-list type print a list of supported option arguments", 162 "-log format format of debugging information", 163 "-version print version information", 164 (char *) NULL 165 }, 166 *operators[]= 167 { 168 "-adaptive-blur geometry", 169 " adaptively blur pixels; decrease effect near edges", 170 "-adaptive-resize geometry", 171 " adaptively resize image using 'mesh' interpolation", 172 "-adaptive-sharpen geometry", 173 " adaptively sharpen pixels; increase effect near edges", 174 "-alpha option on, activate, off, deactivate, set, opaque, copy", 175 " transparent, extract, background, or shape", 176 "-annotate geometry text", 177 " annotate the image with text", 178 "-auto-gamma automagically adjust gamma level of image", 179 "-auto-level automagically adjust color levels of image", 180 "-auto-orient automagically orient (rotate) image", 181 "-bench iterations measure performance", 182 "-black-threshold value", 183 " force all pixels below the threshold into black", 184 "-blue-shift factor simulate a scene at nighttime in the moonlight", 185 "-blur geometry reduce image noise and reduce detail levels", 186 "-border geometry surround image with a border of color", 187 "-bordercolor color border color", 188 "-brightness-contrast geometry", 189 " improve brightness / contrast of the image", 190 "-canny geometry detect edges in the image", 191 "-cdl filename color correct with a color decision list", 192 "-channel mask set the image channel mask", 193 "-charcoal radius simulate a charcoal drawing", 194 "-chop geometry remove pixels from the image interior", 195 "-clamp keep pixel values in range (0-QuantumRange)", 196 "-colorize value colorize the image with the fill color", 197 "-color-matrix matrix apply color correction to the image", 198 "-connected-components connectivity", 199 " connected-components uniquely labeled", 200 "-contrast enhance or reduce the image contrast", 201 "-contrast-stretch geometry", 202 " improve contrast by 'stretching' the intensity range", 203 "-convolve coefficients", 204 " apply a convolution kernel to the image", 205 "-cycle amount cycle the image colormap", 206 "-decipher filename convert cipher pixels to plain pixels", 207 "-deskew threshold straighten an image", 208 "-despeckle reduce the speckles within an image", 209 "-distort method args", 210 " distort images according to given method ad args", 211 "-draw string annotate the image with a graphic primitive", 212 "-edge radius apply a filter to detect edges in the image", 213 "-encipher filename convert plain pixels to cipher pixels", 214 "-emboss radius emboss an image", 215 "-enhance apply a digital filter to enhance a noisy image", 216 "-equalize perform histogram equalization to an image", 217 "-evaluate operator value", 218 " evaluate an arithmetic, relational, or logical expression", 219 "-extent geometry set the image size", 220 "-extract geometry extract area from image", 221 "-fft implements the discrete Fourier transform (DFT)", 222 "-flip flip image vertically", 223 "-floodfill geometry color", 224 " floodfill the image with color", 225 "-flop flop image horizontally", 226 "-frame geometry surround image with an ornamental border", 227 "-function name parameters", 228 " apply function over image values", 229 "-gamma value level of gamma correction", 230 "-gaussian-blur geometry", 231 " reduce image noise and reduce detail levels", 232 "-geometry geometry preferred size or location of the image", 233 "-grayscale method convert image to grayscale", 234 "-hough-lines geometry", 235 " identify lines in the image", 236 "-identify identify the format and characteristics of the image", 237 "-ift implements the inverse discrete Fourier transform (DFT)", 238 "-implode amount implode image pixels about the center", 239 "-kuwahara geometry edge preserving noise reduction filter", 240 "-lat geometry local adaptive thresholding", 241 "-level value adjust the level of image contrast", 242 "-level-colors color,color", 243 " level image with the given colors", 244 "-linear-stretch geometry", 245 " improve contrast by 'stretching with saturation'", 246 "-liquid-rescale geometry", 247 " rescale image with seam-carving", 248 "-local-contrast geometry", 249 " enhance local contrast", 250 "-mean-shift geometry delineate arbitrarily shaped clusters in the image", 251 "-median geometry apply a median filter to the image", 252 "-mode geometry make each pixel the 'predominant color' of the", 253 " neighborhood", 254 "-modulate value vary the brightness, saturation, and hue", 255 "-monochrome transform image to black and white", 256 "-morphology method kernel", 257 " apply a morphology method to the image", 258 "-motion-blur geometry", 259 " simulate motion blur", 260 "-negate replace every pixel with its complementary color ", 261 "-noise geometry add or reduce noise in an image", 262 "-normalize transform image to span the full range of colors", 263 "-opaque color change this color to the fill color", 264 "-ordered-dither NxN", 265 " add a noise pattern to the image with specific", 266 " amplitudes", 267 "-paint radius simulate an oil painting", 268 "-perceptible epsilon", 269 " pixel value less than |epsilon| become epsilon or", 270 " -epsilon", 271 "-polaroid angle simulate a Polaroid picture", 272 "-posterize levels reduce the image to a limited number of color levels", 273 "-profile filename add, delete, or apply an image profile", 274 "-quantize colorspace reduce colors in this colorspace", 275 "-raise value lighten/darken image edges to create a 3-D effect", 276 "-random-threshold low,high", 277 " random threshold the image", 278 "-region geometry apply options to a portion of the image", 279 "-render render vector graphics", 280 "-repage geometry size and location of an image canvas", 281 "-resample geometry change the resolution of an image", 282 "-resize geometry resize the image", 283 "-roll geometry roll an image vertically or horizontally", 284 "-rotate degrees apply Paeth rotation to the image", 285 "-rotational-blur angle", 286 " rotational blur the image", 287 "-sample geometry scale image with pixel sampling", 288 "-scale geometry scale the image", 289 "-segment values segment an image", 290 "-selective-blur geometry", 291 " selectively blur pixels within a contrast threshold", 292 "-sepia-tone threshold", 293 " simulate a sepia-toned photo", 294 "-set property value set an image property", 295 "-shade degrees shade the image using a distant light source", 296 "-shadow geometry simulate an image shadow", 297 "-sharpen geometry sharpen the image", 298 "-shave geometry shave pixels from the image edges", 299 "-shear geometry slide one edge of the image along the X or Y axis", 300 "-sigmoidal-contrast geometry", 301 " increase the contrast without saturating highlights or", 302 " shadows", 303 "-sketch geometry simulate a pencil sketch", 304 "-solarize threshold negate all pixels above the threshold level", 305 "-sparse-color method args", 306 " fill in a image based on a few color points", 307 "-splice geometry splice the background color into the image", 308 "-spread radius displace image pixels by a random amount", 309 "-statistic type geometry", 310 " replace each pixel with corresponding statistic from the", 311 " neighborhood", 312 "-strip strip image of all profiles and comments", 313 "-swirl degrees swirl image pixels about the center", 314 "-threshold value threshold the image", 315 "-thumbnail geometry create a thumbnail of the image", 316 "-tile filename tile image when filling a graphic primitive", 317 "-tint value tint the image with the fill color", 318 "-transform affine transform image", 319 "-transparent color make this color transparent within the image", 320 "-transpose flip image vertically and rotate 90 degrees", 321 "-transverse flop image horizontally and rotate 270 degrees", 322 "-trim trim image edges", 323 "-type type image type", 324 "-unique-colors discard all but one of any pixel color", 325 "-unsharp geometry sharpen the image", 326 "-vignette geometry soften the edges of the image in vignette style", 327 "-wave geometry alter an image along a sine wave", 328 "-wavelet-denoise threshold", 329 " removes noise from the image using a wavelet transform", 330 "-white-threshold value", 331 " force all pixels above the threshold into white", 332 (char *) NULL 333 }, 334 *sequence_operators[]= 335 { 336 "-append append an image sequence", 337 "-clut apply a color lookup table to the image", 338 "-coalesce merge a sequence of images", 339 "-combine combine a sequence of images", 340 "-compare mathematically and visually annotate the difference between an image and its reconstruction", 341 "-complex operator perform complex mathematics on an image sequence", 342 "-composite composite image", 343 "-copy geometry offset", 344 " copy pixels from one area of an image to another", 345 "-crop geometry cut out a rectangular region of the image", 346 "-deconstruct break down an image sequence into constituent parts", 347 "-evaluate-sequence operator", 348 " evaluate an arithmetic, relational, or logical expression", 349 "-flatten flatten a sequence of images", 350 "-fx expression apply mathematical expression to an image channel(s)", 351 "-hald-clut apply a Hald color lookup table to the image", 352 "-layers method optimize, merge, or compare image layers", 353 "-morph value morph an image sequence", 354 "-mosaic create a mosaic from an image sequence", 355 "-poly terms build a polynomial from the image sequence and the corresponding", 356 " terms (coefficients and degree pairs).", 357 "-print string interpret string and print to console", 358 "-process arguments process the image with a custom image filter", 359 "-smush geometry smush an image sequence together", 360 "-write filename write images to this file", 361 (char *) NULL 362 }, 363 *settings[]= 364 { 365 "-adjoin join images into a single multi-image file", 366 "-affine matrix affine transform matrix", 367 "-alpha option activate, deactivate, reset, or set the alpha channel", 368 "-alpha-color color frame color", 369 "-antialias remove pixel-aliasing", 370 "-authenticate password", 371 " decipher image with this password", 372 "-attenuate value lessen (or intensify) when adding noise to an image", 373 "-background color background color", 374 "-bias value add bias when convolving an image", 375 "-black-point-compensation", 376 " use black point compensation", 377 "-blue-primary point chromaticity blue primary point", 378 "-bordercolor color border color", 379 "-caption string assign a caption to an image", 380 "-clip clip along the first path from the 8BIM profile", 381 "-clip-mask filename associate a clip mask with the image", 382 "-clip-path id clip along a named path from the 8BIM profile", 383 "-colors value preferred number of colors in the image", 384 "-colorspace type alternate image colorspace", 385 "-comment string annotate image with comment", 386 "-compose operator set image composite operator", 387 "-compress type type of pixel compression when writing the image", 388 "-define format:option", 389 " define one or more image format options", 390 "-delay value display the next image after pausing", 391 "-density geometry horizontal and vertical density of the image", 392 "-depth value image depth", 393 "-direction type render text right-to-left or left-to-right", 394 "-display server get image or font from this X server", 395 "-dispose method layer disposal method", 396 "-dither method apply error diffusion to image", 397 "-encoding type text encoding type", 398 "-endian type endianness (MSB or LSB) of the image", 399 "-family name render text with this font family", 400 "-features distance analyze image features (e.g. contrast, correlation)", 401 "-fill color color to use when filling a graphic primitive", 402 "-filter type use this filter when resizing an image", 403 "-font name render text with this font", 404 "-format \"string\" output formatted image characteristics", 405 "-fuzz distance colors within this distance are considered equal", 406 "-gravity type horizontal and vertical text placement", 407 "-green-primary point chromaticity green primary point", 408 "-intensity method method to generate an intensity value from a pixel", 409 "-intent type type of rendering intent when managing the image color", 410 "-interlace type type of image interlacing scheme", 411 "-interline-spacing value", 412 " set the space between two text lines", 413 "-interpolate method pixel color interpolation method", 414 "-interword-spacing value", 415 " set the space between two words", 416 "-kerning value set the space between two letters", 417 "-label string assign a label to an image", 418 "-limit type value pixel cache resource limit", 419 "-loop iterations add Netscape loop extension to your GIF animation", 420 "-matte store matte channel if the image has one", 421 "-moments report image moments", 422 "-monitor monitor progress", 423 "-orient type image orientation", 424 "-page geometry size and location of an image canvas (setting)", 425 "-ping efficiently determine image attributes", 426 "-pointsize value font point size", 427 "-precision value maximum number of significant digits to print", 428 "-preview type image preview type", 429 "-quality value JPEG/MIFF/PNG compression level", 430 "-quiet suppress all warning messages", 431 "-read-mask filename associate a read mask with the image", 432 "-red-primary point chromaticity red primary point", 433 "-regard-warnings pay attention to warning messages", 434 "-remap filename transform image colors to match this set of colors", 435 "-respect-parentheses settings remain in effect until parenthesis boundary", 436 "-sampling-factor geometry", 437 " horizontal and vertical sampling factor", 438 "-scene value image scene number", 439 "-seed value seed a new sequence of pseudo-random numbers", 440 "-size geometry width and height of image", 441 "-stretch type render text with this font stretch", 442 "-stroke color graphic primitive stroke color", 443 "-strokewidth value graphic primitive stroke width", 444 "-style type render text with this font style", 445 "-support factor resize support: > 1.0 is blurry, < 1.0 is sharp", 446 "-synchronize synchronize image to storage device", 447 "-taint declare the image as modified", 448 "-texture filename name of texture to tile onto the image background", 449 "-tile-offset geometry", 450 " tile offset", 451 "-treedepth value color tree depth", 452 "-transparent-color color", 453 " transparent color", 454 "-undercolor color annotation bounding box color", 455 "-units type the units of image resolution", 456 "-verbose print detailed information about the image", 457 "-view FlashPix viewing transforms", 458 "-virtual-pixel method", 459 " virtual pixel access method", 460 "-weight type render text with this font weight", 461 "-white-point point chromaticity white point", 462 "-write-mask filename associate a write mask with the image", 463 (char *) NULL 464 }, 465 *stack_operators[]= 466 { 467 "-clone indexes clone an image", 468 "-delete indexes delete the image from the image sequence", 469 "-duplicate count,indexes", 470 " duplicate an image one or more times", 471 "-insert index insert last image into the image sequence", 472 "-reverse reverse image sequence", 473 "-swap indexes swap two images in the image sequence", 474 (char *) NULL 475 }; 476 477 const char 478 **p; 479 480 ListMagickVersion(stdout); 481 (void) printf("Usage: %s [options ...] file [ [options ...] " 482 "file ...] [options ...] file\n",GetClientName()); 483 (void) printf("\nImage Settings:\n"); 484 for (p=settings; *p != (char *) NULL; p++) 485 (void) printf(" %s\n",*p); 486 (void) printf("\nImage Operators:\n"); 487 for (p=operators; *p != (char *) NULL; p++) 488 (void) printf(" %s\n",*p); 489 (void) printf("\nImage Channel Operators:\n"); 490 for (p=channel_operators; *p != (char *) NULL; p++) 491 (void) printf(" %s\n",*p); 492 (void) printf("\nImage Sequence Operators:\n"); 493 for (p=sequence_operators; *p != (char *) NULL; p++) 494 (void) printf(" %s\n",*p); 495 (void) printf("\nImage Stack Operators:\n"); 496 for (p=stack_operators; *p != (char *) NULL; p++) 497 (void) printf(" %s\n",*p); 498 (void) printf("\nMiscellaneous Options:\n"); 499 for (p=miscellaneous; *p != (char *) NULL; p++) 500 (void) printf(" %s\n",*p); 501 (void) printf( 502 "\nBy default, the image format of 'file' is determined by its magic\n"); 503 (void) printf( 504 "number. To specify a particular image format, precede the filename\n"); 505 (void) printf( 506 "with an image format name and a colon (i.e. ps:image) or specify the\n"); 507 (void) printf( 508 "image type as the filename suffix (i.e. image.ps). Specify 'file' as\n"); 509 (void) printf("'-' for standard input or output.\n"); 510 return(MagickFalse); 511 } 512 513 WandExport MagickBooleanType ConvertImageCommand(ImageInfo *image_info, 514 int argc,char **argv,char **metadata,ExceptionInfo *exception) 515 { 516 #define NotInitialized (unsigned int) (~0) 517 #define DestroyConvert() \ 518 { \ 519 DestroyImageStack(); \ 520 for (i=0; i < (ssize_t) argc; i++) \ 521 argv[i]=DestroyString(argv[i]); \ 522 argv=(char **) RelinquishMagickMemory(argv); \ 523 } 524 #define ThrowConvertException(asperity,tag,option) \ 525 { \ 526 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \ 527 option); \ 528 DestroyConvert(); \ 529 return(MagickFalse); \ 530 } 531 #define ThrowConvertInvalidArgumentException(option,argument) \ 532 { \ 533 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \ 534 "InvalidArgument","'%s': %s",option,argument); \ 535 DestroyConvert(); \ 536 return(MagickFalse); \ 537 } 538 539 char 540 *filename, 541 *option; 542 543 const char 544 *format; 545 546 Image 547 *image; 548 549 ImageStack 550 image_stack[MaxImageStackDepth+1]; 551 552 MagickBooleanType 553 fire, 554 pend, 555 respect_parenthesis; 556 557 MagickStatusType 558 status; 559 560 register ssize_t 561 i; 562 563 ssize_t 564 j, 565 k; 566 567 /* 568 Set defaults. 569 */ 570 assert(image_info != (ImageInfo *) NULL); 571 assert(image_info->signature == MagickCoreSignature); 572 if (image_info->debug != MagickFalse) 573 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"..."); 574 assert(exception != (ExceptionInfo *) NULL); 575 if (argc == 2) 576 { 577 option=argv[1]; 578 if ((LocaleCompare("version",option+1) == 0) || 579 (LocaleCompare("-version",option+1) == 0)) 580 { 581 ListMagickVersion(stdout); 582 return(MagickTrue); 583 } 584 } 585 if (argc < 3) 586 return(ConvertUsage()); 587 filename=(char *) NULL; 588 format="%w,%h,%m"; 589 j=1; 590 k=0; 591 NewImageStack(); 592 option=(char *) NULL; 593 pend=MagickFalse; 594 respect_parenthesis=MagickFalse; 595 status=MagickTrue; 596 /* 597 Parse command-line arguments. 598 */ 599 ReadCommandlLine(argc,&argv); 600 status=ExpandFilenames(&argc,&argv); 601 if (status == MagickFalse) 602 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed", 603 GetExceptionMessage(errno)); 604 if ((argc > 2) && (LocaleCompare("-concatenate",argv[1]) == 0)) 605 return(ConcatenateImages(argc,argv,exception)); 606 for (i=1; i < (ssize_t) (argc-1); i++) 607 { 608 option=argv[i]; 609 if (LocaleCompare(option,"(") == 0) 610 { 611 FireImageStack(MagickTrue,MagickTrue,pend); 612 if (k == MaxImageStackDepth) 613 ThrowConvertException(OptionError,"ParenthesisNestedTooDeeply", 614 option); 615 PushImageStack(); 616 continue; 617 } 618 if (LocaleCompare(option,")") == 0) 619 { 620 FireImageStack(MagickTrue,MagickTrue,MagickTrue); 621 if (k == 0) 622 ThrowConvertException(OptionError,"UnableToParseExpression",option); 623 PopImageStack(); 624 continue; 625 } 626 if (IsCommandOption(option) == MagickFalse) 627 { 628 Image 629 *images; 630 631 /* 632 Read input image. 633 */ 634 FireImageStack(MagickTrue,MagickTrue,pend); 635 filename=argv[i]; 636 if ((LocaleCompare(filename,"--") == 0) && (i < (ssize_t) (argc-1))) 637 filename=argv[++i]; 638 if (image_info->ping != MagickFalse) 639 images=PingImages(image_info,filename,exception); 640 else 641 images=ReadImages(image_info,filename,exception); 642 status&=(images != (Image *) NULL) && 643 (exception->severity < ErrorException); 644 if (images == (Image *) NULL) 645 continue; 646 AppendImageStack(images); 647 continue; 648 } 649 pend=image != (Image *) NULL ? MagickTrue : MagickFalse; 650 switch (*(option+1)) 651 { 652 case 'a': 653 { 654 if (LocaleCompare("adaptive-blur",option+1) == 0) 655 { 656 i++; 657 if (i == (ssize_t) argc) 658 ThrowConvertException(OptionError,"MissingArgument",option); 659 if (IsGeometry(argv[i]) == MagickFalse) 660 ThrowConvertInvalidArgumentException(option,argv[i]); 661 break; 662 } 663 if (LocaleCompare("adaptive-resize",option+1) == 0) 664 { 665 i++; 666 if (i == (ssize_t) argc) 667 ThrowConvertException(OptionError,"MissingArgument",option); 668 if (IsGeometry(argv[i]) == MagickFalse) 669 ThrowConvertInvalidArgumentException(option,argv[i]); 670 break; 671 } 672 if (LocaleCompare("adaptive-sharpen",option+1) == 0) 673 { 674 i++; 675 if (i == (ssize_t) argc) 676 ThrowConvertException(OptionError,"MissingArgument",option); 677 if (IsGeometry(argv[i]) == MagickFalse) 678 ThrowConvertInvalidArgumentException(option,argv[i]); 679 break; 680 } 681 if (LocaleCompare("adjoin",option+1) == 0) 682 break; 683 if (LocaleCompare("affine",option+1) == 0) 684 { 685 if (*option == '+') 686 break; 687 i++; 688 if (i == (ssize_t) argc) 689 ThrowConvertException(OptionError,"MissingArgument",option); 690 if (IsGeometry(argv[i]) == MagickFalse) 691 ThrowConvertInvalidArgumentException(option,argv[i]); 692 break; 693 } 694 if (LocaleCompare("alpha",option+1) == 0) 695 { 696 ssize_t 697 type; 698 699 if (*option == '+') 700 break; 701 i++; 702 if (i == (ssize_t) argc) 703 ThrowConvertException(OptionError,"MissingArgument",option); 704 type=ParseCommandOption(MagickAlphaChannelOptions,MagickFalse, 705 argv[i]); 706 if (type < 0) 707 ThrowConvertException(OptionError, 708 "UnrecognizedAlphaChannelOption",argv[i]); 709 break; 710 } 711 if (LocaleCompare("alpha-color", option + 1) == 0) 712 { 713 if (*option == '+') 714 break; 715 i++; 716 if (i == (ssize_t)argc) 717 ThrowConvertException(OptionError, "MissingArgument", option); 718 break; 719 } 720 if (LocaleCompare("annotate",option+1) == 0) 721 { 722 if (*option == '+') 723 break; 724 i++; 725 if (i == (ssize_t) argc) 726 ThrowConvertException(OptionError,"MissingArgument",option); 727 if (IsGeometry(argv[i]) == MagickFalse) 728 ThrowConvertInvalidArgumentException(option,argv[i]); 729 i++; 730 if (i == (ssize_t) argc) 731 ThrowConvertException(OptionError,"MissingArgument",option); 732 break; 733 } 734 if (LocaleCompare("antialias",option+1) == 0) 735 break; 736 if (LocaleCompare("append",option+1) == 0) 737 break; 738 if (LocaleCompare("attenuate",option+1) == 0) 739 { 740 if (*option == '+') 741 break; 742 i++; 743 if (i == (ssize_t) argc) 744 ThrowConvertException(OptionError,"MissingArgument",option); 745 if (IsGeometry(argv[i]) == MagickFalse) 746 ThrowConvertInvalidArgumentException(option,argv[i]); 747 break; 748 } 749 if (LocaleCompare("authenticate",option+1) == 0) 750 { 751 if (*option == '+') 752 break; 753 i++; 754 if (i == (ssize_t) argc) 755 ThrowConvertException(OptionError,"MissingArgument",option); 756 break; 757 } 758 if (LocaleCompare("auto-gamma",option+1) == 0) 759 break; 760 if (LocaleCompare("auto-level",option+1) == 0) 761 break; 762 if (LocaleCompare("auto-orient",option+1) == 0) 763 break; 764 if (LocaleCompare("average",option+1) == 0) 765 break; 766 ThrowConvertException(OptionError,"UnrecognizedOption",option) 767 } 768 case 'b': 769 { 770 if (LocaleCompare("background",option+1) == 0) 771 { 772 if (*option == '+') 773 break; 774 i++; 775 if (i == (ssize_t) argc) 776 ThrowConvertException(OptionError,"MissingArgument",option); 777 break; 778 } 779 if (LocaleCompare("bench",option+1) == 0) 780 { 781 if (*option == '+') 782 break; 783 i++; 784 if (i == (ssize_t) argc) 785 ThrowConvertException(OptionError,"MissingArgument",option); 786 if (IsGeometry(argv[i]) == MagickFalse) 787 ThrowConvertInvalidArgumentException(option,argv[i]); 788 break; 789 } 790 if (LocaleCompare("bias",option+1) == 0) 791 { 792 if (*option == '+') 793 break; 794 i++; 795 if (i == (ssize_t) argc) 796 ThrowConvertException(OptionError,"MissingArgument",option); 797 if (IsGeometry(argv[i]) == MagickFalse) 798 ThrowConvertInvalidArgumentException(option,argv[i]); 799 break; 800 } 801 if (LocaleCompare("black-point-compensation",option+1) == 0) 802 break; 803 if (LocaleCompare("black-threshold",option+1) == 0) 804 { 805 if (*option == '+') 806 break; 807 i++; 808 if (i == (ssize_t) argc) 809 ThrowConvertException(OptionError,"MissingArgument",option); 810 if (IsGeometry(argv[i]) == MagickFalse) 811 ThrowConvertInvalidArgumentException(option,argv[i]); 812 break; 813 } 814 if (LocaleCompare("blue-primary",option+1) == 0) 815 { 816 if (*option == '+') 817 break; 818 i++; 819 if (i == (ssize_t) argc) 820 ThrowConvertException(OptionError,"MissingArgument",option); 821 if (IsGeometry(argv[i]) == MagickFalse) 822 ThrowConvertInvalidArgumentException(option,argv[i]); 823 break; 824 } 825 if (LocaleCompare("blue-shift",option+1) == 0) 826 { 827 if (*option == '+') 828 break; 829 i++; 830 if (i == (ssize_t) argc) 831 ThrowConvertException(OptionError,"MissingArgument",option); 832 if (IsGeometry(argv[i]) == MagickFalse) 833 ThrowConvertInvalidArgumentException(option,argv[i]); 834 break; 835 } 836 if (LocaleCompare("blur",option+1) == 0) 837 { 838 if (*option == '+') 839 break; 840 i++; 841 if (i == (ssize_t) argc) 842 ThrowConvertException(OptionError,"MissingArgument",option); 843 if (IsGeometry(argv[i]) == MagickFalse) 844 ThrowConvertInvalidArgumentException(option,argv[i]); 845 break; 846 } 847 if (LocaleCompare("border",option+1) == 0) 848 { 849 if (*option == '+') 850 break; 851 i++; 852 if (i == (ssize_t) argc) 853 ThrowConvertException(OptionError,"MissingArgument",option); 854 if (IsGeometry(argv[i]) == MagickFalse) 855 ThrowConvertInvalidArgumentException(option,argv[i]); 856 break; 857 } 858 if (LocaleCompare("bordercolor",option+1) == 0) 859 { 860 if (*option == '+') 861 break; 862 i++; 863 if (i == (ssize_t) argc) 864 ThrowConvertException(OptionError,"MissingArgument",option); 865 break; 866 } 867 if (LocaleCompare("box",option+1) == 0) 868 { 869 if (*option == '+') 870 break; 871 i++; 872 if (i == (ssize_t) argc) 873 ThrowConvertException(OptionError,"MissingArgument",option); 874 break; 875 } 876 if (LocaleCompare("brightness-contrast",option+1) == 0) 877 { 878 i++; 879 if (i == (ssize_t) argc) 880 ThrowConvertException(OptionError,"MissingArgument",option); 881 if (IsGeometry(argv[i]) == MagickFalse) 882 ThrowConvertInvalidArgumentException(option,argv[i]); 883 break; 884 } 885 ThrowConvertException(OptionError,"UnrecognizedOption",option) 886 } 887 case 'c': 888 { 889 if (LocaleCompare("cache",option+1) == 0) 890 { 891 if (*option == '+') 892 break; 893 i++; 894 if (i == (ssize_t) argc) 895 ThrowConvertException(OptionError,"MissingArgument",option); 896 if (IsGeometry(argv[i]) == MagickFalse) 897 ThrowConvertInvalidArgumentException(option,argv[i]); 898 break; 899 } 900 if (LocaleCompare("canny",option+1) == 0) 901 { 902 if (*option == '+') 903 break; 904 i++; 905 if (i == (ssize_t) argc) 906 ThrowConvertException(OptionError,"MissingArgument",option); 907 if (IsGeometry(argv[i]) == MagickFalse) 908 ThrowConvertInvalidArgumentException(option,argv[i]); 909 break; 910 } 911 if (LocaleCompare("caption",option+1) == 0) 912 { 913 if (*option == '+') 914 break; 915 i++; 916 if (i == (ssize_t) argc) 917 ThrowConvertException(OptionError,"MissingArgument",option); 918 break; 919 } 920 if (LocaleCompare("cdl",option+1) == 0) 921 { 922 if (*option == '+') 923 break; 924 i++; 925 if (i == (ssize_t) argc) 926 ThrowConvertException(OptionError,"MissingArgument",option); 927 break; 928 } 929 if (LocaleCompare("channel",option+1) == 0) 930 { 931 ssize_t 932 channel; 933 934 if (*option == '+') 935 break; 936 i++; 937 if (i == (ssize_t) argc) 938 ThrowConvertException(OptionError,"MissingArgument",option); 939 channel=ParseChannelOption(argv[i]); 940 if (channel < 0) 941 ThrowConvertException(OptionError,"UnrecognizedChannelType", 942 argv[i]); 943 break; 944 } 945 if (LocaleCompare("channel-fx",option+1) == 0) 946 { 947 ssize_t 948 channel; 949 950 if (*option == '+') 951 break; 952 i++; 953 if (i == (ssize_t) argc) 954 ThrowConvertException(OptionError,"MissingArgument",option); 955 channel=ParsePixelChannelOption(argv[i]); 956 if (channel < 0) 957 ThrowConvertException(OptionError,"UnrecognizedChannelType", 958 argv[i]); 959 break; 960 } 961 if (LocaleCompare("charcoal",option+1) == 0) 962 { 963 if (*option == '+') 964 break; 965 i++; 966 if (i == (ssize_t) argc) 967 ThrowConvertException(OptionError,"MissingArgument",option); 968 if (IsGeometry(argv[i]) == MagickFalse) 969 ThrowConvertInvalidArgumentException(option,argv[i]); 970 break; 971 } 972 if (LocaleCompare("chop",option+1) == 0) 973 { 974 if (*option == '+') 975 break; 976 i++; 977 if (i == (ssize_t) argc) 978 ThrowConvertException(OptionError,"MissingArgument",option); 979 if (IsGeometry(argv[i]) == MagickFalse) 980 ThrowConvertInvalidArgumentException(option,argv[i]); 981 break; 982 } 983 if (LocaleCompare("clamp",option+1) == 0) 984 break; 985 if (LocaleCompare("clip",option+1) == 0) 986 break; 987 if (LocaleCompare("clip-mask",option+1) == 0) 988 { 989 if (*option == '+') 990 break; 991 i++; 992 if (i == (ssize_t) argc) 993 ThrowConvertException(OptionError,"MissingArgument",option); 994 break; 995 } 996 if (LocaleCompare("clip-path",option+1) == 0) 997 { 998 i++; 999 if (i == (ssize_t) argc) 1000 ThrowConvertException(OptionError,"MissingArgument",option); 1001 break; 1002 } 1003 if (LocaleCompare("clone",option+1) == 0) 1004 { 1005 Image 1006 *clone_images, 1007 *clone_list; 1008 1009 clone_list=CloneImageList(image,exception); 1010 if (k != 0) 1011 clone_list=CloneImageList(image_stack[k-1].image,exception); 1012 if (clone_list == (Image *) NULL) 1013 ThrowConvertException(ImageError,"ImageSequenceRequired",option); 1014 FireImageStack(MagickTrue,MagickTrue,MagickTrue); 1015 if (*option == '+') 1016 clone_images=CloneImages(clone_list,"-1",exception); 1017 else 1018 { 1019 i++; 1020 if (i == (ssize_t) argc) 1021 ThrowConvertException(OptionError,"MissingArgument",option); 1022 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse) 1023 ThrowConvertInvalidArgumentException(option,argv[i]); 1024 clone_images=CloneImages(clone_list,argv[i],exception); 1025 } 1026 if (clone_images == (Image *) NULL) 1027 ThrowConvertException(OptionError,"NoSuchImage",option); 1028 AppendImageStack(clone_images); 1029 clone_list=DestroyImageList(clone_list); 1030 break; 1031 } 1032 if (LocaleCompare("clut",option+1) == 0) 1033 break; 1034 if (LocaleCompare("coalesce",option+1) == 0) 1035 break; 1036 if (LocaleCompare("colorize",option+1) == 0) 1037 { 1038 if (*option == '+') 1039 break; 1040 i++; 1041 if (i == (ssize_t) argc) 1042 ThrowConvertException(OptionError,"MissingArgument",option); 1043 if (IsGeometry(argv[i]) == MagickFalse) 1044 ThrowConvertInvalidArgumentException(option,argv[i]); 1045 break; 1046 } 1047 if (LocaleCompare("color-matrix",option+1) == 0) 1048 { 1049 KernelInfo 1050 *kernel_info; 1051 1052 if (*option == '+') 1053 break; 1054 i++; 1055 if (i == (ssize_t) argc) 1056 ThrowConvertException(OptionError,"MissingArgument",option); 1057 kernel_info=AcquireKernelInfo(argv[i],exception); 1058 if (kernel_info == (KernelInfo *) NULL) 1059 ThrowConvertInvalidArgumentException(option,argv[i]); 1060 kernel_info=DestroyKernelInfo(kernel_info); 1061 break; 1062 } 1063 if (LocaleCompare("colors",option+1) == 0) 1064 { 1065 if (*option == '+') 1066 break; 1067 i++; 1068 if ((i == (ssize_t) argc) || 1069 (IsGeometry(argv[i]) == MagickFalse)) 1070 ThrowConvertException(OptionError,"MissingArgument",option); 1071 break; 1072 } 1073 if (LocaleCompare("colorspace",option+1) == 0) 1074 { 1075 ssize_t 1076 colorspace; 1077 1078 if (*option == '+') 1079 break; 1080 i++; 1081 if (i == (ssize_t) argc) 1082 ThrowConvertException(OptionError,"MissingArgument",option); 1083 colorspace=ParseCommandOption(MagickColorspaceOptions, 1084 MagickFalse,argv[i]); 1085 if (colorspace < 0) 1086 ThrowConvertException(OptionError,"UnrecognizedColorspace", 1087 argv[i]); 1088 break; 1089 } 1090 if (LocaleCompare("combine",option+1) == 0) 1091 break; 1092 if (LocaleCompare("comment",option+1) == 0) 1093 { 1094 if (*option == '+') 1095 break; 1096 i++; 1097 if (i == (ssize_t) argc) 1098 ThrowConvertException(OptionError,"MissingArgument",option); 1099 break; 1100 } 1101 if (LocaleCompare("compare",option+1) == 0) 1102 break; 1103 if (LocaleCompare("complex",option+1) == 0) 1104 { 1105 ssize_t 1106 op; 1107 1108 if (*option == '+') 1109 break; 1110 i++; 1111 if (i == (ssize_t) argc) 1112 ThrowConvertException(OptionError,"MissingArgument",option); 1113 op=ParseCommandOption(MagickComplexOptions,MagickFalse,argv[i]); 1114 if (op < 0) 1115 ThrowConvertException(OptionError,"UnrecognizedComplexOperator", 1116 argv[i]); 1117 break; 1118 } 1119 if (LocaleCompare("compose",option+1) == 0) 1120 { 1121 ssize_t 1122 compose; 1123 1124 if (*option == '+') 1125 break; 1126 i++; 1127 if (i == (ssize_t) argc) 1128 ThrowConvertException(OptionError,"MissingArgument",option); 1129 compose=ParseCommandOption(MagickComposeOptions,MagickFalse, 1130 argv[i]); 1131 if (compose < 0) 1132 ThrowConvertException(OptionError,"UnrecognizedComposeOperator", 1133 argv[i]); 1134 break; 1135 } 1136 if (LocaleCompare("composite",option+1) == 0) 1137 break; 1138 if (LocaleCompare("compress",option+1) == 0) 1139 { 1140 ssize_t 1141 compress; 1142 1143 if (*option == '+') 1144 break; 1145 i++; 1146 if (i == (ssize_t) argc) 1147 ThrowConvertException(OptionError,"MissingArgument",option); 1148 compress=ParseCommandOption(MagickCompressOptions,MagickFalse, 1149 argv[i]); 1150 if (compress < 0) 1151 ThrowConvertException(OptionError,"UnrecognizedImageCompression", 1152 argv[i]); 1153 break; 1154 } 1155 if (LocaleCompare("concurrent",option+1) == 0) 1156 break; 1157 if (LocaleCompare("connected-components",option+1) == 0) 1158 { 1159 i++; 1160 if (i == (ssize_t) argc) 1161 ThrowConvertException(OptionError,"MissingArgument",option); 1162 if (IsGeometry(argv[i]) == MagickFalse) 1163 ThrowConvertInvalidArgumentException(option,argv[i]); 1164 break; 1165 } 1166 if (LocaleCompare("contrast",option+1) == 0) 1167 break; 1168 if (LocaleCompare("contrast-stretch",option+1) == 0) 1169 { 1170 i++; 1171 if (i == (ssize_t) argc) 1172 ThrowConvertException(OptionError,"MissingArgument",option); 1173 if (IsGeometry(argv[i]) == MagickFalse) 1174 ThrowConvertInvalidArgumentException(option,argv[i]); 1175 break; 1176 } 1177 if (LocaleCompare("convolve",option+1) == 0) 1178 { 1179 KernelInfo 1180 *kernel_info; 1181 1182 if (*option == '+') 1183 break; 1184 i++; 1185 if (i == (ssize_t) argc) 1186 ThrowConvertException(OptionError,"MissingArgument",option); 1187 kernel_info=AcquireKernelInfo(argv[i],exception); 1188 if (kernel_info == (KernelInfo *) NULL) 1189 ThrowConvertInvalidArgumentException(option,argv[i]); 1190 kernel_info=DestroyKernelInfo(kernel_info); 1191 break; 1192 } 1193 if (LocaleCompare("copy",option+1) == 0) 1194 { 1195 if (*option == '+') 1196 break; 1197 i++; 1198 if (i == (ssize_t) argc) 1199 ThrowConvertException(OptionError,"MissingArgument",option); 1200 if (IsGeometry(argv[i]) == MagickFalse) 1201 ThrowConvertInvalidArgumentException(option,argv[i]); 1202 i++; 1203 if (i == (ssize_t) argc) 1204 ThrowConvertException(OptionError,"MissingArgument",option); 1205 if (IsGeometry(argv[i]) == MagickFalse) 1206 ThrowConvertInvalidArgumentException(option,argv[i]); 1207 break; 1208 } 1209 if (LocaleCompare("crop",option+1) == 0) 1210 { 1211 if (*option == '+') 1212 break; 1213 i++; 1214 if (i == (ssize_t) argc) 1215 ThrowConvertException(OptionError,"MissingArgument",option); 1216 if (IsGeometry(argv[i]) == MagickFalse) 1217 ThrowConvertInvalidArgumentException(option,argv[i]); 1218 break; 1219 } 1220 if (LocaleCompare("cycle",option+1) == 0) 1221 { 1222 if (*option == '+') 1223 break; 1224 i++; 1225 if (i == (ssize_t) argc) 1226 ThrowConvertException(OptionError,"MissingArgument",option); 1227 if (IsGeometry(argv[i]) == MagickFalse) 1228 ThrowConvertInvalidArgumentException(option,argv[i]); 1229 break; 1230 } 1231 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1232 } 1233 case 'd': 1234 { 1235 if (LocaleCompare("decipher",option+1) == 0) 1236 { 1237 if (*option == '+') 1238 break; 1239 i++; 1240 if (i == (ssize_t) argc) 1241 ThrowConvertException(OptionError,"MissingArgument",option); 1242 break; 1243 } 1244 if (LocaleCompare("deconstruct",option+1) == 0) 1245 break; 1246 if (LocaleCompare("debug",option+1) == 0) 1247 { 1248 ssize_t 1249 event; 1250 1251 if (*option == '+') 1252 break; 1253 i++; 1254 if (i == (ssize_t) argc) 1255 ThrowConvertException(OptionError,"MissingArgument",option); 1256 event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]); 1257 if (event < 0) 1258 ThrowConvertException(OptionError,"UnrecognizedEventType", 1259 argv[i]); 1260 (void) SetLogEventMask(argv[i]); 1261 break; 1262 } 1263 if (LocaleCompare("define",option+1) == 0) 1264 { 1265 i++; 1266 if (i == (ssize_t) argc) 1267 ThrowConvertException(OptionError,"MissingArgument",option); 1268 if (*option == '+') 1269 { 1270 const char 1271 *define; 1272 1273 define=GetImageOption(image_info,argv[i]); 1274 if (define == (const char *) NULL) 1275 ThrowConvertException(OptionError,"NoSuchOption",argv[i]); 1276 break; 1277 } 1278 break; 1279 } 1280 if (LocaleCompare("delay",option+1) == 0) 1281 { 1282 if (*option == '+') 1283 break; 1284 i++; 1285 if (i == (ssize_t) argc) 1286 ThrowConvertException(OptionError,"MissingArgument",option); 1287 if (IsGeometry(argv[i]) == MagickFalse) 1288 ThrowConvertInvalidArgumentException(option,argv[i]); 1289 break; 1290 } 1291 if (LocaleCompare("density",option+1) == 0) 1292 { 1293 if (*option == '+') 1294 break; 1295 i++; 1296 if (i == (ssize_t) argc) 1297 ThrowConvertException(OptionError,"MissingArgument",option); 1298 if (IsGeometry(argv[i]) == MagickFalse) 1299 ThrowConvertInvalidArgumentException(option,argv[i]); 1300 break; 1301 } 1302 if (LocaleCompare("depth",option+1) == 0) 1303 { 1304 if (*option == '+') 1305 break; 1306 i++; 1307 if (i == (ssize_t) argc) 1308 ThrowConvertException(OptionError,"MissingArgument",option); 1309 if (IsGeometry(argv[i]) == MagickFalse) 1310 ThrowConvertInvalidArgumentException(option,argv[i]); 1311 break; 1312 } 1313 if (LocaleCompare("delete",option+1) == 0) 1314 { 1315 if (*option == '+') 1316 break; 1317 i++; 1318 if (i == (ssize_t) argc) 1319 ThrowConvertException(OptionError,"MissingArgument",option); 1320 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse) 1321 ThrowConvertInvalidArgumentException(option,argv[i]); 1322 break; 1323 } 1324 if (LocaleCompare("deskew",option+1) == 0) 1325 { 1326 if (*option == '+') 1327 break; 1328 i++; 1329 if (i == (ssize_t) argc) 1330 ThrowConvertException(OptionError,"MissingArgument",option); 1331 if (IsGeometry(argv[i]) == MagickFalse) 1332 ThrowConvertInvalidArgumentException(option,argv[i]); 1333 break; 1334 } 1335 if (LocaleCompare("despeckle",option+1) == 0) 1336 break; 1337 if (LocaleCompare("direction",option+1) == 0) 1338 { 1339 ssize_t 1340 direction; 1341 1342 if (*option == '+') 1343 break; 1344 i++; 1345 if (i == (ssize_t) argc) 1346 ThrowConvertException(OptionError,"MissingArgument",option); 1347 direction=ParseCommandOption(MagickDirectionOptions,MagickFalse, 1348 argv[i]); 1349 if (direction < 0) 1350 ThrowConvertException(OptionError,"UnrecognizedDirectionType", 1351 argv[i]); 1352 break; 1353 } 1354 if (LocaleCompare("display",option+1) == 0) 1355 { 1356 if (*option == '+') 1357 break; 1358 i++; 1359 if (i == (ssize_t) argc) 1360 ThrowConvertException(OptionError,"MissingArgument",option); 1361 break; 1362 } 1363 if (LocaleCompare("dispose",option+1) == 0) 1364 { 1365 ssize_t 1366 dispose; 1367 1368 if (*option == '+') 1369 break; 1370 i++; 1371 if (i == (ssize_t) argc) 1372 ThrowConvertException(OptionError,"MissingArgument",option); 1373 dispose=ParseCommandOption(MagickDisposeOptions,MagickFalse,argv[i]); 1374 if (dispose < 0) 1375 ThrowConvertException(OptionError,"UnrecognizedDisposeMethod", 1376 argv[i]); 1377 break; 1378 } 1379 if (LocaleCompare("distort",option+1) == 0) 1380 { 1381 ssize_t 1382 op; 1383 1384 i++; 1385 if (i == (ssize_t) argc) 1386 ThrowConvertException(OptionError,"MissingArgument",option); 1387 op=ParseCommandOption(MagickDistortOptions,MagickFalse,argv[i]); 1388 if (op < 0) 1389 ThrowConvertException(OptionError,"UnrecognizedDistortMethod", 1390 argv[i]); 1391 i++; 1392 if (i == (ssize_t) argc) 1393 ThrowConvertException(OptionError,"MissingArgument",option); 1394 break; 1395 } 1396 if (LocaleCompare("dither",option+1) == 0) 1397 { 1398 ssize_t 1399 method; 1400 1401 if (*option == '+') 1402 break; 1403 i++; 1404 if (i == (ssize_t) argc) 1405 ThrowConvertException(OptionError,"MissingArgument",option); 1406 method=ParseCommandOption(MagickDitherOptions,MagickFalse,argv[i]); 1407 if (method < 0) 1408 ThrowConvertException(OptionError,"UnrecognizedDitherMethod", 1409 argv[i]); 1410 break; 1411 } 1412 if (LocaleCompare("draw",option+1) == 0) 1413 { 1414 if (*option == '+') 1415 break; 1416 i++; 1417 if (i == (ssize_t) argc) 1418 ThrowConvertException(OptionError,"MissingArgument",option); 1419 break; 1420 } 1421 if (LocaleCompare("duplicate",option+1) == 0) 1422 { 1423 if (*option == '+') 1424 break; 1425 i++; 1426 if (i == (ssize_t) argc) 1427 ThrowConvertException(OptionError,"MissingArgument",option); 1428 if (IsGeometry(argv[i]) == MagickFalse) 1429 ThrowConvertInvalidArgumentException(option,argv[i]); 1430 break; 1431 } 1432 if (LocaleCompare("duration",option+1) == 0) 1433 { 1434 if (*option == '+') 1435 break; 1436 i++; 1437 if (i == (ssize_t) argc) 1438 ThrowConvertException(OptionError,"MissingArgument",option); 1439 if (IsGeometry(argv[i]) == MagickFalse) 1440 ThrowConvertInvalidArgumentException(option,argv[i]); 1441 break; 1442 } 1443 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1444 } 1445 case 'e': 1446 { 1447 if (LocaleCompare("edge",option+1) == 0) 1448 { 1449 if (*option == '+') 1450 break; 1451 i++; 1452 if (i == (ssize_t) argc) 1453 ThrowConvertException(OptionError,"MissingArgument",option); 1454 if (IsGeometry(argv[i]) == MagickFalse) 1455 ThrowConvertInvalidArgumentException(option,argv[i]); 1456 break; 1457 } 1458 if (LocaleCompare("emboss",option+1) == 0) 1459 { 1460 if (*option == '+') 1461 break; 1462 i++; 1463 if (i == (ssize_t) argc) 1464 ThrowConvertException(OptionError,"MissingArgument",option); 1465 if (IsGeometry(argv[i]) == MagickFalse) 1466 ThrowConvertInvalidArgumentException(option,argv[i]); 1467 break; 1468 } 1469 if (LocaleCompare("encipher",option+1) == 0) 1470 { 1471 if (*option == '+') 1472 break; 1473 i++; 1474 if (i == (ssize_t) argc) 1475 ThrowConvertException(OptionError,"MissingArgument",option); 1476 break; 1477 } 1478 if (LocaleCompare("encoding",option+1) == 0) 1479 { 1480 if (*option == '+') 1481 break; 1482 i++; 1483 if (i == (ssize_t) argc) 1484 ThrowConvertException(OptionError,"MissingArgument",option); 1485 break; 1486 } 1487 if (LocaleCompare("endian",option+1) == 0) 1488 { 1489 ssize_t 1490 endian; 1491 1492 if (*option == '+') 1493 break; 1494 i++; 1495 if (i == (ssize_t) argc) 1496 ThrowConvertException(OptionError,"MissingArgument",option); 1497 endian=ParseCommandOption(MagickEndianOptions,MagickFalse, 1498 argv[i]); 1499 if (endian < 0) 1500 ThrowConvertException(OptionError,"UnrecognizedEndianType", 1501 argv[i]); 1502 break; 1503 } 1504 if (LocaleCompare("enhance",option+1) == 0) 1505 break; 1506 if (LocaleCompare("equalize",option+1) == 0) 1507 break; 1508 if (LocaleCompare("evaluate",option+1) == 0) 1509 { 1510 ssize_t 1511 op; 1512 1513 if (*option == '+') 1514 break; 1515 i++; 1516 if (i == (ssize_t) argc) 1517 ThrowConvertException(OptionError,"MissingArgument",option); 1518 op=ParseCommandOption(MagickEvaluateOptions,MagickFalse,argv[i]); 1519 if (op < 0) 1520 ThrowConvertException(OptionError,"UnrecognizedEvaluateOperator", 1521 argv[i]); 1522 i++; 1523 if (i == (ssize_t) argc) 1524 ThrowConvertException(OptionError,"MissingArgument",option); 1525 if (IsGeometry(argv[i]) == MagickFalse) 1526 ThrowConvertInvalidArgumentException(option,argv[i]); 1527 break; 1528 } 1529 if (LocaleCompare("evaluate-sequence",option+1) == 0) 1530 { 1531 ssize_t 1532 op; 1533 1534 if (*option == '+') 1535 break; 1536 i++; 1537 if (i == (ssize_t) argc) 1538 ThrowConvertException(OptionError,"MissingArgument",option); 1539 op=ParseCommandOption(MagickEvaluateOptions,MagickFalse,argv[i]); 1540 if (op < 0) 1541 ThrowConvertException(OptionError,"UnrecognizedEvaluateOperator", 1542 argv[i]); 1543 break; 1544 } 1545 if (LocaleCompare("extent",option+1) == 0) 1546 { 1547 if (*option == '+') 1548 break; 1549 i++; 1550 if (i == (ssize_t) argc) 1551 ThrowConvertException(OptionError,"MissingArgument",option); 1552 if (IsGeometry(argv[i]) == MagickFalse) 1553 ThrowConvertInvalidArgumentException(option,argv[i]); 1554 break; 1555 } 1556 if (LocaleCompare("extract",option+1) == 0) 1557 { 1558 if (*option == '+') 1559 break; 1560 i++; 1561 if (i == (ssize_t) argc) 1562 ThrowConvertException(OptionError,"MissingArgument",option); 1563 if (IsGeometry(argv[i]) == MagickFalse) 1564 ThrowConvertInvalidArgumentException(option,argv[i]); 1565 break; 1566 } 1567 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1568 } 1569 case 'f': 1570 { 1571 if (LocaleCompare("family",option+1) == 0) 1572 { 1573 if (*option == '+') 1574 break; 1575 i++; 1576 if (i == (ssize_t) argc) 1577 ThrowConvertException(OptionError,"MissingArgument",option); 1578 break; 1579 } 1580 if (LocaleCompare("features",option+1) == 0) 1581 { 1582 if (*option == '+') 1583 break; 1584 i++; 1585 if (i == (ssize_t) argc) 1586 ThrowConvertException(OptionError,"MissingArgument",option); 1587 if (IsGeometry(argv[i]) == MagickFalse) 1588 ThrowConvertInvalidArgumentException(option,argv[i]); 1589 break; 1590 } 1591 if (LocaleCompare("fft",option+1) == 0) 1592 break; 1593 if (LocaleCompare("fill",option+1) == 0) 1594 { 1595 if (*option == '+') 1596 break; 1597 i++; 1598 if (i == (ssize_t) argc) 1599 ThrowConvertException(OptionError,"MissingArgument",option); 1600 break; 1601 } 1602 if (LocaleCompare("filter",option+1) == 0) 1603 { 1604 ssize_t 1605 filter; 1606 1607 if (*option == '+') 1608 break; 1609 i++; 1610 if (i == (ssize_t) argc) 1611 ThrowConvertException(OptionError,"MissingArgument",option); 1612 filter=ParseCommandOption(MagickFilterOptions,MagickFalse,argv[i]); 1613 if (filter < 0) 1614 ThrowConvertException(OptionError,"UnrecognizedImageFilter", 1615 argv[i]); 1616 break; 1617 } 1618 if (LocaleCompare("flatten",option+1) == 0) 1619 break; 1620 if (LocaleCompare("flip",option+1) == 0) 1621 break; 1622 if (LocaleCompare("flop",option+1) == 0) 1623 break; 1624 if (LocaleCompare("floodfill",option+1) == 0) 1625 { 1626 if (*option == '+') 1627 break; 1628 i++; 1629 if (i == (ssize_t) argc) 1630 ThrowConvertException(OptionError,"MissingArgument",option); 1631 if (IsGeometry(argv[i]) == MagickFalse) 1632 ThrowConvertInvalidArgumentException(option,argv[i]); 1633 i++; 1634 if (i == (ssize_t) argc) 1635 ThrowConvertException(OptionError,"MissingArgument",option); 1636 break; 1637 } 1638 if (LocaleCompare("font",option+1) == 0) 1639 { 1640 if (*option == '+') 1641 break; 1642 i++; 1643 if (i == (ssize_t) argc) 1644 ThrowConvertException(OptionError,"MissingArgument",option); 1645 break; 1646 } 1647 if (LocaleCompare("format",option+1) == 0) 1648 { 1649 if (*option == '+') 1650 break; 1651 i++; 1652 if (i == (ssize_t) argc) 1653 ThrowConvertException(OptionError,"MissingArgument",option); 1654 format=argv[i]; 1655 break; 1656 } 1657 if (LocaleCompare("frame",option+1) == 0) 1658 { 1659 if (*option == '+') 1660 break; 1661 i++; 1662 if (i == (ssize_t) argc) 1663 ThrowConvertException(OptionError,"MissingArgument",option); 1664 if (IsGeometry(argv[i]) == MagickFalse) 1665 ThrowConvertInvalidArgumentException(option,argv[i]); 1666 break; 1667 } 1668 if (LocaleCompare("function",option+1) == 0) 1669 { 1670 ssize_t 1671 op; 1672 1673 if (*option == '+') 1674 break; 1675 i++; 1676 if (i == (ssize_t) argc) 1677 ThrowConvertException(OptionError,"MissingArgument",option); 1678 op=ParseCommandOption(MagickFunctionOptions,MagickFalse,argv[i]); 1679 if (op < 0) 1680 ThrowConvertException(OptionError,"UnrecognizedFunction",argv[i]); 1681 i++; 1682 if (i == (ssize_t) argc) 1683 ThrowConvertException(OptionError,"MissingArgument",option); 1684 break; 1685 } 1686 if (LocaleCompare("fuzz",option+1) == 0) 1687 { 1688 if (*option == '+') 1689 break; 1690 i++; 1691 if (i == (ssize_t) argc) 1692 ThrowConvertException(OptionError,"MissingArgument",option); 1693 if (IsGeometry(argv[i]) == MagickFalse) 1694 ThrowConvertInvalidArgumentException(option,argv[i]); 1695 break; 1696 } 1697 if (LocaleCompare("fx",option+1) == 0) 1698 { 1699 if (*option == '+') 1700 break; 1701 i++; 1702 if (i == (ssize_t) argc) 1703 ThrowConvertException(OptionError,"MissingArgument",option); 1704 break; 1705 } 1706 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1707 } 1708 case 'g': 1709 { 1710 if (LocaleCompare("gamma",option+1) == 0) 1711 { 1712 i++; 1713 if (i == (ssize_t) argc) 1714 ThrowConvertException(OptionError,"MissingArgument",option); 1715 if (IsGeometry(argv[i]) == MagickFalse) 1716 ThrowConvertInvalidArgumentException(option,argv[i]); 1717 break; 1718 } 1719 if ((LocaleCompare("gaussian-blur",option+1) == 0) || 1720 (LocaleCompare("gaussian",option+1) == 0)) 1721 { 1722 i++; 1723 if (i == (ssize_t) argc) 1724 ThrowConvertException(OptionError,"MissingArgument",option); 1725 if (IsGeometry(argv[i]) == MagickFalse) 1726 ThrowConvertInvalidArgumentException(option,argv[i]); 1727 break; 1728 } 1729 if (LocaleCompare("geometry",option+1) == 0) 1730 { 1731 if (*option == '+') 1732 break; 1733 i++; 1734 if (i == (ssize_t) argc) 1735 ThrowConvertException(OptionError,"MissingArgument",option); 1736 if (IsGeometry(argv[i]) == MagickFalse) 1737 ThrowConvertInvalidArgumentException(option,argv[i]); 1738 break; 1739 } 1740 if (LocaleCompare("gravity",option+1) == 0) 1741 { 1742 ssize_t 1743 gravity; 1744 1745 if (*option == '+') 1746 break; 1747 i++; 1748 if (i == (ssize_t) argc) 1749 ThrowConvertException(OptionError,"MissingArgument",option); 1750 gravity=ParseCommandOption(MagickGravityOptions,MagickFalse, 1751 argv[i]); 1752 if (gravity < 0) 1753 ThrowConvertException(OptionError,"UnrecognizedGravityType", 1754 argv[i]); 1755 break; 1756 } 1757 if (LocaleCompare("grayscale",option+1) == 0) 1758 { 1759 ssize_t 1760 method; 1761 1762 if (*option == '+') 1763 break; 1764 i++; 1765 if (i == (ssize_t) argc) 1766 ThrowConvertException(OptionError,"MissingArgument",option); 1767 method=ParseCommandOption(MagickPixelIntensityOptions,MagickFalse, 1768 argv[i]); 1769 if (method < 0) 1770 ThrowConvertException(OptionError,"UnrecognizedIntensityMethod", 1771 argv[i]); 1772 break; 1773 } 1774 if (LocaleCompare("green-primary",option+1) == 0) 1775 { 1776 if (*option == '+') 1777 break; 1778 i++; 1779 if (i == (ssize_t) argc) 1780 ThrowConvertException(OptionError,"MissingArgument",option); 1781 if (IsGeometry(argv[i]) == MagickFalse) 1782 ThrowConvertInvalidArgumentException(option,argv[i]); 1783 break; 1784 } 1785 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1786 } 1787 case 'h': 1788 { 1789 if (LocaleCompare("hald-clut",option+1) == 0) 1790 break; 1791 if ((LocaleCompare("help",option+1) == 0) || 1792 (LocaleCompare("-help",option+1) == 0)) 1793 return(ConvertUsage()); 1794 if (LocaleCompare("hough-lines",option+1) == 0) 1795 { 1796 if (*option == '+') 1797 break; 1798 i++; 1799 if (i == (ssize_t) argc) 1800 ThrowConvertException(OptionError,"MissingArgument",option); 1801 if (IsGeometry(argv[i]) == MagickFalse) 1802 ThrowConvertInvalidArgumentException(option,argv[i]); 1803 break; 1804 } 1805 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1806 } 1807 case 'i': 1808 { 1809 if (LocaleCompare("identify",option+1) == 0) 1810 break; 1811 if (LocaleCompare("ift",option+1) == 0) 1812 break; 1813 if (LocaleCompare("implode",option+1) == 0) 1814 { 1815 if (*option == '+') 1816 break; 1817 i++; 1818 if (i == (ssize_t) argc) 1819 ThrowConvertException(OptionError,"MissingArgument",option); 1820 if (IsGeometry(argv[i]) == MagickFalse) 1821 ThrowConvertInvalidArgumentException(option,argv[i]); 1822 break; 1823 } 1824 if (LocaleCompare("insert",option+1) == 0) 1825 { 1826 if (*option == '+') 1827 break; 1828 i++; 1829 if (i == (ssize_t) argc) 1830 ThrowConvertException(OptionError,"MissingArgument",option); 1831 if (IsGeometry(argv[i]) == MagickFalse) 1832 ThrowConvertInvalidArgumentException(option,argv[i]); 1833 break; 1834 } 1835 if (LocaleCompare("intensity",option+1) == 0) 1836 { 1837 ssize_t 1838 intensity; 1839 1840 if (*option == '+') 1841 break; 1842 i++; 1843 if (i == (ssize_t) argc) 1844 ThrowConvertException(OptionError,"MissingArgument",option); 1845 intensity=ParseCommandOption(MagickPixelIntensityOptions, 1846 MagickFalse,argv[i]); 1847 if (intensity < 0) 1848 ThrowConvertException(OptionError,"UnrecognizedIntensityMethod", 1849 argv[i]); 1850 break; 1851 } 1852 if (LocaleCompare("intent",option+1) == 0) 1853 { 1854 ssize_t 1855 intent; 1856 1857 if (*option == '+') 1858 break; 1859 i++; 1860 if (i == (ssize_t) argc) 1861 ThrowConvertException(OptionError,"MissingArgument",option); 1862 intent=ParseCommandOption(MagickIntentOptions,MagickFalse,argv[i]); 1863 if (intent < 0) 1864 ThrowConvertException(OptionError,"UnrecognizedIntentType",argv[i]); 1865 break; 1866 } 1867 if (LocaleCompare("interlace",option+1) == 0) 1868 { 1869 ssize_t 1870 interlace; 1871 1872 if (*option == '+') 1873 break; 1874 i++; 1875 if (i == (ssize_t) argc) 1876 ThrowConvertException(OptionError,"MissingArgument",option); 1877 interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse, 1878 argv[i]); 1879 if (interlace < 0) 1880 ThrowConvertException(OptionError,"UnrecognizedInterlaceType", 1881 argv[i]); 1882 break; 1883 } 1884 if (LocaleCompare("interline-spacing",option+1) == 0) 1885 { 1886 if (*option == '+') 1887 break; 1888 i++; 1889 if (i == (ssize_t) argc) 1890 ThrowConvertException(OptionError,"MissingArgument",option); 1891 if (IsGeometry(argv[i]) == MagickFalse) 1892 ThrowConvertInvalidArgumentException(option,argv[i]); 1893 break; 1894 } 1895 if (LocaleCompare("interpolate",option+1) == 0) 1896 { 1897 ssize_t 1898 interpolate; 1899 1900 if (*option == '+') 1901 break; 1902 i++; 1903 if (i == (ssize_t) argc) 1904 ThrowConvertException(OptionError,"MissingArgument",option); 1905 interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse, 1906 argv[i]); 1907 if (interpolate < 0) 1908 ThrowConvertException(OptionError,"UnrecognizedInterpolateMethod", 1909 argv[i]); 1910 break; 1911 } 1912 if (LocaleCompare("interword-spacing",option+1) == 0) 1913 { 1914 if (*option == '+') 1915 break; 1916 i++; 1917 if (i == (ssize_t) argc) 1918 ThrowConvertException(OptionError,"MissingArgument",option); 1919 if (IsGeometry(argv[i]) == MagickFalse) 1920 ThrowConvertInvalidArgumentException(option,argv[i]); 1921 break; 1922 } 1923 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1924 } 1925 case 'k': 1926 { 1927 if (LocaleCompare("kerning",option+1) == 0) 1928 { 1929 if (*option == '+') 1930 break; 1931 i++; 1932 if (i == (ssize_t) argc) 1933 ThrowConvertException(OptionError,"MissingArgument",option); 1934 if (IsGeometry(argv[i]) == MagickFalse) 1935 ThrowConvertInvalidArgumentException(option,argv[i]); 1936 break; 1937 } 1938 if (LocaleCompare("kuwahara",option+1) == 0) 1939 { 1940 if (*option == '+') 1941 break; 1942 i++; 1943 if (i == (ssize_t) argc) 1944 ThrowConvertException(OptionError,"MissingArgument",option); 1945 if (IsGeometry(argv[i]) == MagickFalse) 1946 ThrowConvertInvalidArgumentException(option,argv[i]); 1947 break; 1948 } 1949 ThrowConvertException(OptionError,"UnrecognizedOption",option) 1950 } 1951 case 'l': 1952 { 1953 if (LocaleCompare("label",option+1) == 0) 1954 { 1955 if (*option == '+') 1956 break; 1957 i++; 1958 if (i == (ssize_t) argc) 1959 ThrowConvertException(OptionError,"MissingArgument",option); 1960 break; 1961 } 1962 if (LocaleCompare("lat",option+1) == 0) 1963 { 1964 if (*option == '+') 1965 break; 1966 i++; 1967 if (i == (ssize_t) argc) 1968 ThrowConvertException(OptionError,"MissingArgument",option); 1969 if (IsGeometry(argv[i]) == MagickFalse) 1970 ThrowConvertInvalidArgumentException(option,argv[i]); 1971 break; 1972 } 1973 if (LocaleCompare("layers",option+1) == 0) 1974 { 1975 ssize_t 1976 type; 1977 1978 if (*option == '+') 1979 break; 1980 i++; 1981 if (i == (ssize_t) argc) 1982 ThrowConvertException(OptionError,"MissingArgument",option); 1983 type=ParseCommandOption(MagickLayerOptions,MagickFalse,argv[i]); 1984 if (type < 0) 1985 ThrowConvertException(OptionError,"UnrecognizedLayerMethod", 1986 argv[i]); 1987 break; 1988 } 1989 if (LocaleCompare("level",option+1) == 0) 1990 { 1991 i++; 1992 if (i == (ssize_t) argc) 1993 ThrowConvertException(OptionError,"MissingArgument",option); 1994 if (IsGeometry(argv[i]) == MagickFalse) 1995 ThrowConvertInvalidArgumentException(option,argv[i]); 1996 break; 1997 } 1998 if (LocaleCompare("level-colors",option+1) == 0) 1999 { 2000 i++; 2001 if (i == (ssize_t) argc) 2002 ThrowConvertException(OptionError,"MissingArgument",option); 2003 break; 2004 } 2005 if (LocaleCompare("limit",option+1) == 0) 2006 { 2007 char 2008 *p; 2009 2010 double 2011 value; 2012 2013 ssize_t 2014 resource; 2015 2016 if (*option == '+') 2017 break; 2018 i++; 2019 if (i == (ssize_t) argc) 2020 ThrowConvertException(OptionError,"MissingArgument",option); 2021 resource=ParseCommandOption(MagickResourceOptions,MagickFalse, 2022 argv[i]); 2023 if (resource < 0) 2024 ThrowConvertException(OptionError,"UnrecognizedResourceType", 2025 argv[i]); 2026 i++; 2027 if (i == (ssize_t) argc) 2028 ThrowConvertException(OptionError,"MissingArgument",option); 2029 value=StringToDouble(argv[i],&p); 2030 (void) value; 2031 if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0)) 2032 ThrowConvertInvalidArgumentException(option,argv[i]); 2033 break; 2034 } 2035 if (LocaleCompare("linear-stretch",option+1) == 0) 2036 { 2037 i++; 2038 if (i == (ssize_t) argc) 2039 ThrowConvertException(OptionError,"MissingArgument",option); 2040 if (IsGeometry(argv[i]) == MagickFalse) 2041 ThrowConvertInvalidArgumentException(option,argv[i]); 2042 break; 2043 } 2044 if (LocaleCompare("liquid-rescale",option+1) == 0) 2045 { 2046 i++; 2047 if (i == (ssize_t) argc) 2048 ThrowConvertException(OptionError,"MissingArgument",option); 2049 if (IsGeometry(argv[i]) == MagickFalse) 2050 ThrowConvertInvalidArgumentException(option,argv[i]); 2051 break; 2052 } 2053 if (LocaleCompare("list",option+1) == 0) 2054 { 2055 ssize_t 2056 list; 2057 2058 if (*option == '+') 2059 break; 2060 i++; 2061 if (i == (ssize_t) argc) 2062 ThrowConvertException(OptionError,"MissingArgument",option); 2063 list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]); 2064 if (list < 0) 2065 ThrowConvertException(OptionError,"UnrecognizedListType",argv[i]); 2066 status=MogrifyImageInfo(image_info,(int) (i-j+1),(const char **) 2067 argv+j,exception); 2068 DestroyConvert(); 2069 return(status == 0 ? MagickTrue : MagickFalse); 2070 } 2071 if (LocaleCompare("local-contrast",option+1) == 0) 2072 { 2073 i++; 2074 if (i == (ssize_t)argc) 2075 ThrowConvertException(OptionError, "MissingArgument", option); 2076 if (IsGeometry(argv[i]) == MagickFalse) 2077 ThrowConvertInvalidArgumentException(option,argv[i]); 2078 break; 2079 } 2080 if (LocaleCompare("log",option+1) == 0) 2081 { 2082 if (*option == '+') 2083 break; 2084 i++; 2085 if ((i == (ssize_t) argc) || 2086 (strchr(argv[i],'%') == (char *) NULL)) 2087 ThrowConvertException(OptionError,"MissingArgument",option); 2088 break; 2089 } 2090 if (LocaleCompare("loop",option+1) == 0) 2091 { 2092 if (*option == '+') 2093 break; 2094 i++; 2095 if (i == (ssize_t) argc) 2096 ThrowConvertException(OptionError,"MissingArgument",option); 2097 if (IsGeometry(argv[i]) == MagickFalse) 2098 ThrowConvertInvalidArgumentException(option,argv[i]); 2099 break; 2100 } 2101 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2102 } 2103 case 'm': 2104 { 2105 if (LocaleCompare("map",option+1) == 0) 2106 { 2107 if (*option == '+') 2108 break; 2109 i++; 2110 if (i == (ssize_t) argc) 2111 ThrowConvertException(OptionError,"MissingArgument",option); 2112 break; 2113 } 2114 if (LocaleCompare("mask",option+1) == 0) 2115 { 2116 if (*option == '+') 2117 break; 2118 i++; 2119 if (i == (ssize_t) argc) 2120 ThrowConvertException(OptionError,"MissingArgument",option); 2121 break; 2122 } 2123 if (LocaleCompare("matte",option+1) == 0) 2124 break; 2125 if (LocaleCompare("maximum",option+1) == 0) 2126 break; 2127 if (LocaleCompare("mean-shift",option+1) == 0) 2128 { 2129 if (*option == '+') 2130 break; 2131 i++; 2132 if (i == (ssize_t) argc) 2133 ThrowConvertException(OptionError,"MissingArgument",option); 2134 if (IsGeometry(argv[i]) == MagickFalse) 2135 ThrowConvertInvalidArgumentException(option,argv[i]); 2136 break; 2137 } 2138 if (LocaleCompare("median",option+1) == 0) 2139 { 2140 if (*option == '+') 2141 break; 2142 i++; 2143 if (i == (ssize_t) argc) 2144 ThrowConvertException(OptionError,"MissingArgument",option); 2145 if (IsGeometry(argv[i]) == MagickFalse) 2146 ThrowConvertInvalidArgumentException(option,argv[i]); 2147 break; 2148 } 2149 if (LocaleCompare("metric",option+1) == 0) 2150 { 2151 ssize_t 2152 type; 2153 2154 if (*option == '+') 2155 break; 2156 i++; 2157 if (i == (ssize_t) argc) 2158 ThrowConvertException(OptionError,"MissingArgument",option); 2159 type=ParseCommandOption(MagickMetricOptions,MagickTrue,argv[i]); 2160 if (type < 0) 2161 ThrowConvertException(OptionError,"UnrecognizedMetricType", 2162 argv[i]); 2163 break; 2164 } 2165 if (LocaleCompare("minimum",option+1) == 0) 2166 break; 2167 if (LocaleCompare("mode",option+1) == 0) 2168 { 2169 if (*option == '+') 2170 break; 2171 i++; 2172 if (i == (ssize_t) argc) 2173 ThrowConvertException(OptionError,"MissingArgument",option); 2174 if (IsGeometry(argv[i]) == MagickFalse) 2175 ThrowConvertInvalidArgumentException(option,argv[i]); 2176 break; 2177 } 2178 if (LocaleCompare("modulate",option+1) == 0) 2179 { 2180 if (*option == '+') 2181 break; 2182 i++; 2183 if (i == (ssize_t) argc) 2184 ThrowConvertException(OptionError,"MissingArgument",option); 2185 if (IsGeometry(argv[i]) == MagickFalse) 2186 ThrowConvertInvalidArgumentException(option,argv[i]); 2187 break; 2188 } 2189 if (LocaleCompare("moments",option+1) == 0) 2190 break; 2191 if (LocaleCompare("monitor",option+1) == 0) 2192 break; 2193 if (LocaleCompare("monochrome",option+1) == 0) 2194 break; 2195 if (LocaleCompare("morph",option+1) == 0) 2196 { 2197 if (*option == '+') 2198 break; 2199 i++; 2200 if (i == (ssize_t) argc) 2201 ThrowConvertException(OptionError,"MissingArgument",option); 2202 if (IsGeometry(argv[i]) == MagickFalse) 2203 ThrowConvertInvalidArgumentException(option,argv[i]); 2204 break; 2205 } 2206 if (LocaleCompare("morphology",option+1) == 0) 2207 { 2208 char 2209 token[MagickPathExtent]; 2210 2211 KernelInfo 2212 *kernel_info; 2213 2214 ssize_t 2215 op; 2216 2217 i++; 2218 if (i == (ssize_t) argc) 2219 ThrowConvertException(OptionError,"MissingArgument",option); 2220 GetNextToken(argv[i],(const char **) NULL,MagickPathExtent,token); 2221 op=ParseCommandOption(MagickMorphologyOptions,MagickFalse,token); 2222 if (op < 0) 2223 ThrowConvertException(OptionError,"UnrecognizedMorphologyMethod", 2224 token); 2225 i++; 2226 if (i == (ssize_t) argc) 2227 ThrowConvertException(OptionError,"MissingArgument",option); 2228 kernel_info=AcquireKernelInfo(argv[i],exception); 2229 if (kernel_info == (KernelInfo *) NULL) 2230 ThrowConvertInvalidArgumentException(option,argv[i]); 2231 kernel_info=DestroyKernelInfo(kernel_info); 2232 break; 2233 } 2234 if (LocaleCompare("mosaic",option+1) == 0) 2235 break; 2236 if (LocaleCompare("motion-blur",option+1) == 0) 2237 { 2238 if (*option == '+') 2239 break; 2240 i++; 2241 if (i == (ssize_t) argc) 2242 ThrowConvertException(OptionError,"MissingArgument",option); 2243 if (IsGeometry(argv[i]) == MagickFalse) 2244 ThrowConvertInvalidArgumentException(option,argv[i]); 2245 break; 2246 } 2247 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2248 } 2249 case 'n': 2250 { 2251 if (LocaleCompare("negate",option+1) == 0) 2252 break; 2253 if (LocaleCompare("noise",option+1) == 0) 2254 { 2255 i++; 2256 if (i == (ssize_t) argc) 2257 ThrowConvertException(OptionError,"MissingArgument",option); 2258 if (*option == '+') 2259 { 2260 ssize_t 2261 noise; 2262 2263 noise=ParseCommandOption(MagickNoiseOptions,MagickFalse,argv[i]); 2264 if (noise < 0) 2265 ThrowConvertException(OptionError,"UnrecognizedNoiseType", 2266 argv[i]); 2267 break; 2268 } 2269 if (IsGeometry(argv[i]) == MagickFalse) 2270 ThrowConvertInvalidArgumentException(option,argv[i]); 2271 break; 2272 } 2273 if (LocaleCompare("noop",option+1) == 0) 2274 break; 2275 if (LocaleCompare("normalize",option+1) == 0) 2276 break; 2277 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2278 } 2279 case 'o': 2280 { 2281 if (LocaleCompare("opaque",option+1) == 0) 2282 { 2283 i++; 2284 if (i == (ssize_t) argc) 2285 ThrowConvertException(OptionError,"MissingArgument",option); 2286 break; 2287 } 2288 if (LocaleCompare("ordered-dither",option+1) == 0) 2289 { 2290 if (*option == '+') 2291 break; 2292 i++; 2293 if (i == (ssize_t) argc) 2294 ThrowConvertException(OptionError,"MissingArgument",option); 2295 break; 2296 } 2297 if (LocaleCompare("orient",option+1) == 0) 2298 { 2299 ssize_t 2300 orientation; 2301 2302 if (*option == '+') 2303 break; 2304 i++; 2305 if (i == (ssize_t) argc) 2306 ThrowConvertException(OptionError,"MissingArgument",option); 2307 orientation=ParseCommandOption(MagickOrientationOptions, 2308 MagickFalse,argv[i]); 2309 if (orientation < 0) 2310 ThrowConvertException(OptionError,"UnrecognizedImageOrientation", 2311 argv[i]); 2312 break; 2313 } 2314 ThrowConvertException(OptionError,"UnrecognizedOption",argv[i]) 2315 } 2316 case 'p': 2317 { 2318 if (LocaleCompare("page",option+1) == 0) 2319 { 2320 if (*option == '+') 2321 break; 2322 i++; 2323 if (i == (ssize_t) argc) 2324 ThrowConvertException(OptionError,"MissingArgument",option); 2325 break; 2326 } 2327 if (LocaleCompare("paint",option+1) == 0) 2328 { 2329 if (*option == '+') 2330 break; 2331 i++; 2332 if (i == (ssize_t) argc) 2333 ThrowConvertException(OptionError,"MissingArgument",option); 2334 if (IsGeometry(argv[i]) == MagickFalse) 2335 ThrowConvertInvalidArgumentException(option,argv[i]); 2336 break; 2337 } 2338 if (LocaleCompare("perceptible",option+1) == 0) 2339 { 2340 if (*option == '+') 2341 break; 2342 i++; 2343 if (i == (ssize_t) argc) 2344 ThrowConvertException(OptionError,"MissingArgument",option); 2345 if (IsGeometry(argv[i]) == MagickFalse) 2346 ThrowConvertInvalidArgumentException(option,argv[i]); 2347 break; 2348 } 2349 if (LocaleCompare("ping",option+1) == 0) 2350 break; 2351 if (LocaleCompare("pointsize",option+1) == 0) 2352 { 2353 if (*option == '+') 2354 break; 2355 i++; 2356 if (i == (ssize_t) argc) 2357 ThrowConvertException(OptionError,"MissingArgument",option); 2358 if (IsGeometry(argv[i]) == MagickFalse) 2359 ThrowConvertInvalidArgumentException(option,argv[i]); 2360 break; 2361 } 2362 if (LocaleCompare("polaroid",option+1) == 0) 2363 { 2364 if (*option == '+') 2365 break; 2366 i++; 2367 if (i == (ssize_t) argc) 2368 ThrowConvertException(OptionError,"MissingArgument",option); 2369 if (IsGeometry(argv[i]) == MagickFalse) 2370 ThrowConvertInvalidArgumentException(option,argv[i]); 2371 break; 2372 } 2373 if (LocaleCompare("poly",option+1) == 0) 2374 { 2375 if (*option == '+') 2376 break; 2377 i++; 2378 if (i == (ssize_t) argc) 2379 ThrowConvertException(OptionError,"MissingArgument",option); 2380 if (IsGeometry(argv[i]) == MagickFalse) 2381 ThrowConvertInvalidArgumentException(option,argv[i]); 2382 break; 2383 } 2384 if (LocaleCompare("posterize",option+1) == 0) 2385 { 2386 if (*option == '+') 2387 break; 2388 i++; 2389 if (i == (ssize_t) argc) 2390 ThrowConvertException(OptionError,"MissingArgument",option); 2391 if (IsGeometry(argv[i]) == MagickFalse) 2392 ThrowConvertInvalidArgumentException(option,argv[i]); 2393 break; 2394 } 2395 if (LocaleCompare("precision",option+1) == 0) 2396 { 2397 if (*option == '+') 2398 break; 2399 i++; 2400 if (i == (ssize_t) argc) 2401 ThrowConvertException(OptionError,"MissingArgument",option); 2402 if (IsGeometry(argv[i]) == MagickFalse) 2403 ThrowConvertInvalidArgumentException(option,argv[i]); 2404 break; 2405 } 2406 if (LocaleCompare("preview",option+1) == 0) 2407 { 2408 ssize_t 2409 preview; 2410 2411 if (*option == '+') 2412 break; 2413 i++; 2414 if (i == (ssize_t) argc) 2415 ThrowConvertException(OptionError,"MissingArgument",option); 2416 preview=ParseCommandOption(MagickPreviewOptions,MagickFalse, 2417 argv[i]); 2418 if (preview < 0) 2419 ThrowConvertException(OptionError,"UnrecognizedPreviewType", 2420 argv[i]); 2421 break; 2422 } 2423 if (LocaleCompare("print",option+1) == 0) 2424 { 2425 if (*option == '+') 2426 break; 2427 i++; 2428 if (i == (ssize_t) argc) 2429 ThrowConvertException(OptionError,"MissingArgument",option); 2430 break; 2431 } 2432 if (LocaleCompare("process",option+1) == 0) 2433 { 2434 if (*option == '+') 2435 break; 2436 i++; 2437 if (i == (ssize_t) argc) 2438 ThrowConvertException(OptionError,"MissingArgument",option); 2439 break; 2440 } 2441 if (LocaleCompare("profile",option+1) == 0) 2442 { 2443 i++; 2444 if (i == (ssize_t) argc) 2445 ThrowConvertException(OptionError,"MissingArgument",option); 2446 break; 2447 } 2448 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2449 } 2450 case 'q': 2451 { 2452 if (LocaleCompare("quality",option+1) == 0) 2453 { 2454 if (*option == '+') 2455 break; 2456 i++; 2457 if (i == (ssize_t) argc) 2458 ThrowConvertException(OptionError,"MissingArgument",option); 2459 if (IsGeometry(argv[i]) == MagickFalse) 2460 ThrowConvertInvalidArgumentException(option,argv[i]); 2461 break; 2462 } 2463 if (LocaleCompare("quantize",option+1) == 0) 2464 { 2465 ssize_t 2466 colorspace; 2467 2468 if (*option == '+') 2469 break; 2470 i++; 2471 if (i == (ssize_t) argc) 2472 ThrowConvertException(OptionError,"MissingArgument",option); 2473 colorspace=ParseCommandOption(MagickColorspaceOptions, 2474 MagickFalse,argv[i]); 2475 if (colorspace < 0) 2476 ThrowConvertException(OptionError,"UnrecognizedColorspace", 2477 argv[i]); 2478 break; 2479 } 2480 if (LocaleCompare("quiet",option+1) == 0) 2481 break; 2482 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2483 } 2484 case 'r': 2485 { 2486 if (LocaleCompare("rotational-blur",option+1) == 0) 2487 { 2488 i++; 2489 if (i == (ssize_t) argc) 2490 ThrowConvertException(OptionError,"MissingArgument",option); 2491 if (IsGeometry(argv[i]) == MagickFalse) 2492 ThrowConvertInvalidArgumentException(option,argv[i]); 2493 break; 2494 } 2495 if (LocaleCompare("raise",option+1) == 0) 2496 { 2497 i++; 2498 if (i == (ssize_t) argc) 2499 ThrowConvertException(OptionError,"MissingArgument",option); 2500 if (IsGeometry(argv[i]) == MagickFalse) 2501 ThrowConvertInvalidArgumentException(option,argv[i]); 2502 break; 2503 } 2504 if (LocaleCompare("random-threshold",option+1) == 0) 2505 { 2506 if (*option == '+') 2507 break; 2508 i++; 2509 if (i == (ssize_t) argc) 2510 ThrowConvertException(OptionError,"MissingArgument",option); 2511 if (IsGeometry(argv[i]) == MagickFalse) 2512 ThrowConvertInvalidArgumentException(option,argv[i]); 2513 break; 2514 } 2515 if (LocaleCompare("red-primary",option+1) == 0) 2516 { 2517 if (*option == '+') 2518 break; 2519 i++; 2520 if (i == (ssize_t) argc) 2521 ThrowConvertException(OptionError,"MissingArgument",option); 2522 if (IsGeometry(argv[i]) == MagickFalse) 2523 ThrowConvertInvalidArgumentException(option,argv[i]); 2524 break; 2525 } 2526 if (LocaleCompare("regard-warnings",option+1) == 0) 2527 break; 2528 if (LocaleCompare("region",option+1) == 0) 2529 { 2530 if (*option == '+') 2531 break; 2532 i++; 2533 if (i == (ssize_t) argc) 2534 ThrowConvertException(OptionError,"MissingArgument",option); 2535 if (IsGeometry(argv[i]) == MagickFalse) 2536 ThrowConvertInvalidArgumentException(option,argv[i]); 2537 break; 2538 } 2539 if (LocaleCompare("remap",option+1) == 0) 2540 { 2541 if (*option == '+') 2542 break; 2543 i++; 2544 if (i == (ssize_t) argc) 2545 ThrowConvertException(OptionError,"MissingArgument",option); 2546 break; 2547 } 2548 if (LocaleCompare("render",option+1) == 0) 2549 break; 2550 if (LocaleCompare("repage",option+1) == 0) 2551 { 2552 if (*option == '+') 2553 break; 2554 i++; 2555 if (i == (ssize_t) argc) 2556 ThrowConvertException(OptionError,"MissingArgument",option); 2557 if (IsGeometry(argv[i]) == MagickFalse) 2558 ThrowConvertInvalidArgumentException(option,argv[i]); 2559 break; 2560 } 2561 if (LocaleCompare("resample",option+1) == 0) 2562 { 2563 if (*option == '+') 2564 break; 2565 i++; 2566 if (i == (ssize_t) argc) 2567 ThrowConvertException(OptionError,"MissingArgument",option); 2568 if (IsGeometry(argv[i]) == MagickFalse) 2569 ThrowConvertInvalidArgumentException(option,argv[i]); 2570 break; 2571 } 2572 if (LocaleCompare("resize",option+1) == 0) 2573 { 2574 if (*option == '+') 2575 break; 2576 i++; 2577 if (i == (ssize_t) argc) 2578 ThrowConvertException(OptionError,"MissingArgument",option); 2579 if (IsGeometry(argv[i]) == MagickFalse) 2580 ThrowConvertInvalidArgumentException(option,argv[i]); 2581 break; 2582 } 2583 if (LocaleNCompare("respect-parentheses",option+1,17) == 0) 2584 { 2585 respect_parenthesis=(*option == '-') ? MagickTrue : MagickFalse; 2586 break; 2587 } 2588 if (LocaleCompare("reverse",option+1) == 0) 2589 break; 2590 if (LocaleCompare("roll",option+1) == 0) 2591 { 2592 if (*option == '+') 2593 break; 2594 i++; 2595 if (i == (ssize_t) argc) 2596 ThrowConvertException(OptionError,"MissingArgument",option); 2597 if (IsGeometry(argv[i]) == MagickFalse) 2598 ThrowConvertInvalidArgumentException(option,argv[i]); 2599 break; 2600 } 2601 if (LocaleCompare("rotate",option+1) == 0) 2602 { 2603 i++; 2604 if (i == (ssize_t) argc) 2605 ThrowConvertException(OptionError,"MissingArgument",option); 2606 if (IsGeometry(argv[i]) == MagickFalse) 2607 ThrowConvertInvalidArgumentException(option,argv[i]); 2608 break; 2609 } 2610 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2611 } 2612 case 's': 2613 { 2614 if (LocaleCompare("sample",option+1) == 0) 2615 { 2616 if (*option == '+') 2617 break; 2618 i++; 2619 if (i == (ssize_t) argc) 2620 ThrowConvertException(OptionError,"MissingArgument",option); 2621 if (IsGeometry(argv[i]) == MagickFalse) 2622 ThrowConvertInvalidArgumentException(option,argv[i]); 2623 break; 2624 } 2625 if (LocaleCompare("sampling-factor",option+1) == 0) 2626 { 2627 if (*option == '+') 2628 break; 2629 i++; 2630 if (i == (ssize_t) argc) 2631 ThrowConvertException(OptionError,"MissingArgument",option); 2632 if (IsGeometry(argv[i]) == MagickFalse) 2633 ThrowConvertInvalidArgumentException(option,argv[i]); 2634 break; 2635 } 2636 if (LocaleCompare("scale",option+1) == 0) 2637 { 2638 if (*option == '+') 2639 break; 2640 i++; 2641 if (i == (ssize_t) argc) 2642 ThrowConvertException(OptionError,"MissingArgument",option); 2643 if (IsGeometry(argv[i]) == MagickFalse) 2644 ThrowConvertInvalidArgumentException(option,argv[i]); 2645 break; 2646 } 2647 if (LocaleCompare("scene",option+1) == 0) 2648 { 2649 if (*option == '+') 2650 break; 2651 i++; 2652 if (i == (ssize_t) argc) 2653 ThrowConvertException(OptionError,"MissingArgument",option); 2654 if (IsGeometry(argv[i]) == MagickFalse) 2655 ThrowConvertInvalidArgumentException(option,argv[i]); 2656 break; 2657 } 2658 if (LocaleCompare("seed",option+1) == 0) 2659 { 2660 if (*option == '+') 2661 break; 2662 i++; 2663 if (i == (ssize_t) argc) 2664 ThrowConvertException(OptionError,"MissingArgument",option); 2665 if (IsGeometry(argv[i]) == MagickFalse) 2666 ThrowConvertInvalidArgumentException(option,argv[i]); 2667 break; 2668 } 2669 if (LocaleCompare("segment",option+1) == 0) 2670 { 2671 if (*option == '+') 2672 break; 2673 i++; 2674 if (i == (ssize_t) argc) 2675 ThrowConvertException(OptionError,"MissingArgument",option); 2676 if (IsGeometry(argv[i]) == MagickFalse) 2677 ThrowConvertInvalidArgumentException(option,argv[i]); 2678 break; 2679 } 2680 if (LocaleCompare("selective-blur",option+1) == 0) 2681 { 2682 i++; 2683 if (i == (ssize_t) argc) 2684 ThrowConvertException(OptionError,"MissingArgument",option); 2685 if (IsGeometry(argv[i]) == MagickFalse) 2686 ThrowConvertInvalidArgumentException(option,argv[i]); 2687 break; 2688 } 2689 if (LocaleCompare("separate",option+1) == 0) 2690 break; 2691 if (LocaleCompare("sepia-tone",option+1) == 0) 2692 { 2693 if (*option == '+') 2694 break; 2695 i++; 2696 if (i == (ssize_t) argc) 2697 ThrowConvertException(OptionError,"MissingArgument",option); 2698 if (IsGeometry(argv[i]) == MagickFalse) 2699 ThrowConvertInvalidArgumentException(option,argv[i]); 2700 break; 2701 } 2702 if (LocaleCompare("set",option+1) == 0) 2703 { 2704 i++; 2705 if (i == (ssize_t) argc) 2706 ThrowConvertException(OptionError,"MissingArgument",option); 2707 if (*option == '+') 2708 break; 2709 i++; 2710 if (i == (ssize_t) argc) 2711 ThrowConvertException(OptionError,"MissingArgument",option); 2712 break; 2713 } 2714 if (LocaleCompare("shade",option+1) == 0) 2715 { 2716 i++; 2717 if (i == (ssize_t) argc) 2718 ThrowConvertException(OptionError,"MissingArgument",option); 2719 if (IsGeometry(argv[i]) == MagickFalse) 2720 ThrowConvertInvalidArgumentException(option,argv[i]); 2721 break; 2722 } 2723 if (LocaleCompare("shadow",option+1) == 0) 2724 { 2725 if (*option == '+') 2726 break; 2727 i++; 2728 if (i == (ssize_t) argc) 2729 ThrowConvertException(OptionError,"MissingArgument",option); 2730 if (IsGeometry(argv[i]) == MagickFalse) 2731 ThrowConvertInvalidArgumentException(option,argv[i]); 2732 break; 2733 } 2734 if (LocaleCompare("sharpen",option+1) == 0) 2735 { 2736 i++; 2737 if (i == (ssize_t) argc) 2738 ThrowConvertException(OptionError,"MissingArgument",option); 2739 if (IsGeometry(argv[i]) == MagickFalse) 2740 ThrowConvertInvalidArgumentException(option,argv[i]); 2741 break; 2742 } 2743 if (LocaleCompare("shave",option+1) == 0) 2744 { 2745 if (*option == '+') 2746 break; 2747 i++; 2748 if (i == (ssize_t) argc) 2749 ThrowConvertException(OptionError,"MissingArgument",option); 2750 if (IsGeometry(argv[i]) == MagickFalse) 2751 ThrowConvertInvalidArgumentException(option,argv[i]); 2752 break; 2753 } 2754 if (LocaleCompare("shear",option+1) == 0) 2755 { 2756 i++; 2757 if (i == (ssize_t) argc) 2758 ThrowConvertException(OptionError,"MissingArgument",option); 2759 if (IsGeometry(argv[i]) == MagickFalse) 2760 ThrowConvertInvalidArgumentException(option,argv[i]); 2761 break; 2762 } 2763 if (LocaleCompare("sigmoidal-contrast",option+1) == 0) 2764 { 2765 i++; 2766 if (i == (ssize_t) argc) 2767 ThrowConvertException(OptionError,"MissingArgument",option); 2768 if (IsGeometry(argv[i]) == MagickFalse) 2769 ThrowConvertInvalidArgumentException(option,argv[i]); 2770 break; 2771 } 2772 if (LocaleCompare("size",option+1) == 0) 2773 { 2774 if (*option == '+') 2775 break; 2776 i++; 2777 if (i == (ssize_t) argc) 2778 ThrowConvertException(OptionError,"MissingArgument",option); 2779 if (IsGeometry(argv[i]) == MagickFalse) 2780 ThrowConvertInvalidArgumentException(option,argv[i]); 2781 break; 2782 } 2783 if (LocaleCompare("sketch",option+1) == 0) 2784 { 2785 if (*option == '+') 2786 break; 2787 i++; 2788 if (i == (ssize_t) argc) 2789 ThrowConvertException(OptionError,"MissingArgument",option); 2790 if (IsGeometry(argv[i]) == MagickFalse) 2791 ThrowConvertInvalidArgumentException(option,argv[i]); 2792 break; 2793 } 2794 if (LocaleCompare("smush",option+1) == 0) 2795 { 2796 i++; 2797 if (i == (ssize_t) argc) 2798 ThrowConvertException(OptionError,"MissingArgument",option); 2799 if (IsGeometry(argv[i]) == MagickFalse) 2800 ThrowConvertInvalidArgumentException(option,argv[i]); 2801 break; 2802 } 2803 if (LocaleCompare("solarize",option+1) == 0) 2804 { 2805 if (*option == '+') 2806 break; 2807 i++; 2808 if (i == (ssize_t) argc) 2809 ThrowConvertException(OptionError,"MissingArgument",option); 2810 if (IsGeometry(argv[i]) == MagickFalse) 2811 ThrowConvertInvalidArgumentException(option,argv[i]); 2812 break; 2813 } 2814 if (LocaleCompare("sparse-color",option+1) == 0) 2815 { 2816 ssize_t 2817 op; 2818 2819 i++; 2820 if (i == (ssize_t) argc) 2821 ThrowConvertException(OptionError,"MissingArgument",option); 2822 op=ParseCommandOption(MagickSparseColorOptions,MagickFalse,argv[i]); 2823 if (op < 0) 2824 ThrowConvertException(OptionError,"UnrecognizedSparseColorMethod", 2825 argv[i]); 2826 i++; 2827 if (i == (ssize_t) argc) 2828 ThrowConvertException(OptionError,"MissingArgument",option); 2829 break; 2830 } 2831 if (LocaleCompare("splice",option+1) == 0) 2832 { 2833 if (*option == '+') 2834 break; 2835 i++; 2836 if (i == (ssize_t) argc) 2837 ThrowConvertException(OptionError,"MissingArgument",option); 2838 if (IsGeometry(argv[i]) == MagickFalse) 2839 ThrowConvertInvalidArgumentException(option,argv[i]); 2840 break; 2841 } 2842 if (LocaleCompare("spread",option+1) == 0) 2843 { 2844 if (*option == '+') 2845 break; 2846 i++; 2847 if ((i == (ssize_t) argc) || 2848 (IsGeometry(argv[i]) == MagickFalse)) 2849 ThrowConvertException(OptionError,"MissingArgument",option); 2850 break; 2851 } 2852 if (LocaleCompare("statistic",option+1) == 0) 2853 { 2854 ssize_t 2855 op; 2856 2857 if (*option == '+') 2858 break; 2859 i++; 2860 if (i == (ssize_t) argc) 2861 ThrowConvertException(OptionError,"MissingArgument",option); 2862 op=ParseCommandOption(MagickStatisticOptions,MagickFalse,argv[i]); 2863 if (op < 0) 2864 ThrowConvertException(OptionError,"UnrecognizedStatisticType", 2865 argv[i]); 2866 i++; 2867 if (i == (ssize_t) argc) 2868 ThrowConvertException(OptionError,"MissingArgument",option); 2869 if (IsGeometry(argv[i]) == MagickFalse) 2870 ThrowConvertInvalidArgumentException(option,argv[i]); 2871 break; 2872 } 2873 if (LocaleCompare("stretch",option+1) == 0) 2874 { 2875 ssize_t 2876 stretch; 2877 2878 if (*option == '+') 2879 break; 2880 i++; 2881 if (i == (ssize_t) argc) 2882 ThrowConvertException(OptionError,"MissingArgument",option); 2883 stretch=ParseCommandOption(MagickStretchOptions,MagickFalse, 2884 argv[i]); 2885 if (stretch < 0) 2886 ThrowConvertException(OptionError,"UnrecognizedStyleType", 2887 argv[i]); 2888 break; 2889 } 2890 if (LocaleCompare("strip",option+1) == 0) 2891 break; 2892 if (LocaleCompare("stroke",option+1) == 0) 2893 { 2894 if (*option == '+') 2895 break; 2896 i++; 2897 if (i == (ssize_t) argc) 2898 ThrowConvertException(OptionError,"MissingArgument",option); 2899 break; 2900 } 2901 if (LocaleCompare("strokewidth",option+1) == 0) 2902 { 2903 if (*option == '+') 2904 break; 2905 i++; 2906 if (i == (ssize_t) argc) 2907 ThrowConvertException(OptionError,"MissingArgument",option); 2908 if (IsGeometry(argv[i]) == MagickFalse) 2909 ThrowConvertInvalidArgumentException(option,argv[i]); 2910 break; 2911 } 2912 if (LocaleCompare("style",option+1) == 0) 2913 { 2914 ssize_t 2915 style; 2916 2917 if (*option == '+') 2918 break; 2919 i++; 2920 if (i == (ssize_t) argc) 2921 ThrowConvertException(OptionError,"MissingArgument",option); 2922 style=ParseCommandOption(MagickStyleOptions,MagickFalse,argv[i]); 2923 if (style < 0) 2924 ThrowConvertException(OptionError,"UnrecognizedStyleType", 2925 argv[i]); 2926 break; 2927 } 2928 if (LocaleCompare("support",option+1) == 0) 2929 { 2930 i++; /* deprecated */ 2931 break; 2932 } 2933 if (LocaleCompare("swap",option+1) == 0) 2934 { 2935 if (*option == '+') 2936 break; 2937 i++; 2938 if (i == (ssize_t) argc) 2939 ThrowConvertException(OptionError,"MissingArgument",option); 2940 if (IsGeometry(argv[i]) == MagickFalse) 2941 ThrowConvertInvalidArgumentException(option,argv[i]); 2942 break; 2943 } 2944 if (LocaleCompare("swirl",option+1) == 0) 2945 { 2946 if (*option == '+') 2947 break; 2948 i++; 2949 if (i == (ssize_t) argc) 2950 ThrowConvertException(OptionError,"MissingArgument",option); 2951 if (IsGeometry(argv[i]) == MagickFalse) 2952 ThrowConvertInvalidArgumentException(option,argv[i]); 2953 break; 2954 } 2955 if (LocaleCompare("synchronize",option+1) == 0) 2956 break; 2957 ThrowConvertException(OptionError,"UnrecognizedOption",option) 2958 } 2959 case 't': 2960 { 2961 if (LocaleCompare("taint",option+1) == 0) 2962 break; 2963 if (LocaleCompare("texture",option+1) == 0) 2964 { 2965 if (*option == '+') 2966 break; 2967 i++; 2968 if (i == (ssize_t) argc) 2969 ThrowConvertException(OptionError,"MissingArgument",option); 2970 break; 2971 } 2972 if (LocaleCompare("threshold",option+1) == 0) 2973 { 2974 if (*option == '+') 2975 break; 2976 i++; 2977 if (i == (ssize_t) argc) 2978 ThrowConvertException(OptionError,"MissingArgument",option); 2979 if (IsGeometry(argv[i]) == MagickFalse) 2980 ThrowConvertInvalidArgumentException(option,argv[i]); 2981 break; 2982 } 2983 if (LocaleCompare("thumbnail",option+1) == 0) 2984 { 2985 if (*option == '+') 2986 break; 2987 i++; 2988 if (i == (ssize_t) argc) 2989 ThrowConvertException(OptionError,"MissingArgument",option); 2990 if (IsGeometry(argv[i]) == MagickFalse) 2991 ThrowConvertInvalidArgumentException(option,argv[i]); 2992 break; 2993 } 2994 if (LocaleCompare("tile",option+1) == 0) 2995 { 2996 if (*option == '+') 2997 break; 2998 i++; 2999 if (i == (ssize_t) argc) 3000 ThrowConvertException(OptionError,"MissingArgument",option); 3001 break; 3002 } 3003 if (LocaleCompare("tile-offset",option+1) == 0) 3004 { 3005 if (*option == '+') 3006 break; 3007 i++; 3008 if (i == (ssize_t) argc) 3009 ThrowConvertException(OptionError,"MissingArgument",option); 3010 if (IsGeometry(argv[i]) == MagickFalse) 3011 ThrowConvertInvalidArgumentException(option,argv[i]); 3012 break; 3013 } 3014 if (LocaleCompare("tint",option+1) == 0) 3015 { 3016 if (*option == '+') 3017 break; 3018 i++; 3019 if (i == (ssize_t) argc) 3020 ThrowConvertException(OptionError,"MissingArgument",option); 3021 if (IsGeometry(argv[i]) == MagickFalse) 3022 ThrowConvertInvalidArgumentException(option,argv[i]); 3023 break; 3024 } 3025 if (LocaleCompare("transform",option+1) == 0) 3026 break; 3027 if (LocaleCompare("transparent",option+1) == 0) 3028 { 3029 i++; 3030 if (i == (ssize_t) argc) 3031 ThrowConvertException(OptionError,"MissingArgument",option); 3032 break; 3033 } 3034 if (LocaleCompare("transparent-color",option+1) == 0) 3035 { 3036 if (*option == '+') 3037 break; 3038 i++; 3039 if (i == (ssize_t) argc) 3040 ThrowConvertException(OptionError,"MissingArgument",option); 3041 break; 3042 } 3043 if (LocaleCompare("transpose",option+1) == 0) 3044 break; 3045 if (LocaleCompare("transverse",option+1) == 0) 3046 break; 3047 if (LocaleCompare("treedepth",option+1) == 0) 3048 { 3049 if (*option == '+') 3050 break; 3051 i++; 3052 if (i == (ssize_t) argc) 3053 ThrowConvertException(OptionError,"MissingArgument",option); 3054 if (IsGeometry(argv[i]) == MagickFalse) 3055 ThrowConvertInvalidArgumentException(option,argv[i]); 3056 break; 3057 } 3058 if (LocaleCompare("trim",option+1) == 0) 3059 break; 3060 if (LocaleCompare("type",option+1) == 0) 3061 { 3062 ssize_t 3063 type; 3064 3065 if (*option == '+') 3066 break; 3067 i++; 3068 if (i == (ssize_t) argc) 3069 ThrowConvertException(OptionError,"MissingArgument",option); 3070 type=ParseCommandOption(MagickTypeOptions,MagickFalse,argv[i]); 3071 if (type < 0) 3072 ThrowConvertException(OptionError,"UnrecognizedImageType", 3073 argv[i]); 3074 break; 3075 } 3076 ThrowConvertException(OptionError,"UnrecognizedOption",option) 3077 } 3078 case 'u': 3079 { 3080 if (LocaleCompare("undercolor",option+1) == 0) 3081 { 3082 if (*option == '+') 3083 break; 3084 i++; 3085 if (i == (ssize_t) argc) 3086 ThrowConvertException(OptionError,"MissingArgument",option); 3087 break; 3088 } 3089 if (LocaleCompare("unique-colors",option+1) == 0) 3090 break; 3091 if (LocaleCompare("units",option+1) == 0) 3092 { 3093 ssize_t 3094 units; 3095 3096 if (*option == '+') 3097 break; 3098 i++; 3099 if (i == (ssize_t) argc) 3100 ThrowConvertException(OptionError,"MissingArgument",option); 3101 units=ParseCommandOption(MagickResolutionOptions,MagickFalse, 3102 argv[i]); 3103 if (units < 0) 3104 ThrowConvertException(OptionError,"UnrecognizedUnitsType", 3105 argv[i]); 3106 break; 3107 } 3108 if (LocaleCompare("unsharp",option+1) == 0) 3109 { 3110 if (*option == '+') 3111 break; 3112 i++; 3113 if (i == (ssize_t) argc) 3114 ThrowConvertException(OptionError,"MissingArgument",option); 3115 if (IsGeometry(argv[i]) == MagickFalse) 3116 ThrowConvertInvalidArgumentException(option,argv[i]); 3117 break; 3118 } 3119 ThrowConvertException(OptionError,"UnrecognizedOption",option) 3120 } 3121 case 'v': 3122 { 3123 if (LocaleCompare("verbose",option+1) == 0) 3124 break; 3125 if ((LocaleCompare("version",option+1) == 0) || 3126 (LocaleCompare("-version",option+1) == 0)) 3127 { 3128 ListMagickVersion(stdout); 3129 break; 3130 } 3131 if (LocaleCompare("vignette",option+1) == 0) 3132 { 3133 if (*option == '+') 3134 break; 3135 i++; 3136 if (i == (ssize_t) argc) 3137 ThrowConvertException(OptionError,"MissingArgument",option); 3138 if (IsGeometry(argv[i]) == MagickFalse) 3139 ThrowConvertInvalidArgumentException(option,argv[i]); 3140 break; 3141 } 3142 if (LocaleCompare("virtual-pixel",option+1) == 0) 3143 { 3144 ssize_t 3145 method; 3146 3147 if (*option == '+') 3148 break; 3149 i++; 3150 if (i == (ssize_t) argc) 3151 ThrowConvertException(OptionError,"MissingArgument",option); 3152 method=ParseCommandOption(MagickVirtualPixelOptions,MagickFalse, 3153 argv[i]); 3154 if (method < 0) 3155 ThrowConvertException(OptionError, 3156 "UnrecognizedVirtualPixelMethod",argv[i]); 3157 break; 3158 } 3159 ThrowConvertException(OptionError,"UnrecognizedOption",option) 3160 } 3161 case 'w': 3162 { 3163 if (LocaleCompare("wave",option+1) == 0) 3164 { 3165 i++; 3166 if (i == (ssize_t) argc) 3167 ThrowConvertException(OptionError,"MissingArgument",option); 3168 if (IsGeometry(argv[i]) == MagickFalse) 3169 ThrowConvertInvalidArgumentException(option,argv[i]); 3170 break; 3171 } 3172 if (LocaleCompare("wavelet-denoise",option+1) == 0) 3173 { 3174 i++; 3175 if (i == (ssize_t) argc) 3176 ThrowConvertException(OptionError,"MissingArgument",option); 3177 if (IsGeometry(argv[i]) == MagickFalse) 3178 ThrowConvertInvalidArgumentException(option,argv[i]); 3179 break; 3180 } 3181 if (LocaleCompare("weight",option+1) == 0) 3182 { 3183 if (*option == '+') 3184 break; 3185 i++; 3186 if (i == (ssize_t) argc) 3187 ThrowConvertException(OptionError,"MissingArgument",option); 3188 break; 3189 } 3190 if (LocaleCompare("white-point",option+1) == 0) 3191 { 3192 if (*option == '+') 3193 break; 3194 i++; 3195 if (i == (ssize_t) argc) 3196 ThrowConvertException(OptionError,"MissingArgument",option); 3197 if (IsGeometry(argv[i]) == MagickFalse) 3198 ThrowConvertInvalidArgumentException(option,argv[i]); 3199 break; 3200 } 3201 if (LocaleCompare("white-threshold",option+1) == 0) 3202 { 3203 if (*option == '+') 3204 break; 3205 i++; 3206 if (i == (ssize_t) argc) 3207 ThrowConvertException(OptionError,"MissingArgument",option); 3208 if (IsGeometry(argv[i]) == MagickFalse) 3209 ThrowConvertInvalidArgumentException(option,argv[i]); 3210 break; 3211 } 3212 if (LocaleCompare("write",option+1) == 0) 3213 { 3214 i++; 3215 if (i == (ssize_t) argc) 3216 ThrowConvertException(OptionError,"MissingArgument",option); 3217 break; 3218 } 3219 ThrowConvertException(OptionError,"UnrecognizedOption",option) 3220 } 3221 case '?': 3222 break; 3223 default: 3224 ThrowConvertException(OptionError,"UnrecognizedOption",option) 3225 } 3226 fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) & 3227 FireOptionFlag) == 0 ? MagickFalse : MagickTrue; 3228 if (fire != MagickFalse) 3229 FireImageStack(MagickTrue,MagickTrue,MagickTrue); 3230 } 3231 if (k != 0) 3232 ThrowConvertException(OptionError,"UnbalancedParenthesis",argv[i]); 3233 if (i-- != (ssize_t) (argc-1)) 3234 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]); 3235 FinalizeImageSettings(image_info,image,MagickTrue); 3236 if (image == (Image *) NULL) 3237 ThrowConvertException(OptionError,"NoImagesDefined",argv[argc-1]); 3238 if (IsCommandOption(argv[argc-1])) 3239 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]); 3240 if (LocaleCompare(" ",argv[argc-1])==0) /* common line continuation error */ 3241 ThrowConvertException(OptionError,"MissingAnImageFilename",argv[argc-1]); 3242 status&=WriteImages(image_info,image,argv[argc-1],exception); 3243 if (metadata != (char **) NULL) 3244 { 3245 char 3246 *text; 3247 3248 text=InterpretImageProperties(image_info,image,format,exception); 3249 if (text == (char *) NULL) 3250 ThrowConvertException(ResourceLimitError,"MemoryAllocationFailed", 3251 GetExceptionMessage(errno)); 3252 (void) ConcatenateString(&(*metadata),text); 3253 text=DestroyString(text); 3254 } 3255 DestroyConvert(); 3256 return(status != 0 ? MagickTrue : MagickFalse); 3257 } 3258