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