00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #include "wand/studio.h"
00045 #include "wand/MagickWand.h"
00046 #include "wand/mogrify-private.h"
00047 #include "magick/display-private.h"
00048 #include "magick/string-private.h"
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094 static MagickBooleanType DisplayUsage(void)
00095 {
00096 const char
00097 **p;
00098
00099 static const char
00100 *buttons[]=
00101 {
00102 "1 press to map or unmap the Command widget",
00103 "2 press and drag to magnify a region of an image",
00104 "3 press to load an image from a visual image directory",
00105 (char *) NULL
00106 },
00107 *miscellaneous[]=
00108 {
00109 "-debug events display copious debugging information",
00110 "-help print program options",
00111 "-list type print a list of supported option arguments",
00112 "-log format format of debugging information",
00113 "-version print version information",
00114 (char *) NULL
00115 },
00116 *operators[]=
00117 {
00118 "-auto-orient automagically orient image",
00119 "-border geometry surround image with a border of color",
00120 "-clip clip along the first path from the 8BIM profile",
00121 "-clip-path id clip along a named path from the 8BIM profile",
00122 "-colors value preferred number of colors in the image",
00123 "-contrast enhance or reduce the image contrast",
00124 "-crop geometry preferred size and location of the cropped image",
00125 "-decipher filename convert cipher pixels to plain pixels",
00126 "-deskew threshold straighten an image",
00127 "-despeckle reduce the speckles within an image",
00128 "-edge factor apply a filter to detect edges in the image",
00129 "-enhance apply a digital filter to enhance a noisy image",
00130 "-equalize perform histogram equalization to an image",
00131 "-extract geometry extract area from image",
00132 "-flip flip image in the vertical direction",
00133 "-flop flop image in the horizontal direction",
00134 "-frame geometry surround image with an ornamental border",
00135 "-fuzz distance colors within this distance are considered equal",
00136 "-gamma value level of gamma correction",
00137 "-monochrome transform image to black and white",
00138 "-negate replace every pixel with its complementary color",
00139 "-normalize transform image to span the full range of colors",
00140 "-raise value lighten/darken image edges to create a 3-D effect",
00141 "-resample geometry change the resolution of an image",
00142 "-resize geometry resize the image",
00143 "-roll geometry roll an image vertically or horizontally",
00144 "-rotate degrees apply Paeth rotation to the image",
00145 "-sample geometry scale image with pixel sampling",
00146 "-segment value segment an image",
00147 "-sharpen geometry sharpen the image",
00148 "-strip strip image of all profiles and comments",
00149 "-threshold value threshold the image",
00150 "-thumbnail geometry create a thumbnail of the image",
00151 "-trim trim image edges",
00152 (char *) NULL
00153 },
00154 *settings[]=
00155 {
00156 "-alpha option on, activate, off, deactivate, set, opaque, copy",
00157 " transparent, extract, background, or shape",
00158 "-antialias remove pixel-aliasing",
00159 "-authenticate password",
00160 " decipher image with this password",
00161 "-backdrop display image centered on a backdrop",
00162 "-channel type apply option to select image channels",
00163 "-colormap type Shared or Private",
00164 "-colorspace type alternate image colorspace",
00165 "-comment string annotate image with comment",
00166 "-compress type type of pixel compression when writing the image",
00167 "-define format:option",
00168 " define one or more image format options",
00169 "-delay value display the next image after pausing",
00170 "-density geometry horizontal and vertical density of the image",
00171 "-depth value image depth",
00172 "-display server display image to this X server",
00173 "-dispose method layer disposal method",
00174 "-dither method apply error diffusion to image",
00175 "-endian type endianness (MSB or LSB) of the image",
00176 "-filter type use this filter when resizing an image",
00177 "-format string output formatted image characteristics",
00178 "-geometry geometry preferred size and location of the Image window",
00179 "-gravity type horizontal and vertical backdrop placement",
00180 "-identify identify the format and characteristics of the image",
00181 "-immutable displayed image cannot be modified",
00182 "-interlace type type of image interlacing scheme",
00183 "-interpolate method pixel color interpolation method",
00184 "-label string assign a label to an image",
00185 "-limit type value pixel cache resource limit",
00186 "-loop iterations loop images then exit",
00187 "-map type display image using this Standard Colormap",
00188 "-monitor monitor progress",
00189 "-page geometry size and location of an image canvas",
00190 "-profile filename add, delete, or apply an image profile",
00191 "-quality value JPEG/MIFF/PNG compression level",
00192 "-quantize colorspace reduce colors in this colorspace",
00193 "-quiet suppress all warning messages",
00194 "-regard-warnings pay attention to warning messages",
00195 "-remote command execute a command in an remote display process",
00196 "-repage geometry size and location of an image canvas (operator)",
00197 "-respect-parentheses settings remain in effect until parenthesis boundary",
00198 "-sampling-factor geometry",
00199 " horizontal and vertical sampling factor",
00200 "-seed value seed a new sequence of pseudo-random numbers",
00201 "-set property value set an image property",
00202 "-size geometry width and height of image",
00203 "-texture filename name of texture to tile onto the image background",
00204 "-transparent-color color",
00205 " transparent color",
00206 "-treedepth value color tree depth",
00207 "-update seconds detect when image file is modified and redisplay",
00208 "-verbose print detailed information about the image",
00209 "-visual type display image using this visual type",
00210 "-virtual-pixel method",
00211 " virtual pixel access method",
00212 "-window id display image to background of this window",
00213 "-window-group id exit program when this window id is destroyed",
00214 "-write filename write image to a file",
00215 (char *) NULL
00216 },
00217 *sequence_operators[]=
00218 {
00219 "-coalesce merge a sequence of images",
00220 "-flatten flatten a sequence of images",
00221 (char *) NULL
00222 };
00223
00224 (void) printf("Version: %s\n",GetMagickVersion((unsigned long *) NULL));
00225 (void) printf("Copyright: %s\n",GetMagickCopyright());
00226 (void) printf("Features: %s\n\n",GetMagickFeatures());
00227 (void) printf("Usage: %s [options ...] file [ [options ...] file ...]\n",
00228 GetClientName());
00229 (void) printf("\nImage Settings:\n");
00230 for (p=settings; *p != (char *) NULL; p++)
00231 (void) printf(" %s\n",*p);
00232 (void) printf("\nImage Operators:\n");
00233 for (p=operators; *p != (char *) NULL; p++)
00234 (void) printf(" %s\n",*p);
00235 (void) printf("\nImage Sequence Operators:\n");
00236 for (p=sequence_operators; *p != (char *) NULL; p++)
00237 (void) printf(" %s\n",*p);
00238 (void) printf("\nMiscellaneous Options:\n");
00239 for (p=miscellaneous; *p != (char *) NULL; p++)
00240 (void) printf(" %s\n",*p);
00241 (void) printf(
00242 "\nIn addition to those listed above, you can specify these standard X\n");
00243 (void) printf(
00244 "resources as command line options: -background, -bordercolor,\n");
00245 (void) printf(
00246 "-borderwidth, -font, -foreground, -iconGeometry, -iconic, -mattecolor,\n");
00247 (void) printf("-name, -shared-memory, -usePixmap, or -title.\n");
00248 (void) printf(
00249 "\nBy default, the image format of `file' is determined by its magic\n");
00250 (void) printf(
00251 "number. To specify a particular image format, precede the filename\n");
00252 (void) printf(
00253 "with an image format name and a colon (i.e. ps:image) or specify the\n");
00254 (void) printf(
00255 "image type as the filename suffix (i.e. image.ps). Specify 'file' as\n");
00256 (void) printf("'-' for standard input or output.\n");
00257 (void) printf("\nButtons: \n");
00258 for (p=buttons; *p != (char *) NULL; p++)
00259 (void) printf(" %s\n",*p);
00260 return(MagickFalse);
00261 }
00262
00263 WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info,
00264 int argc,char **argv,char **wand_unused(metadata),ExceptionInfo *exception)
00265 {
00266 #if defined(MAGICKCORE_X11_DELEGATE)
00267 #define DestroyDisplay() \
00268 { \
00269 if ((state & ExitState) == 0) \
00270 DestroyXResources(); \
00271 if (display != (Display *) NULL) \
00272 { \
00273 XCloseDisplay(display); \
00274 display=(Display *) NULL; \
00275 } \
00276 XDestroyResourceInfo(&resource_info); \
00277 DestroyImageStack(); \
00278 if (image_marker != (unsigned long *) NULL) \
00279 image_marker=(unsigned long *) RelinquishMagickMemory(image_marker); \
00280 for (i=0; i < (long) argc; i++) \
00281 argv[i]=DestroyString(argv[i]); \
00282 argv=(char **) RelinquishMagickMemory(argv); \
00283 }
00284 #define ThrowDisplayException(asperity,tag,option) \
00285 { \
00286 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
00287 option); \
00288 DestroyDisplay(); \
00289 return(MagickFalse); \
00290 }
00291 #define ThrowDisplayInvalidArgumentException(option,argument) \
00292 { \
00293 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
00294 "InvalidArgument","`%s': %s",option,argument); \
00295 DestroyDisplay(); \
00296 return(MagickFalse); \
00297 }
00298
00299 char
00300 *resource_value,
00301 *server_name;
00302
00303 const char
00304 *option;
00305
00306 Display
00307 *display;
00308
00309 Image
00310 *image;
00311
00312 ImageStack
00313 image_stack[MaxImageStackDepth+1];
00314
00315 long
00316 image_number,
00317 iteration,
00318 j,
00319 k,
00320 l;
00321
00322 MagickBooleanType
00323 fire;
00324
00325 MagickStatusType
00326 pend,
00327 status;
00328
00329 QuantizeInfo
00330 *quantize_info;
00331
00332 register long
00333 i;
00334
00335 unsigned long
00336 *image_marker,
00337 iterations,
00338 last_image,
00339 state;
00340
00341 XResourceInfo
00342 resource_info;
00343
00344 XrmDatabase
00345 resource_database;
00346
00347
00348
00349
00350 assert(image_info != (ImageInfo *) NULL);
00351 assert(image_info->signature == MagickSignature);
00352 if (image_info->debug != MagickFalse)
00353 (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
00354 assert(exception != (ExceptionInfo *) NULL);
00355 if (argc == 2)
00356 {
00357 option=argv[1];
00358 if ((LocaleCompare("version",option+1) == 0) ||
00359 (LocaleCompare("-version",option+1) == 0))
00360 {
00361 (void) fprintf(stdout,"Version: %s\n",
00362 GetMagickVersion((unsigned long *) NULL));
00363 (void) fprintf(stdout,"Copyright: %s\n",GetMagickCopyright());
00364 (void) fprintf(stdout,"Features: %s\n\n",GetMagickFeatures());
00365 return(MagickFalse);
00366 }
00367 }
00368 SetNotifyHandlers;
00369 display=(Display *) NULL;
00370 j=1;
00371 k=0;
00372 image_marker=(unsigned long *) NULL;
00373 image_number=0;
00374 last_image=0;
00375 NewImageStack();
00376 option=(char *) NULL;
00377 pend=MagickFalse;
00378 resource_database=(XrmDatabase) NULL;
00379 (void) ResetMagickMemory(&resource_info,0,sizeof(resource_info));
00380 server_name=(char *) NULL;
00381 state=0;
00382 status=MagickTrue;
00383 ReadCommandlLine(argc,&argv);
00384 status=ExpandFilenames(&argc,&argv);
00385 if (status == MagickFalse)
00386 ThrowDisplayException(ResourceLimitError,"MemoryAllocationFailed",
00387 GetExceptionMessage(errno));
00388 image_marker=(unsigned long *) AcquireQuantumMemory((size_t) argc+1UL,
00389 sizeof(*image_marker));
00390 if (image_marker == (unsigned long *) NULL)
00391 ThrowDisplayException(ResourceLimitError,"MemoryAllocationFailed",
00392 GetExceptionMessage(errno));
00393 for (i=0; i <= argc; i++)
00394 image_marker[i]=(unsigned long) argc;
00395
00396
00397
00398 for (i=1; i < (long) argc; i++)
00399 {
00400
00401
00402
00403 option=argv[i];
00404 if (LocaleCompare("display",option+1) == 0)
00405 {
00406
00407
00408
00409 i++;
00410 if (i == (long) argc)
00411 ThrowDisplayException(OptionError,"MissingArgument",option);
00412 server_name=argv[i];
00413 }
00414 if ((LocaleCompare("help",option+1) == 0) ||
00415 (LocaleCompare("-help",option+1) == 0))
00416 return(DisplayUsage());
00417 }
00418
00419
00420
00421 display=XOpenDisplay(server_name);
00422 if (display == (Display *) NULL)
00423 ThrowDisplayException(XServerError,"UnableToOpenXServer",
00424 XDisplayName(server_name));
00425 (void) XSetErrorHandler(XError);
00426 resource_database=XGetResourceDatabase(display,GetClientName());
00427 XGetResourceInfo(image_info,resource_database,GetClientName(),
00428 &resource_info);
00429 quantize_info=resource_info.quantize_info;
00430 image_info->density=XGetResourceInstance(resource_database,GetClientName(),
00431 "density",(char *) NULL);
00432 if (image_info->density == (char *) NULL)
00433 image_info->density=XGetScreenDensity(display);
00434 resource_value=XGetResourceInstance(resource_database,GetClientName(),
00435 "interlace","none");
00436 image_info->interlace=(InterlaceType)
00437 ParseMagickOption(MagickInterlaceOptions,MagickFalse,resource_value);
00438 image_info->page=XGetResourceInstance(resource_database,GetClientName(),
00439 "pageGeometry",(char *) NULL);
00440 resource_value=XGetResourceInstance(resource_database,GetClientName(),
00441 "quality","75");
00442 image_info->quality=StringToUnsignedLong(resource_value);
00443 resource_value=XGetResourceInstance(resource_database,GetClientName(),
00444 "verbose","False");
00445 image_info->verbose=IsMagickTrue(resource_value);
00446 resource_value=XGetResourceInstance(resource_database,GetClientName(),
00447 "dither","True");
00448 quantize_info->dither=IsMagickTrue(resource_value);
00449
00450
00451
00452 iteration=0;
00453 for (i=1; ((i <= (long) argc) && ((state & ExitState) == 0)); i++)
00454 {
00455 if (i < (long) argc)
00456 option=argv[i];
00457 else
00458 if (image != (Image *) NULL)
00459 break;
00460 else
00461 if (isatty(STDIN_FILENO) != MagickFalse)
00462 option="logo:";
00463 else
00464 {
00465 int
00466 c;
00467
00468 c=getc(stdin);
00469 if (c == EOF)
00470 break;
00471 else
00472 {
00473 c=ungetc(c,stdin);
00474 option="-";
00475 }
00476 }
00477 if (LocaleCompare(option,"(") == 0)
00478 {
00479 FireImageStack(MagickFalse,MagickTrue,pend);
00480 if (k == MaxImageStackDepth)
00481 ThrowDisplayException(OptionError,"ParenthesisNestedTooDeeply",
00482 option);
00483 PushImageStack();
00484 continue;
00485 }
00486 if (LocaleCompare(option,")") == 0)
00487 {
00488 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
00489 if (k == 0)
00490 ThrowDisplayException(OptionError,"UnableToParseExpression",option);
00491 PopImageStack();
00492 continue;
00493 }
00494 if (IsMagickOption(option) == MagickFalse)
00495 {
00496 const char
00497 *filename;
00498
00499 Image
00500 *images;
00501
00502
00503
00504
00505 FireImageStack(MagickFalse,MagickFalse,pend);
00506 filename=option;
00507 if ((LocaleCompare(filename,"--") == 0) && (i < (argc-1)))
00508 {
00509 option=argv[++i];
00510 filename=option;
00511 }
00512 (void) CopyMagickString(image_info->filename,filename,MaxTextExtent);
00513 images=ReadImage(image_info,exception);
00514 CatchException(exception);
00515 status&=(images != (Image *) NULL) &&
00516 (exception->severity < ErrorException);
00517 if (images == (Image *) NULL)
00518 continue;
00519 AppendImageStack(images);
00520 FinalizeImageSettings(image_info,image,MagickFalse);
00521 iterations=0;
00522 if (i == (argc-1))
00523 iterations=image->iterations;
00524 do
00525 {
00526
00527
00528
00529 resource_info.quantum=1;
00530 if (resource_info.window_id != (char *) NULL)
00531 {
00532
00533
00534
00535 status=XDisplayBackgroundImage(display,&resource_info,image);
00536 if (status != MagickFalse)
00537 {
00538 state|=RetainColorsState;
00539 status=MagickFalse;
00540 }
00541 }
00542 else
00543 do
00544 {
00545 Image
00546 *nexus;
00547
00548
00549
00550
00551 nexus=XDisplayImage(display,&resource_info,argv,argc,&image,
00552 &state);
00553 status&=nexus != (Image *) NULL;
00554 if (nexus == (Image *) NULL)
00555 break;
00556 while ((nexus != (Image *) NULL) && ((state & ExitState) == 0))
00557 {
00558 Image
00559 *next;
00560
00561 if (nexus->montage != (char *) NULL)
00562 {
00563
00564
00565
00566 RemoveAllImageStack()
00567 image=nexus;
00568 break;
00569 }
00570 next=XDisplayImage(display,&resource_info,argv,argc,&nexus,
00571 &state);
00572 if ((next == (Image *) NULL) &&
00573 (GetNextImageInList(nexus) != (Image *) NULL))
00574 {
00575 RemoveAllImageStack()
00576 image=GetNextImageInList(nexus);
00577 nexus=NewImageList();
00578 }
00579 else
00580 {
00581 if (nexus != image)
00582 nexus=DestroyImageList(nexus);
00583 nexus=next;
00584 }
00585 }
00586 } while ((state & ExitState) == 0);
00587 if (resource_info.write_filename != (char *) NULL)
00588 {
00589
00590
00591
00592 (void) CopyMagickString(image->filename,
00593 resource_info.write_filename,MaxTextExtent);
00594 (void) SetImageInfo(image_info,1,&image->exception);
00595 status&=WriteImage(image_info,image);
00596 GetImageException(image,exception);
00597 }
00598
00599
00600
00601 if ((state & FormerImageState) != 0)
00602 for (l=0; l < resource_info.quantum; l++)
00603 {
00604 image=GetPreviousImageInList(image);
00605 if (image == (Image *) NULL)
00606 break;
00607 }
00608 else
00609 for (l=0; l < resource_info.quantum; l++)
00610 {
00611 image=GetNextImageInList(image);
00612 if (image == (Image *) NULL)
00613 break;
00614 }
00615 } while ((image != (Image *) NULL) && ((state & ExitState) == 0));
00616
00617
00618
00619 SetImageStack(image);
00620 RemoveAllImageStack();
00621 if ((state & FormerImageState) == 0)
00622 {
00623 last_image=(unsigned long) image_number;
00624 image_marker[i]=(unsigned long) image_number++;
00625 }
00626 else
00627 {
00628
00629
00630
00631 for (i--; i > 0; i--)
00632 if (image_marker[i] == (unsigned long) (image_number-2))
00633 break;
00634 image_number--;
00635 }
00636 if ((i == (long) (argc-1)) && ((state & ExitState) == 0))
00637 i=0;
00638 if ((state & ExitState) != 0)
00639 break;
00640
00641
00642
00643 if (image_number < 0)
00644 {
00645 if ((state & FormerImageState) != 0)
00646 {
00647
00648 for (i=1; i < (argc-2); i++)
00649 if (last_image == image_marker[i])
00650 break;
00651 image_number=(long) image_marker[i]+1;
00652 }
00653 continue;
00654 }
00655 if (resource_info.window_id != (char *) NULL)
00656 state|=ExitState;
00657 if ((iterations != 0) && (++iteration == (long) iterations))
00658 state|=ExitState;
00659 if (LocaleCompare(filename,"-") == 0)
00660 state|=ExitState;
00661 continue;
00662 }
00663 pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
00664 switch (*(option+1))
00665 {
00666 case 'a':
00667 {
00668 if (LocaleCompare("alpha",option+1) == 0)
00669 {
00670 long
00671 type;
00672
00673 if (*option == '+')
00674 break;
00675 i++;
00676 if (i == (long) argc)
00677 ThrowDisplayException(OptionError,"MissingArgument",option);
00678 type=ParseMagickOption(MagickAlphaOptions,MagickFalse,argv[i]);
00679 if (type < 0)
00680 ThrowDisplayException(OptionError,"UnrecognizedAlphaChannelType",
00681 argv[i]);
00682 break;
00683 }
00684 if (LocaleCompare("antialias",option+1) == 0)
00685 break;
00686 if (LocaleCompare("authenticate",option+1) == 0)
00687 {
00688 if (*option == '+')
00689 break;
00690 i++;
00691 if (i == (long) argc)
00692 ThrowDisplayException(OptionError,"MissingArgument",option);
00693 break;
00694 }
00695 if (LocaleCompare("auto-orient",option+1) == 0)
00696 break;
00697 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
00698 }
00699 case 'b':
00700 {
00701 if (LocaleCompare("backdrop",option+1) == 0)
00702 {
00703 resource_info.backdrop=(*option == '-') ? MagickTrue : MagickFalse;
00704 break;
00705 }
00706 if (LocaleCompare("background",option+1) == 0)
00707 {
00708 if (*option == '+')
00709 break;
00710 i++;
00711 if (i == (long) argc)
00712 ThrowDisplayException(OptionError,"MissingArgument",option);
00713 resource_info.background_color=argv[i];
00714 break;
00715 }
00716 if (LocaleCompare("border",option+1) == 0)
00717 {
00718 if (*option == '+')
00719 break;
00720 i++;
00721 if (i == (long) argc)
00722 ThrowDisplayException(OptionError,"MissingArgument",option);
00723 if (IsGeometry(argv[i]) == MagickFalse)
00724 ThrowDisplayInvalidArgumentException(option,argv[i]);
00725 break;
00726 }
00727 if (LocaleCompare("bordercolor",option+1) == 0)
00728 {
00729 if (*option == '+')
00730 break;
00731 i++;
00732 if (i == (long) argc)
00733 ThrowDisplayException(OptionError,"MissingArgument",option);
00734 resource_info.border_color=argv[i];
00735 break;
00736 }
00737 if (LocaleCompare("borderwidth",option+1) == 0)
00738 {
00739 resource_info.border_width=0;
00740 if (*option == '+')
00741 break;
00742 i++;
00743 if (i == (long) argc)
00744 ThrowDisplayException(OptionError,"MissingArgument",option);
00745 if (IsGeometry(argv[i]) == MagickFalse)
00746 ThrowDisplayInvalidArgumentException(option,argv[i]);
00747 resource_info.border_width=(unsigned int) StringToUnsignedLong(argv[i]);
00748 break;
00749 }
00750 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
00751 }
00752 case 'c':
00753 {
00754 if (LocaleCompare("cache",option+1) == 0)
00755 {
00756 if (*option == '+')
00757 break;
00758 i++;
00759 if (i == (long) argc)
00760 ThrowDisplayException(OptionError,"MissingArgument",option);
00761 if (IsGeometry(argv[i]) == MagickFalse)
00762 ThrowDisplayInvalidArgumentException(option,argv[i]);
00763 break;
00764 }
00765 if (LocaleCompare("channel",option+1) == 0)
00766 {
00767 long
00768 channel;
00769
00770 if (*option == '+')
00771 break;
00772 i++;
00773 if (i == (long) (argc-1))
00774 ThrowDisplayException(OptionError,"MissingArgument",option);
00775 channel=ParseChannelOption(argv[i]);
00776 if (channel < 0)
00777 ThrowDisplayException(OptionError,"UnrecognizedChannelType",
00778 argv[i]);
00779 break;
00780 }
00781 if (LocaleCompare("clip",option+1) == 0)
00782 break;
00783 if (LocaleCompare("clip-path",option+1) == 0)
00784 {
00785 i++;
00786 if (i == (long) argc)
00787 ThrowDisplayException(OptionError,"MissingArgument",option);
00788 break;
00789 }
00790 if (LocaleCompare("coalesce",option+1) == 0)
00791 break;
00792 if (LocaleCompare("colormap",option+1) == 0)
00793 {
00794 resource_info.colormap=PrivateColormap;
00795 if (*option == '+')
00796 break;
00797 i++;
00798 if (i == (long) argc)
00799 ThrowDisplayException(OptionError,"MissingArgument",option);
00800 resource_info.colormap=UndefinedColormap;
00801 if (LocaleCompare("private",argv[i]) == 0)
00802 resource_info.colormap=PrivateColormap;
00803 if (LocaleCompare("shared",argv[i]) == 0)
00804 resource_info.colormap=SharedColormap;
00805 if (resource_info.colormap == UndefinedColormap)
00806 ThrowDisplayException(OptionError,"UnrecognizedColormapType",
00807 argv[i]);
00808 break;
00809 }
00810 if (LocaleCompare("colors",option+1) == 0)
00811 {
00812 quantize_info->number_colors=0;
00813 if (*option == '+')
00814 break;
00815 i++;
00816 if (i == (long) argc)
00817 ThrowDisplayException(OptionError,"MissingArgument",option);
00818 if (IsGeometry(argv[i]) == MagickFalse)
00819 ThrowDisplayInvalidArgumentException(option,argv[i]);
00820 quantize_info->number_colors=StringToUnsignedLong(argv[i]);
00821 break;
00822 }
00823 if (LocaleCompare("colorspace",option+1) == 0)
00824 {
00825 long
00826 colorspace;
00827
00828 if (*option == '+')
00829 break;
00830 i++;
00831 if (i == (long) argc)
00832 ThrowDisplayException(OptionError,"MissingArgument",option);
00833 colorspace=ParseMagickOption(MagickColorspaceOptions,
00834 MagickFalse,argv[i]);
00835 if (colorspace < 0)
00836 ThrowDisplayException(OptionError,"UnrecognizedColorspace",
00837 argv[i]);
00838 break;
00839 }
00840 if (LocaleCompare("comment",option+1) == 0)
00841 {
00842 if (*option == '+')
00843 break;
00844 i++;
00845 if (i == (long) argc)
00846 ThrowDisplayException(OptionError,"MissingArgument",option);
00847 break;
00848 }
00849 if (LocaleCompare("compress",option+1) == 0)
00850 {
00851 long
00852 compress;
00853
00854 if (*option == '+')
00855 break;
00856 i++;
00857 if (i == (long) argc)
00858 ThrowDisplayException(OptionError,"MissingArgument",option);
00859 compress=ParseMagickOption(MagickCompressOptions,MagickFalse,
00860 argv[i]);
00861 if (compress < 0)
00862 ThrowDisplayException(OptionError,"UnrecognizedImageCompression",
00863 argv[i]);
00864 break;
00865 }
00866 if (LocaleCompare("concurrent",option+1) == 0)
00867 break;
00868 if (LocaleCompare("contrast",option+1) == 0)
00869 break;
00870 if (LocaleCompare("crop",option+1) == 0)
00871 {
00872 if (*option == '+')
00873 break;
00874 i++;
00875 if (i == (long) argc)
00876 ThrowDisplayException(OptionError,"MissingArgument",option);
00877 if (IsGeometry(argv[i]) == MagickFalse)
00878 ThrowDisplayInvalidArgumentException(option,argv[i]);
00879 break;
00880 }
00881 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
00882 }
00883 case 'd':
00884 {
00885 if (LocaleCompare("debug",option+1) == 0)
00886 {
00887 long
00888 event;
00889
00890 if (*option == '+')
00891 break;
00892 i++;
00893 if (i == (long) argc)
00894 ThrowDisplayException(OptionError,"MissingArgument",option);
00895 event=ParseMagickOption(MagickLogEventOptions,MagickFalse,argv[i]);
00896 if (event < 0)
00897 ThrowDisplayException(OptionError,"UnrecognizedEventType",
00898 argv[i]);
00899 (void) SetLogEventMask(argv[i]);
00900 break;
00901 }
00902 if (LocaleCompare("decipher",option+1) == 0)
00903 {
00904 if (*option == '+')
00905 break;
00906 i++;
00907 if (i == (long) (argc-1))
00908 ThrowDisplayException(OptionError,"MissingArgument",option);
00909 break;
00910 }
00911 if (LocaleCompare("define",option+1) == 0)
00912 {
00913 i++;
00914 if (i == (long) argc)
00915 ThrowDisplayException(OptionError,"MissingArgument",option);
00916 if (*option == '+')
00917 {
00918 const char
00919 *define;
00920
00921 define=GetImageOption(image_info,argv[i]);
00922 if (define == (const char *) NULL)
00923 ThrowDisplayException(OptionError,"NoSuchOption",argv[i]);
00924 break;
00925 }
00926 break;
00927 }
00928 if (LocaleCompare("delay",option+1) == 0)
00929 {
00930 if (*option == '+')
00931 break;
00932 i++;
00933 if (i == (long) argc)
00934 ThrowDisplayException(OptionError,"MissingArgument",option);
00935 if (IsGeometry(argv[i]) == MagickFalse)
00936 ThrowDisplayInvalidArgumentException(option,argv[i]);
00937 break;
00938 }
00939 if (LocaleCompare("density",option+1) == 0)
00940 {
00941 if (*option == '+')
00942 break;
00943 i++;
00944 if (i == (long) argc)
00945 ThrowDisplayException(OptionError,"MissingArgument",option);
00946 if (IsGeometry(argv[i]) == MagickFalse)
00947 ThrowDisplayInvalidArgumentException(option,argv[i]);
00948 break;
00949 }
00950 if (LocaleCompare("depth",option+1) == 0)
00951 {
00952 if (*option == '+')
00953 break;
00954 i++;
00955 if (i == (long) argc)
00956 ThrowDisplayException(OptionError,"MissingArgument",option);
00957 if (IsGeometry(argv[i]) == MagickFalse)
00958 ThrowDisplayInvalidArgumentException(option,argv[i]);
00959 break;
00960 }
00961 if (LocaleCompare("deskew",option+1) == 0)
00962 {
00963 if (*option == '+')
00964 break;
00965 i++;
00966 if (i == (long) (argc-1))
00967 ThrowDisplayException(OptionError,"MissingArgument",option);
00968 if (IsGeometry(argv[i]) == MagickFalse)
00969 ThrowDisplayInvalidArgumentException(option,argv[i]);
00970 break;
00971 }
00972 if (LocaleCompare("despeckle",option+1) == 0)
00973 break;
00974 if (LocaleCompare("display",option+1) == 0)
00975 {
00976 if (*option == '+')
00977 break;
00978 i++;
00979 if (i == (long) argc)
00980 ThrowDisplayException(OptionError,"MissingArgument",option);
00981 break;
00982 }
00983 if (LocaleCompare("dispose",option+1) == 0)
00984 {
00985 long
00986 dispose;
00987
00988 if (*option == '+')
00989 break;
00990 i++;
00991 if (i == (long) argc)
00992 ThrowDisplayException(OptionError,"MissingArgument",option);
00993 dispose=ParseMagickOption(MagickDisposeOptions,MagickFalse,argv[i]);
00994 if (dispose < 0)
00995 ThrowDisplayException(OptionError,"UnrecognizedDisposeMethod",
00996 argv[i]);
00997 break;
00998 }
00999 if (LocaleCompare("dither",option+1) == 0)
01000 {
01001 long
01002 method;
01003
01004 quantize_info->dither=MagickFalse;
01005 if (*option == '+')
01006 break;
01007 i++;
01008 if (i == (long) argc)
01009 ThrowDisplayException(OptionError,"MissingArgument",option);
01010 method=ParseMagickOption(MagickDitherOptions,MagickFalse,argv[i]);
01011 if (method < 0)
01012 ThrowDisplayException(OptionError,"UnrecognizedDitherMethod",
01013 argv[i]);
01014 quantize_info->dither=MagickTrue;
01015 quantize_info->dither_method=(DitherMethod) method;
01016 break;
01017 }
01018 if (LocaleCompare("duration",option+1) == 0)
01019 {
01020 if (*option == '+')
01021 break;
01022 i++;
01023 if (i == (long) (argc-1))
01024 ThrowDisplayException(OptionError,"MissingArgument",option);
01025 if (IsGeometry(argv[i]) == MagickFalse)
01026 ThrowDisplayInvalidArgumentException(option,argv[i]);
01027 break;
01028 }
01029 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01030 }
01031 case 'e':
01032 {
01033 if (LocaleCompare("edge",option+1) == 0)
01034 {
01035 if (*option == '+')
01036 break;
01037 i++;
01038 if (i == (long) argc)
01039 ThrowDisplayException(OptionError,"MissingArgument",option);
01040 if (IsGeometry(argv[i]) == MagickFalse)
01041 ThrowDisplayInvalidArgumentException(option,argv[i]);
01042 break;
01043 }
01044 if (LocaleCompare("endian",option+1) == 0)
01045 {
01046 long
01047 endian;
01048
01049 if (*option == '+')
01050 break;
01051 i++;
01052 if (i == (long) argc)
01053 ThrowDisplayException(OptionError,"MissingArgument",option);
01054 endian=ParseMagickOption(MagickEndianOptions,MagickFalse,
01055 argv[i]);
01056 if (endian < 0)
01057 ThrowDisplayException(OptionError,"UnrecognizedEndianType",
01058 argv[i]);
01059 break;
01060 }
01061 if (LocaleCompare("enhance",option+1) == 0)
01062 break;
01063 if (LocaleCompare("equalize",option+1) == 0)
01064 break;
01065 if (LocaleCompare("extract",option+1) == 0)
01066 {
01067 if (*option == '+')
01068 break;
01069 i++;
01070 if (i == (long) argc)
01071 ThrowDisplayException(OptionError,"MissingArgument",option);
01072 if (IsGeometry(argv[i]) == MagickFalse)
01073 ThrowDisplayInvalidArgumentException(option,argv[i]);
01074 break;
01075 }
01076 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01077 }
01078 case 'f':
01079 {
01080 if (LocaleCompare("filter",option+1) == 0)
01081 {
01082 long
01083 filter;
01084
01085 if (*option == '+')
01086 break;
01087 i++;
01088 if (i == (long) argc)
01089 ThrowDisplayException(OptionError,"MissingArgument",option);
01090 filter=ParseMagickOption(MagickFilterOptions,MagickFalse,argv[i]);
01091 if (filter < 0)
01092 ThrowDisplayException(OptionError,"UnrecognizedImageFilter",
01093 argv[i]);
01094 break;
01095 }
01096 if (LocaleCompare("flatten",option+1) == 0)
01097 break;
01098 if (LocaleCompare("flip",option+1) == 0)
01099 break;
01100 if (LocaleCompare("flop",option+1) == 0)
01101 break;
01102 if (LocaleCompare("font",option+1) == 0)
01103 {
01104 if (*option == '+')
01105 break;
01106 i++;
01107 if (i == (long) argc)
01108 ThrowDisplayException(OptionError,"MissingArgument",option);
01109 resource_info.font=XGetResourceClass(resource_database,
01110 GetClientName(),"font",argv[i]);
01111 break;
01112 }
01113 if (LocaleCompare("foreground",option+1) == 0)
01114 {
01115 if (*option == '+')
01116 break;
01117 i++;
01118 if (i == (long) argc)
01119 ThrowDisplayException(OptionError,"MissingArgument",option);
01120 resource_info.foreground_color=argv[i];
01121 break;
01122 }
01123 if (LocaleCompare("format",option+1) == 0)
01124 {
01125 if (*option == '+')
01126 break;
01127 i++;
01128 if (i == (long) (argc-1))
01129 ThrowDisplayException(OptionError,"MissingArgument",option);
01130 break;
01131 }
01132 if (LocaleCompare("frame",option+1) == 0)
01133 {
01134 if (*option == '+')
01135 break;
01136 i++;
01137 if (i == (long) argc)
01138 ThrowDisplayException(OptionError,"MissingArgument",option);
01139 if (IsGeometry(argv[i]) == MagickFalse)
01140 ThrowDisplayInvalidArgumentException(option,argv[i]);
01141 break;
01142 }
01143 if (LocaleCompare("fuzz",option+1) == 0)
01144 {
01145 if (*option == '+')
01146 break;
01147 i++;
01148 if (i == (long) (argc-1))
01149 ThrowDisplayException(OptionError,"MissingArgument",option);
01150 if (IsGeometry(argv[i]) == MagickFalse)
01151 ThrowDisplayInvalidArgumentException(option,argv[i]);
01152 break;
01153 }
01154 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01155 }
01156 case 'g':
01157 {
01158 if (LocaleCompare("gamma",option+1) == 0)
01159 {
01160 i++;
01161 if (i == (long) argc)
01162 ThrowDisplayException(OptionError,"MissingArgument",option);
01163 if (IsGeometry(argv[i]) == MagickFalse)
01164 ThrowDisplayInvalidArgumentException(option,argv[i]);
01165 break;
01166 }
01167 if (LocaleCompare("geometry",option+1) == 0)
01168 {
01169 resource_info.image_geometry=(char *) NULL;
01170 if (*option == '+')
01171 break;
01172 (void) CopyMagickString(argv[i]+1,"sans",MaxTextExtent);
01173 i++;
01174 if (i == (long) argc)
01175 ThrowDisplayException(OptionError,"MissingArgument",option);
01176 if (IsGeometry(argv[i]) == MagickFalse)
01177 ThrowDisplayInvalidArgumentException(option,argv[i]);
01178 resource_info.image_geometry=ConstantString(argv[i]);
01179 break;
01180 }
01181 if (LocaleCompare("gravity",option+1) == 0)
01182 {
01183 long
01184 gravity;
01185
01186 if (*option == '+')
01187 break;
01188 i++;
01189 if (i == (long) (argc-1))
01190 ThrowDisplayException(OptionError,"MissingArgument",option);
01191 gravity=ParseMagickOption(MagickGravityOptions,MagickFalse,
01192 argv[i]);
01193 if (gravity < 0)
01194 ThrowDisplayException(OptionError,"UnrecognizedGravityType",
01195 argv[i]);
01196 break;
01197 }
01198 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01199 }
01200 case 'h':
01201 {
01202 if ((LocaleCompare("help",option+1) == 0) ||
01203 (LocaleCompare("-help",option+1) == 0))
01204 break;
01205 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01206 }
01207 case 'i':
01208 {
01209 if (LocaleCompare("identify",option+1) == 0)
01210 break;
01211 if (LocaleCompare("iconGeometry",option+1) == 0)
01212 {
01213 resource_info.icon_geometry=(char *) NULL;
01214 if (*option == '+')
01215 break;
01216 i++;
01217 if (i == (long) argc)
01218 ThrowDisplayException(OptionError,"MissingArgument",option);
01219 if (IsGeometry(argv[i]) == MagickFalse)
01220 ThrowDisplayInvalidArgumentException(option,argv[i]);
01221 resource_info.icon_geometry=argv[i];
01222 break;
01223 }
01224 if (LocaleCompare("iconic",option+1) == 0)
01225 {
01226 resource_info.iconic=(*option == '-') ? MagickTrue : MagickFalse;
01227 break;
01228 }
01229 if (LocaleCompare("immutable",option+1) == 0)
01230 {
01231 resource_info.immutable=(*option == '-') ? MagickTrue : MagickFalse;
01232 break;
01233 }
01234 if (LocaleCompare("interlace",option+1) == 0)
01235 {
01236 long
01237 interlace;
01238
01239 if (*option == '+')
01240 break;
01241 i++;
01242 if (i == (long) argc)
01243 ThrowDisplayException(OptionError,"MissingArgument",option);
01244 interlace=ParseMagickOption(MagickInterlaceOptions,MagickFalse,
01245 argv[i]);
01246 if (interlace < 0)
01247 ThrowDisplayException(OptionError,"UnrecognizedInterlaceType",
01248 argv[i]);
01249 break;
01250 }
01251 if (LocaleCompare("interpolate",option+1) == 0)
01252 {
01253 long
01254 interpolate;
01255
01256 if (*option == '+')
01257 break;
01258 i++;
01259 if (i == (long) argc)
01260 ThrowDisplayException(OptionError,"MissingArgument",option);
01261 interpolate=ParseMagickOption(MagickInterpolateOptions,MagickFalse,
01262 argv[i]);
01263 if (interpolate < 0)
01264 ThrowDisplayException(OptionError,"UnrecognizedInterpolateMethod",
01265 argv[i]);
01266 break;
01267 }
01268 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01269 }
01270 case 'l':
01271 {
01272 if (LocaleCompare("label",option+1) == 0)
01273 {
01274 if (*option == '+')
01275 break;
01276 i++;
01277 if (i == (long) argc)
01278 ThrowDisplayException(OptionError,"MissingArgument",option);
01279 break;
01280 }
01281 if (LocaleCompare("limit",option+1) == 0)
01282 {
01283 char
01284 *p;
01285
01286 double
01287 value;
01288
01289 long
01290 resource;
01291
01292 if (*option == '+')
01293 break;
01294 i++;
01295 if (i == (long) argc)
01296 ThrowDisplayException(OptionError,"MissingArgument",option);
01297 resource=ParseMagickOption(MagickResourceOptions,MagickFalse,
01298 argv[i]);
01299 if (resource < 0)
01300 ThrowDisplayException(OptionError,"UnrecognizedResourceType",
01301 argv[i]);
01302 i++;
01303 if (i == (long) argc)
01304 ThrowDisplayException(OptionError,"MissingArgument",option);
01305 value=strtod(argv[i],&p);
01306 if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0))
01307 ThrowDisplayInvalidArgumentException(option,argv[i]);
01308 break;
01309 }
01310 if (LocaleCompare("list",option+1) == 0)
01311 {
01312 long
01313 list;
01314
01315 if (*option == '+')
01316 break;
01317 i++;
01318 if (i == (long) argc)
01319 ThrowDisplayException(OptionError,"MissingArgument",option);
01320 list=ParseMagickOption(MagickListOptions,MagickFalse,argv[i]);
01321 if (list < 0)
01322 ThrowDisplayException(OptionError,"UnrecognizedListType",argv[i]);
01323 (void) MogrifyImageInfo(image_info,(int) (i-j+1),(const char **)
01324 argv+j,exception);
01325 DestroyDisplay();
01326 return(MagickTrue);
01327 }
01328 if (LocaleCompare("log",option+1) == 0)
01329 {
01330 if (*option == '+')
01331 break;
01332 i++;
01333 if ((i == (long) argc) ||
01334 (strchr(argv[i],'%') == (char *) NULL))
01335 ThrowDisplayException(OptionError,"MissingArgument",option);
01336 break;
01337 }
01338 if (LocaleCompare("loop",option+1) == 0)
01339 {
01340 if (*option == '+')
01341 break;
01342 i++;
01343 if (i == (long) (argc-1))
01344 ThrowDisplayException(OptionError,"MissingArgument",option);
01345 if (IsGeometry(argv[i]) == MagickFalse)
01346 ThrowDisplayInvalidArgumentException(option,argv[i]);
01347 iterations=StringToUnsignedLong(argv[i]);
01348 break;
01349 }
01350 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01351 }
01352 case 'm':
01353 {
01354 if (LocaleCompare("magnify",option+1) == 0)
01355 {
01356 resource_info.magnify=2;
01357 if (*option == '+')
01358 break;
01359 i++;
01360 if (i == (long) argc)
01361 ThrowDisplayException(OptionError,"MissingArgument",option);
01362 if (IsGeometry(argv[i]) == MagickFalse)
01363 ThrowDisplayInvalidArgumentException(option,argv[i]);
01364 resource_info.magnify=(unsigned int) StringToUnsignedLong(argv[i]);
01365 break;
01366 }
01367 if (LocaleCompare("map",option+1) == 0)
01368 {
01369 resource_info.map_type=(char *) NULL;
01370 if (*option == '+')
01371 break;
01372 (void) strcpy(argv[i]+1,"san");
01373 i++;
01374 if (i == (long) argc)
01375 ThrowDisplayException(OptionError,"MissingArgument",option);
01376 resource_info.map_type=argv[i];
01377 break;
01378 }
01379 if (LocaleCompare("matte",option+1) == 0)
01380 break;
01381 if (LocaleCompare("mattecolor",option+1) == 0)
01382 {
01383 if (*option == '+')
01384 break;
01385 i++;
01386 if (i == (long) argc)
01387 ThrowDisplayException(OptionError,"MissingArgument",option);
01388 resource_info.matte_color=argv[i];
01389 break;
01390 }
01391 if (LocaleCompare("monitor",option+1) == 0)
01392 break;
01393 if (LocaleCompare("monochrome",option+1) == 0)
01394 {
01395 if (*option == '+')
01396 break;
01397 quantize_info->number_colors=2;
01398 quantize_info->colorspace=GRAYColorspace;
01399 break;
01400 }
01401 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01402 }
01403 case 'n':
01404 {
01405 if (LocaleCompare("name",option+1) == 0)
01406 {
01407 resource_info.name=(char *) NULL;
01408 if (*option == '+')
01409 break;
01410 i++;
01411 if (i == (long) argc)
01412 ThrowDisplayException(OptionError,"MissingArgument",option);
01413 resource_info.name=ConstantString(argv[i]);
01414 break;
01415 }
01416 if (LocaleCompare("negate",option+1) == 0)
01417 break;
01418 if (LocaleCompare("noop",option+1) == 0)
01419 break;
01420 if (LocaleCompare("normalize",option+1) == 0)
01421 break;
01422 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01423 }
01424 case 'p':
01425 {
01426 if (LocaleCompare("page",option+1) == 0)
01427 {
01428 resource_info.image_geometry=(char *) NULL;
01429 if (*option == '+')
01430 break;
01431 i++;
01432 if (i == (long) argc)
01433 ThrowDisplayException(OptionError,"MissingArgument",option);
01434 resource_info.image_geometry=ConstantString(argv[i]);
01435 break;
01436 }
01437 if (LocaleCompare("profile",option+1) == 0)
01438 {
01439 i++;
01440 if (i == (long) argc)
01441 ThrowDisplayException(OptionError,"MissingArgument",option);
01442 break;
01443 }
01444 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01445 }
01446 case 'q':
01447 {
01448 if (LocaleCompare("quality",option+1) == 0)
01449 {
01450 if (*option == '+')
01451 break;
01452 i++;
01453 if (i == (long) argc)
01454 ThrowDisplayException(OptionError,"MissingArgument",option);
01455 if (IsGeometry(argv[i]) == MagickFalse)
01456 ThrowDisplayInvalidArgumentException(option,argv[i]);
01457 break;
01458 }
01459 if (LocaleCompare("quantize",option+1) == 0)
01460 {
01461 long
01462 colorspace;
01463
01464 if (*option == '+')
01465 break;
01466 i++;
01467 if (i == (long) (argc-1))
01468 ThrowDisplayException(OptionError,"MissingArgument",option);
01469 colorspace=ParseMagickOption(MagickColorspaceOptions,
01470 MagickFalse,argv[i]);
01471 if (colorspace < 0)
01472 ThrowDisplayException(OptionError,"UnrecognizedColorspace",
01473 argv[i]);
01474 break;
01475 }
01476 if (LocaleCompare("quiet",option+1) == 0)
01477 break;
01478 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01479 }
01480 case 'r':
01481 {
01482 if (LocaleCompare("raise",option+1) == 0)
01483 {
01484 i++;
01485 if (i == (long) argc)
01486 ThrowDisplayException(OptionError,"MissingArgument",option);
01487 if (IsGeometry(argv[i]) == MagickFalse)
01488 ThrowDisplayInvalidArgumentException(option,argv[i]);
01489 break;
01490 }
01491 if (LocaleCompare("regard-warnings",option+1) == 0)
01492 break;
01493 if (LocaleCompare("remote",option+1) == 0)
01494 {
01495 i++;
01496 if (i == (long) argc)
01497 ThrowDisplayException(OptionError,"MissingArgument",option);
01498 if (XRemoteCommand(display,resource_info.window_id,argv[i]) != 0)
01499 return(MagickFalse);
01500 i--;
01501 break;
01502 }
01503 if (LocaleCompare("repage",option+1) == 0)
01504 {
01505 if (*option == '+')
01506 break;
01507 i++;
01508 if (i == (long) argc)
01509 ThrowDisplayException(OptionError,"MissingArgument",option);
01510 if (IsGeometry(argv[i]) == MagickFalse)
01511 ThrowDisplayInvalidArgumentException(option,argv[i]);
01512 break;
01513 }
01514 if (LocaleCompare("resample",option+1) == 0)
01515 {
01516 if (*option == '+')
01517 break;
01518 i++;
01519 if (i == (long) (argc-1))
01520 ThrowDisplayException(OptionError,"MissingArgument",option);
01521 if (IsGeometry(argv[i]) == MagickFalse)
01522 ThrowDisplayInvalidArgumentException(option,argv[i]);
01523 break;
01524 }
01525 if (LocaleCompare("resize",option+1) == 0)
01526 {
01527 if (*option == '+')
01528 break;
01529 i++;
01530 if (i == (long) argc)
01531 ThrowDisplayException(OptionError,"MissingArgument",option);
01532 if (IsGeometry(argv[i]) == MagickFalse)
01533 ThrowDisplayInvalidArgumentException(option,argv[i]);
01534 break;
01535 }
01536 if (LocaleNCompare("respect-parentheses",option+1,17) == 0)
01537 {
01538 respect_parenthesis=(*option == '-') ? MagickTrue : MagickFalse;
01539 break;
01540 }
01541 if (LocaleCompare("roll",option+1) == 0)
01542 {
01543 if (*option == '+')
01544 break;
01545 i++;
01546 if (i == (long) argc)
01547 ThrowDisplayException(OptionError,"MissingArgument",option);
01548 if (IsGeometry(argv[i]) == MagickFalse)
01549 ThrowDisplayInvalidArgumentException(option,argv[i]);
01550 break;
01551 }
01552 if (LocaleCompare("rotate",option+1) == 0)
01553 {
01554 i++;
01555 if (i == (long) argc)
01556 ThrowDisplayException(OptionError,"MissingArgument",option);
01557 if (IsGeometry(argv[i]) == MagickFalse)
01558 ThrowDisplayInvalidArgumentException(option,argv[i]);
01559 break;
01560 }
01561 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01562 }
01563 case 's':
01564 {
01565 if (LocaleCompare("sample",option+1) == 0)
01566 {
01567 if (*option == '+')
01568 break;
01569 i++;
01570 if (i == (long) argc)
01571 ThrowDisplayException(OptionError,"MissingArgument",option);
01572 if (IsGeometry(argv[i]) == MagickFalse)
01573 ThrowDisplayInvalidArgumentException(option,argv[i]);
01574 break;
01575 }
01576 if (LocaleCompare("sampling-factor",option+1) == 0)
01577 {
01578 if (*option == '+')
01579 break;
01580 i++;
01581 if (i == (long) argc)
01582 ThrowDisplayException(OptionError,"MissingArgument",option);
01583 if (IsGeometry(argv[i]) == MagickFalse)
01584 ThrowDisplayInvalidArgumentException(option,argv[i]);
01585 break;
01586 }
01587 if (LocaleCompare("scenes",option+1) == 0)
01588 {
01589 if (*option == '+')
01590 break;
01591 i++;
01592 if (i == (long) argc)
01593 ThrowDisplayException(OptionError,"MissingArgument",option);
01594 if (IsSceneGeometry(argv[i],MagickFalse) == MagickFalse)
01595 ThrowDisplayInvalidArgumentException(option,argv[i]);
01596 break;
01597 }
01598 if (LocaleCompare("seed",option+1) == 0)
01599 {
01600 if (*option == '+')
01601 break;
01602 i++;
01603 if (i == (long) (argc-1))
01604 ThrowDisplayException(OptionError,"MissingArgument",option);
01605 if (IsGeometry(argv[i]) == MagickFalse)
01606 ThrowDisplayInvalidArgumentException(option,argv[i]);
01607 break;
01608 }
01609 if (LocaleCompare("segment",option+1) == 0)
01610 {
01611 if (*option == '+')
01612 break;
01613 i++;
01614 if (i == (long) argc)
01615 ThrowDisplayException(OptionError,"MissingArgument",option);
01616 if (IsGeometry(argv[i]) == MagickFalse)
01617 ThrowDisplayInvalidArgumentException(option,argv[i]);
01618 break;
01619 }
01620 if (LocaleCompare("set",option+1) == 0)
01621 {
01622 i++;
01623 if (i == (long) argc)
01624 ThrowDisplayException(OptionError,"MissingArgument",option);
01625 if (*option == '+')
01626 break;
01627 i++;
01628 if (i == (long) argc)
01629 ThrowDisplayException(OptionError,"MissingArgument",option);
01630 break;
01631 }
01632 if (LocaleCompare("sharpen",option+1) == 0)
01633 {
01634 if (*option == '+')
01635 break;
01636 i++;
01637 if (i == (long) argc)
01638 ThrowDisplayException(OptionError,"MissingArgument",option);
01639 if (IsGeometry(argv[i]) == MagickFalse)
01640 ThrowDisplayInvalidArgumentException(option,argv[i]);
01641 break;
01642 }
01643 if (LocaleCompare("shared-memory",option+1) == 0)
01644 {
01645 resource_info.use_shared_memory= (*option == '-') ? MagickTrue :
01646 MagickFalse;
01647 break;
01648 }
01649 if (LocaleCompare("size",option+1) == 0)
01650 {
01651 if (*option == '+')
01652 break;
01653 i++;
01654 if (i == (long) argc)
01655 ThrowDisplayException(OptionError,"MissingArgument",option);
01656 if (IsGeometry(argv[i]) == MagickFalse)
01657 ThrowDisplayInvalidArgumentException(option,argv[i]);
01658 break;
01659 }
01660 if (LocaleCompare("strip",option+1) == 0)
01661 break;
01662 if (LocaleCompare("support",option+1) == 0)
01663 {
01664 i++;
01665 break;
01666 }
01667 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01668 }
01669 case 't':
01670 {
01671 if (LocaleCompare("text-font",option+1) == 0)
01672 {
01673 resource_info.text_font=(char *) NULL;
01674 if (*option == '+')
01675 break;
01676 i++;
01677 if (i == (long) argc)
01678 ThrowDisplayException(OptionError,"MissingArgument",option);
01679 resource_info.text_font=XGetResourceClass(resource_database,
01680 GetClientName(),"font",argv[i]);
01681 break;
01682 }
01683 if (LocaleCompare("texture",option+1) == 0)
01684 {
01685 if (*option == '+')
01686 break;
01687 i++;
01688 if (i == (long) argc)
01689 ThrowDisplayException(OptionError,"MissingArgument",option);
01690 break;
01691 }
01692 if (LocaleCompare("threshold",option+1) == 0)
01693 {
01694 if (*option == '+')
01695 break;
01696 i++;
01697 if (i == (long) argc)
01698 ThrowDisplayException(OptionError,"MissingArgument",option);
01699 if (IsGeometry(argv[i]) == MagickFalse)
01700 ThrowDisplayInvalidArgumentException(option,argv[i]);
01701 break;
01702 }
01703 if (LocaleCompare("thumbnail",option+1) == 0)
01704 {
01705 if (*option == '+')
01706 break;
01707 i++;
01708 if (i == (long) argc)
01709 ThrowDisplayException(OptionError,"MissingArgument",option);
01710 if (IsGeometry(argv[i]) == MagickFalse)
01711 ThrowDisplayInvalidArgumentException(option,argv[i]);
01712 break;
01713 }
01714 if (LocaleCompare("title",option+1) == 0)
01715 {
01716 resource_info.title=(char *) NULL;
01717 if (*option == '+')
01718 break;
01719 i++;
01720 if (i == (long) argc)
01721 ThrowDisplayException(OptionError,"MissingArgument",option);
01722 resource_info.title=argv[i];
01723 break;
01724 }
01725 if (LocaleCompare("transparent-color",option+1) == 0)
01726 {
01727 if (*option == '+')
01728 break;
01729 i++;
01730 if (i == (long) (argc-1))
01731 ThrowDisplayException(OptionError,"MissingArgument",option);
01732 break;
01733 }
01734 if (LocaleCompare("treedepth",option+1) == 0)
01735 {
01736 quantize_info->tree_depth=0;
01737 if (*option == '+')
01738 break;
01739 i++;
01740 if (i == (long) argc)
01741 ThrowDisplayException(OptionError,"MissingArgument",option);
01742 if (IsGeometry(argv[i]) == MagickFalse)
01743 ThrowDisplayInvalidArgumentException(option,argv[i]);
01744 quantize_info->tree_depth=StringToUnsignedLong(argv[i]);
01745 break;
01746 }
01747 if (LocaleCompare("trim",option+1) == 0)
01748 break;
01749 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01750 }
01751 case 'u':
01752 {
01753 if (LocaleCompare("update",option+1) == 0)
01754 {
01755 resource_info.update=(unsigned int) (*option == '-');
01756 if (*option == '+')
01757 break;
01758 i++;
01759 if (i == (long) argc)
01760 ThrowDisplayException(OptionError,"MissingArgument",option);
01761 if (IsGeometry(argv[i]) == MagickFalse)
01762 ThrowDisplayInvalidArgumentException(option,argv[i]);
01763 resource_info.update=(unsigned int) StringToUnsignedLong(argv[i]);
01764 break;
01765 }
01766 if (LocaleCompare("use-pixmap",option+1) == 0)
01767 {
01768 resource_info.use_pixmap=(*option == '-') ? MagickTrue :
01769 MagickFalse;
01770 break;
01771 }
01772 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01773 }
01774 case 'v':
01775 {
01776 if (LocaleCompare("verbose",option+1) == 0)
01777 break;
01778 if ((LocaleCompare("version",option+1) == 0) ||
01779 (LocaleCompare("-version",option+1) == 0))
01780 {
01781 (void) fprintf(stdout,"Version: %s\n",
01782 GetMagickVersion((unsigned long *) NULL));
01783 (void) fprintf(stdout,"Copyright: %s\n",GetMagickCopyright());
01784 (void) fprintf(stdout,"Features: %s\n\n",GetMagickFeatures());
01785 break;
01786 }
01787 if (LocaleCompare("visual",option+1) == 0)
01788 {
01789 resource_info.visual_type=(char *) NULL;
01790 if (*option == '+')
01791 break;
01792 i++;
01793 if (i == (long) argc)
01794 ThrowDisplayException(OptionError,"MissingArgument",option);
01795 resource_info.visual_type=argv[i];
01796 break;
01797 }
01798 if (LocaleCompare("virtual-pixel",option+1) == 0)
01799 {
01800 long
01801 method;
01802
01803 if (*option == '+')
01804 break;
01805 i++;
01806 if (i == (long) (argc-1))
01807 ThrowDisplayException(OptionError,"MissingArgument",option);
01808 method=ParseMagickOption(MagickVirtualPixelOptions,MagickFalse,
01809 argv[i]);
01810 if (method < 0)
01811 ThrowDisplayException(OptionError,
01812 "UnrecognizedVirtualPixelMethod",argv[i]);
01813 break;
01814 }
01815 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01816 }
01817 case 'w':
01818 {
01819 if (LocaleCompare("window",option+1) == 0)
01820 {
01821 resource_info.window_id=(char *) NULL;
01822 if (*option == '+')
01823 break;
01824 i++;
01825 if (i == (long) argc)
01826 ThrowDisplayException(OptionError,"MissingArgument",option);
01827 resource_info.window_id=argv[i];
01828 break;
01829 }
01830 if (LocaleCompare("window-group",option+1) == 0)
01831 {
01832 resource_info.window_group=(char *) NULL;
01833 if (*option == '+')
01834 break;
01835 i++;
01836 if (i == (long) argc)
01837 ThrowDisplayException(OptionError,"MissingArgument",option);
01838 if (strtod(argv[i],(char **) NULL) != 0)
01839 resource_info.window_group=argv[i];
01840 break;
01841 }
01842 if (LocaleCompare("write",option+1) == 0)
01843 {
01844 resource_info.write_filename=(char *) NULL;
01845 if (*option == '+')
01846 break;
01847 i++;
01848 if (i == (long) argc)
01849 ThrowDisplayException(OptionError,"MissingArgument",option);
01850 resource_info.write_filename=argv[i];
01851 if (IsPathAccessible(resource_info.write_filename) != MagickFalse)
01852 {
01853 char
01854 answer[2],
01855 *p;
01856
01857 (void) fprintf(stderr,"Overwrite %s? ",
01858 resource_info.write_filename);
01859 p=fgets(answer,(int) sizeof(answer),stdin);
01860 if (((*answer != 'y') && (*answer != 'Y')))
01861 return(MagickFalse);
01862 }
01863 break;
01864 }
01865 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01866 }
01867 case '?':
01868 break;
01869 default:
01870 ThrowDisplayException(OptionError,"UnrecognizedOption",option);
01871 }
01872 fire=ParseMagickOption(MagickImageListOptions,MagickFalse,option+1) < 0 ?
01873 MagickFalse : MagickTrue;
01874 if (fire != MagickFalse)
01875 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
01876 }
01877 if (k != 0)
01878 ThrowDisplayException(OptionError,"UnbalancedParenthesis",argv[i]);
01879 if (state & RetainColorsState)
01880 {
01881 XRetainWindowColors(display,XRootWindow(display,XDefaultScreen(display)));
01882 (void) XSync(display,MagickFalse);
01883 }
01884 DestroyDisplay();
01885 return(status != 0 ? MagickTrue : MagickFalse);
01886 #else
01887 (void) argc;
01888 (void) argv;
01889 (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
01890 "DelegateLibrarySupportNotBuiltIn","`%s' (X11)",image_info->filename);
01891 return(DisplayUsage());
01892 #endif
01893 }