44#include "wand/studio.h"
45#include "wand/MagickWand.h"
46#include "wand/mogrify-private.h"
47#include "magick/string-private.h"
48#include "magick/image-private.h"
49#include "magick/xwindow-private.h"
94static MagickBooleanType ImportUsage(
void)
98 " -debug events display copious debugging information\n"
99 " -help print program options\n"
100 " -list type print a list of supported option arguments\n"
101 " -log format format of debugging information\n"
102 " -version print version information",
104 " -annotate geometry text\n"
105 " annotate the image with text\n"
106 " -colors value preferred number of colors in the image\n"
107 " -crop geometry preferred size and location of the cropped image\n"
108 " -encipher filename convert plain pixels to cipher pixels\n"
109 " -geometry geometry preferred size or location of the image\n"
110 " -help print program options\n"
111 " -monochrome transform image to black and white\n"
112 " -negate replace every pixel with its complementary color \n"
113 " -quantize colorspace reduce colors in this colorspace\n"
114 " -resize geometry resize the image\n"
115 " -rotate degrees apply Paeth rotation to the image\n"
116 " -strip strip image of all profiles and comments\n"
117 " -thumbnail geometry create a thumbnail of the image\n"
118 " -transparent color make this color transparent within the image\n"
119 " -trim trim image edges\n"
120 " -type type image type",
122 " -adjoin join images into a single multi-image file\n"
123 " -border include window border in the output image\n"
124 " -channel type apply option to select image channels\n"
125 " -colorspace type alternate image colorspace\n"
126 " -comment string annotate image with comment\n"
127 " -compress type type of pixel compression when writing the image\n"
128 " -define format:option\n"
129 " define one or more image format options\n"
130 " -density geometry horizontal and vertical density of the image\n"
131 " -depth value image depth\n"
132 " -descend obtain image by descending window hierarchy\n"
133 " -display server X server to contact\n"
134 " -dispose method layer disposal method\n"
135 " -dither method apply error diffusion to image\n"
136 " -delay value display the next image after pausing\n"
137 " -encipher filename convert plain pixels to cipher pixels\n"
138 " -endian type endianness (MSB or LSB) of the image\n"
139 " -encoding type text encoding type\n"
140 " -filter type use this filter when resizing an image\n"
141 " -format \"string\" output formatted image characteristics\n"
142 " -frame include window manager frame\n"
143 " -gravity direction which direction to gravitate towards\n"
144 " -identify identify the format and characteristics of the image\n"
145 " -interlace type None, Line, Plane, or Partition\n"
146 " -interpolate method pixel color interpolation method\n"
147 " -label string assign a label to an image\n"
148 " -limit type value Area, Disk, Map, or Memory resource limit\n"
149 " -monitor monitor progress\n"
150 " -page geometry size and location of an image canvas\n"
151 " -pause seconds seconds delay between snapshots\n"
152 " -pointsize value font point size\n"
153 " -quality value JPEG/MIFF/PNG compression level\n"
154 " -quiet suppress all warning messages\n"
155 " -regard-warnings pay attention to warning messages\n"
156 " -repage geometry size and location of an image canvas\n"
157 " -respect-parentheses settings remain in effect until parenthesis boundary\n"
158 " -sampling-factor geometry\n"
159 " horizontal and vertical sampling factor\n"
160 " -scene value image scene number\n"
161 " -screen select image from root window\n"
162 " -seed value seed a new sequence of pseudo-random numbers\n"
163 " -set property value set an image property\n"
164 " -silent operate silently, i.e. don't ring any bells \n"
165 " -snaps value number of screen snapshots\n"
166 " -support factor resize support: > 1.0 is blurry, < 1.0 is sharp\n"
167 " -synchronize synchronize image to storage device\n"
168 " -taint declare the image as modified\n"
169 " -transparent-color color\n"
170 " transparent color\n"
171 " -treedepth value color tree depth\n"
172 " -verbose print detailed information about the image\n"
173 " -virtual-pixel method\n"
174 " Constant, Edge, Mirror, or Tile\n"
175 " -window id select window with this id or name";
177 ListMagickVersion(stdout);
178 (void) printf(
"Usage: %s [options ...] [ file ]\n",GetClientName());
179 (void) printf(
"\nImage Settings:\n");
180 (void) puts(settings);
181 (void) printf(
"\nImage Operators:\n");
182 (void) puts(operators);
183 (void) printf(
"\nMiscellaneous Options:\n");
184 (void) puts(miscellaneous);
186 "\nBy default, 'file' is written in the MIFF image format. To\n");
188 "specify a particular image format, precede the filename with an image\n");
190 "format name and a colon (i.e. ps:image) or specify the image type as\n");
192 "the filename suffix (i.e. image.ps). Specify 'file' as '-' for\n");
193 (void) printf(
"standard input or output.\n");
197WandExport MagickBooleanType ImportImageCommand(ImageInfo *image_info,
198 int argc,
char **argv,
char **wand_unused(metadata),ExceptionInfo *exception)
200#if defined(MAGICKCORE_X11_DELEGATE)
201#define DestroyImport() \
203 XDestroyResourceInfo(&resource_info); \
204 if (display != (Display *) NULL) \
206 XCloseDisplay(display); \
207 display=(Display *) NULL; \
209 DestroyImageStack(); \
210 if (target_window != (char *) NULL) \
211 target_window=DestroyString(target_window); \
212 for (i=0; i < (ssize_t) argc; i++) \
213 argv[i]=DestroyString(argv[i]); \
214 argv=(char **) RelinquishMagickMemory(argv); \
216#define ThrowImportException(asperity,tag,option) \
218 (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
221 return(MagickFalse); \
223#define ThrowImportInvalidArgumentException(option,argument) \
225 (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
226 "InvalidArgument","`%s': %s",option,argument); \
228 return(MagickFalse); \
245 image_stack[MaxImageStackDepth+1];
275 wand_unreferenced(metadata);
280 assert(image_info != (ImageInfo *) NULL);
281 assert(image_info->signature == MagickCoreSignature);
282 assert(exception != (ExceptionInfo *) NULL);
283 if (IsEventLogging() != MagickFalse)
284 (void) LogMagickEvent(TraceEvent,GetMagickModule(),
"...");
288 if ((LocaleCompare(
"version",option+1) == 0) ||
289 (LocaleCompare(
"-version",option+1) == 0))
291 ListMagickVersion(stdout);
295 display=(Display *) NULL;
299 option=(
char *) NULL;
301 resource_database=(XrmDatabase) NULL;
302 respect_parenthesis=MagickFalse;
303 (void) memset(&resource_info,0,
sizeof(resource_info));
304 server_name=(
char *) NULL;
307 target_window=(
char *) NULL;
311 ReadCommandlLine(argc,&argv);
312 status=ExpandFilenames(&argc,&argv);
313 if (status == MagickFalse)
314 ThrowImportException(ResourceLimitError,
"MemoryAllocationFailed",
315 GetExceptionMessage(errno));
316 for (i=1; i < (ssize_t) argc; i++)
322 if (IsCommandOption(option) == MagickFalse)
324 if (LocaleCompare(
"display",option+1) == 0)
330 if (i == (ssize_t) argc)
331 ThrowImportException(OptionError,
"MissingArgument",option);
334 if ((LocaleCompare(
"help",option+1) == 0) ||
335 (LocaleCompare(
"-help",option+1) == 0))
338 return(ImportUsage());
344 display=XOpenDisplay(server_name);
345 if (display == (Display *) NULL)
346 ThrowImportException(XServerError,
"UnableToOpenXServer",
347 XDisplayName(server_name));
348 (void) XSetErrorHandler(XError);
349 resource_database=XGetResourceDatabase(display,GetClientName());
350 XGetImportInfo(&ximage_info);
351 XGetResourceInfo(image_info,resource_database,GetClientName(),
353 quantize_info=resource_info.quantize_info;
354 resource_value=XGetResourceInstance(resource_database,GetClientName(),
356 ximage_info.borders=IsMagickTrue(resource_value);
357 resource_value=XGetResourceInstance(resource_database,GetClientName(),
359 resource_info.delay=(
unsigned int) StringToUnsignedLong(resource_value);
360 image_info->density=XGetResourceInstance(resource_database,GetClientName(),
361 "density",(
char *) NULL);
362 resource_value=XGetResourceInstance(resource_database,GetClientName(),
364 ximage_info.descend=IsMagickTrue(resource_value);
365 resource_value=XGetResourceInstance(resource_database,GetClientName(),
367 ximage_info.frame=IsMagickTrue(resource_value);
368 resource_value=XGetResourceInstance(resource_database,GetClientName(),
370 image_info->interlace=UndefinedInterlace;
371 if (LocaleCompare(
"None",resource_value) == 0)
372 image_info->interlace=NoInterlace;
373 if (LocaleCompare(
"Line",resource_value) == 0)
374 image_info->interlace=LineInterlace;
375 if (LocaleCompare(
"Plane",resource_value) == 0)
376 image_info->interlace=PlaneInterlace;
377 if (LocaleCompare(
"Partition",resource_value) == 0)
378 image_info->interlace=PartitionInterlace;
379 if (image_info->interlace == UndefinedInterlace)
380 ThrowImportException(OptionError,
"Unrecognized interlace type",
382 image_info->page=XGetResourceInstance(resource_database,GetClientName(),
383 "pageGeometry",(
char *) NULL);
384 resource_value=XGetResourceInstance(resource_database,GetClientName(),
386 resource_info.pause=(
unsigned int) StringToUnsignedLong(resource_value);
387 resource_value=XGetResourceInstance(resource_database,GetClientName(),
389 image_info->quality=StringToUnsignedLong(resource_value);
390 resource_value=XGetResourceInstance(resource_database,GetClientName(),
392 ximage_info.screen=IsMagickTrue(resource_value);
393 resource_value=XGetResourceInstance(resource_database,GetClientName(),
395 ximage_info.silent=IsMagickTrue(resource_value);
396 resource_value=XGetResourceInstance(resource_database,GetClientName(),
398 image_info->verbose=IsMagickTrue(resource_value);
399 resource_value=XGetResourceInstance(resource_database,GetClientName(),
401 quantize_info->dither=IsMagickTrue(resource_value);
404 filename=(
char *) NULL;
408 for (i=1; i < (ssize_t) argc; i++)
411 if (LocaleCompare(option,
"(") == 0)
413 FireImageStack(MagickFalse,MagickTrue,pend);
414 if (k == MaxImageStackDepth)
415 ThrowImportException(OptionError,
"ParenthesisNestedTooDeeply",
420 if (LocaleCompare(option,
")") == 0)
422 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
424 ThrowImportException(OptionError,
"UnableToParseExpression",option);
428 if (IsCommandOption(option) == MagickFalse)
439 FireImageStack(MagickFalse,MagickFalse,pend);
441 if (target_window != (
char *) NULL)
442 (void) CopyMagickString(image_info->filename,target_window,
444 for (scene=0; scene < (size_t) MagickMax(snapshots,1); scene++)
446 MagickDelay(1000*resource_info.pause);
447 images=XImportImage(image_info,&ximage_info);
448 status&=(images != (Image *) NULL) &&
449 (exception->severity < ErrorException);
450 if (images == (Image *) NULL)
452 (void) CopyMagickString(images->filename,filename,MaxTextExtent);
453 (void) CopyMagickString(images->magick,
"PS",MaxTextExtent);
455 AppendImageStack(images);
459 pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
464 if (LocaleCompare(
"adjoin",option+1) == 0)
466 if (LocaleCompare(
"annotate",option+1) == 0)
471 if (i == (ssize_t) argc)
472 ThrowImportException(OptionError,
"MissingArgument",option);
473 if (IsGeometry(argv[i]) == MagickFalse)
474 ThrowImportInvalidArgumentException(option,argv[i]);
475 if (i == (ssize_t) argc)
476 ThrowImportException(OptionError,
"MissingArgument",option);
480 ThrowImportException(OptionError,
"UnrecognizedOption",option);
484 if (LocaleCompare(
"border",option+1) == 0)
486 (void) CopyMagickString(argv[i]+1,
"sans",MaxTextExtent);
487 ximage_info.borders=(*option ==
'-') ? MagickTrue : MagickFalse;
490 if (LocaleCompare(
"bordercolor",option+1) == 0)
495 if (i == (ssize_t) argc)
496 ThrowImportException(OptionError,
"MissingArgument",option);
499 ThrowImportException(OptionError,
"UnrecognizedOption",option);
503 if (LocaleCompare(
"cache",option+1) == 0)
508 if (i == (ssize_t) argc)
509 ThrowImportException(OptionError,
"MissingArgument",option);
510 if (IsGeometry(argv[i]) == MagickFalse)
511 ThrowImportInvalidArgumentException(option,argv[i]);
514 if (LocaleCompare(
"channel",option+1) == 0)
522 if (i == (ssize_t) argc)
523 ThrowImportException(OptionError,
"MissingArgument",option);
524 channel=ParseChannelOption(argv[i]);
526 ThrowImportException(OptionError,
"UnrecognizedChannelType",
530 if (LocaleCompare(
"colors",option+1) == 0)
532 quantize_info->number_colors=0;
536 if (i == (ssize_t) argc)
537 ThrowImportException(OptionError,
"MissingArgument",option);
538 if (IsGeometry(argv[i]) == MagickFalse)
539 ThrowImportInvalidArgumentException(option,argv[i]);
540 quantize_info->number_colors=StringToUnsignedLong(argv[i]);
543 if (LocaleCompare(
"colorspace",option+1) == 0)
551 if (i == (ssize_t) argc)
552 ThrowImportException(OptionError,
"MissingArgument",option);
553 colorspace=ParseCommandOption(MagickColorspaceOptions,MagickFalse,
556 ThrowImportException(OptionError,
"UnrecognizedColorspace",
560 if (LocaleCompare(
"comment",option+1) == 0)
565 if (i == (ssize_t) argc)
566 ThrowImportException(OptionError,
"MissingArgument",option);
567 status=SetImageOption(image_info,
"comment",argv[i]);
568 if (status == MagickFalse)
569 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
572 if (LocaleCompare(
"compress",option+1) == 0)
580 if (i == (ssize_t) argc)
581 ThrowImportException(OptionError,
"MissingArgument",option);
582 compress=ParseCommandOption(MagickCompressOptions,MagickFalse,
585 ThrowImportException(OptionError,
"UnrecognizedImageCompression",
589 if (LocaleCompare(
"concurrent",option+1) == 0)
591 if (LocaleCompare(
"crop",option+1) == 0)
596 if (i == (ssize_t) argc)
597 ThrowImportException(OptionError,
"MissingArgument",option);
598 if (IsGeometry(argv[i]) == MagickFalse)
599 ThrowImportInvalidArgumentException(option,argv[i]);
602 ThrowImportException(OptionError,
"UnrecognizedOption",option);
606 if (LocaleCompare(
"debug",option+1) == 0)
614 if (i == (ssize_t) argc)
615 ThrowImportException(OptionError,
"MissingArgument",option);
616 event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]);
618 ThrowImportException(OptionError,
"UnrecognizedEventType",argv[i]);
619 (void) SetLogEventMask(argv[i]);
622 if (LocaleCompare(
"define",option+1) == 0)
625 if (i == (ssize_t) argc)
626 ThrowImportException(OptionError,
"MissingArgument",option);
632 define=GetImageOption(image_info,argv[i]);
633 if (define == (
char *) NULL)
634 ThrowImportException(OptionError,
"NoSuchOption",argv[i]);
639 if (LocaleCompare(
"delay",option+1) == 0)
644 if (i == (ssize_t) argc)
645 ThrowImportException(OptionError,
"MissingArgument",option);
646 if (IsGeometry(argv[i]) == MagickFalse)
647 ThrowImportInvalidArgumentException(option,argv[i]);
648 status=SetImageOption(image_info,
"delay",argv[i]);
649 if (status == MagickFalse)
650 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
653 if (LocaleCompare(
"density",option+1) == 0)
658 if (i == (ssize_t) argc)
659 ThrowImportException(OptionError,
"MissingArgument",option);
660 if (IsGeometry(argv[i]) == MagickFalse)
661 ThrowImportInvalidArgumentException(option,argv[i]);
664 if (LocaleCompare(
"depth",option+1) == 0)
669 if (i == (ssize_t) argc)
670 ThrowImportException(OptionError,
"MissingArgument",option);
671 if (IsGeometry(argv[i]) == MagickFalse)
672 ThrowImportInvalidArgumentException(option,argv[i]);
675 if (LocaleCompare(
"descend",option+1) == 0)
677 ximage_info.descend=(*option ==
'-') ? MagickTrue : MagickFalse;
680 if (LocaleCompare(
"display",option+1) == 0)
685 if (i == (ssize_t) argc)
686 ThrowImportException(OptionError,
"MissingArgument",option);
689 if (LocaleCompare(
"dispose",option+1) == 0)
697 if (i == (ssize_t) argc)
698 ThrowImportException(OptionError,
"MissingArgument",option);
699 dispose=ParseCommandOption(MagickDisposeOptions,MagickFalse,argv[i]);
701 ThrowImportException(OptionError,
"UnrecognizedDisposeMethod",
705 if (LocaleCompare(
"dither",option+1) == 0)
710 quantize_info->dither=MagickFalse;
714 if (i == (ssize_t) argc)
715 ThrowImportException(OptionError,
"MissingArgument",option);
716 method=ParseCommandOption(MagickDitherOptions,MagickFalse,argv[i]);
718 ThrowImportException(OptionError,
"UnrecognizedDitherMethod",
720 quantize_info->dither=MagickTrue;
721 quantize_info->dither_method=(DitherMethod) method;
724 if (LocaleCompare(
"duration",option+1) == 0)
729 if (i == (ssize_t) argc)
730 ThrowImportException(OptionError,
"MissingArgument",option);
731 if (IsGeometry(argv[i]) == MagickFalse)
732 ThrowImportInvalidArgumentException(option,argv[i]);
735 ThrowImportException(OptionError,
"UnrecognizedOption",option);
739 if (LocaleCompare(
"encipher",option+1) == 0)
744 if (i == (ssize_t) argc)
745 ThrowImportException(OptionError,
"MissingArgument",option);
748 if (LocaleCompare(
"encoding",option+1) == 0)
753 if (i == (ssize_t) argc)
754 ThrowImportException(OptionError,
"MissingArgument",option);
757 if (LocaleCompare(
"endian",option+1) == 0)
765 if (i == (ssize_t) argc)
766 ThrowImportException(OptionError,
"MissingArgument",option);
767 endian=ParseCommandOption(MagickEndianOptions,MagickFalse,
770 ThrowImportException(OptionError,
"UnrecognizedEndianType",
774 ThrowImportException(OptionError,
"UnrecognizedOption",option);
778 if (LocaleCompare(
"filter",option+1) == 0)
786 if (i == (ssize_t) argc)
787 ThrowImportException(OptionError,
"MissingArgument",option);
788 filter=ParseCommandOption(MagickFilterOptions,MagickFalse,argv[i]);
790 ThrowImportException(OptionError,
"UnrecognizedImageFilter",
794 if (LocaleCompare(
"frame",option+1) == 0)
796 (void) CopyMagickString(argv[i]+1,
"sans0",MaxTextExtent);
797 ximage_info.frame=(*option ==
'-') ? MagickTrue : MagickFalse;
800 if (LocaleCompare(
"format",option+1) == 0)
805 if (i == (ssize_t) argc)
806 ThrowImportException(OptionError,
"MissingArgument",option);
809 ThrowImportException(OptionError,
"UnrecognizedOption",option);
813 if (LocaleCompare(
"geometry",option+1) == 0)
818 if (i == (ssize_t) argc)
819 ThrowImportException(OptionError,
"MissingArgument",option);
820 if (IsGeometry(argv[i]) == MagickFalse)
821 ThrowImportInvalidArgumentException(option,argv[i]);
824 if (LocaleCompare(
"gravity",option+1) == 0)
832 if (i == (ssize_t) argc)
833 ThrowImportException(OptionError,
"MissingArgument",option);
834 gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,argv[i]);
836 ThrowImportException(OptionError,
"UnrecognizedGravityType",
840 ThrowImportException(OptionError,
"UnrecognizedOption",option);
844 if (LocaleCompare(
"help",option+1) == 0)
846 ThrowImportException(OptionError,
"UnrecognizedOption",option);
850 if (LocaleCompare(
"identify",option+1) == 0)
852 if (LocaleCompare(
"interlace",option+1) == 0)
860 if (i == (ssize_t) argc)
861 ThrowImportException(OptionError,
"MissingArgument",option);
862 interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse,
865 ThrowImportException(OptionError,
"UnrecognizedInterlaceType",
869 if (LocaleCompare(
"interpolate",option+1) == 0)
877 if (i == (ssize_t) argc)
878 ThrowImportException(OptionError,
"MissingArgument",option);
879 interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse,
882 ThrowImportException(OptionError,
"UnrecognizedInterpolateMethod",
886 ThrowImportException(OptionError,
"UnrecognizedOption",option);
890 if (LocaleCompare(
"label",option+1) == 0)
895 if (i == (ssize_t) argc)
896 ThrowImportException(OptionError,
"MissingArgument",option);
897 status=SetImageOption(image_info,
"label",argv[i]);
898 if (status == MagickFalse)
899 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
902 if (LocaleCompare(
"limit",option+1) == 0)
916 if (i == (ssize_t) argc)
917 ThrowImportException(OptionError,
"MissingArgument",option);
918 resource=ParseCommandOption(MagickResourceOptions,MagickFalse,
921 ThrowImportException(OptionError,
"UnrecognizedResourceType",
924 if (i == (ssize_t) argc)
925 ThrowImportException(OptionError,
"MissingArgument",option);
926 value=StringToDouble(argv[i],&p);
928 if ((p == argv[i]) && (LocaleCompare(
"unlimited",argv[i]) != 0))
929 ThrowImportInvalidArgumentException(option,argv[i]);
932 if (LocaleCompare(
"list",option+1) == 0)
940 if (i == (ssize_t) argc)
941 ThrowImportException(OptionError,
"MissingArgument",option);
942 list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]);
944 ThrowImportException(OptionError,
"UnrecognizedListType",argv[i]);
945 status=MogrifyImageInfo(image_info,(
int) (i-j+1),(
const char **)
948 return(status == 0 ? MagickFalse : MagickTrue);
950 if (LocaleCompare(
"log",option+1) == 0)
955 if ((i == (ssize_t) argc) || (strchr(argv[i],
'%') == (
char *) NULL))
956 ThrowImportException(OptionError,
"MissingArgument",option);
959 ThrowImportException(OptionError,
"UnrecognizedOption",option);
963 if (LocaleCompare(
"monitor",option+1) == 0)
965 if (LocaleCompare(
"monochrome",option+1) == 0)
969 quantize_info->number_colors=2;
970 quantize_info->colorspace=GRAYColorspace;
973 ThrowImportException(OptionError,
"UnrecognizedOption",option);
977 if (LocaleCompare(
"negate",option+1) == 0)
979 ThrowImportException(OptionError,
"UnrecognizedOption",option);
983 if (LocaleCompare(
"page",option+1) == 0)
988 if (i == (ssize_t) argc)
989 ThrowImportException(OptionError,
"MissingArgument",option);
990 status=SetImageOption(image_info,
"page",argv[i]);
991 if (status == MagickFalse)
992 ThrowImportException(OptionError,
"UnrecognizedOption",argv[i]);
995 if (LocaleCompare(
"pause",option+1) == 0)
997 resource_info.pause=0;
1001 if (i == (ssize_t) argc)
1002 ThrowImportException(OptionError,
"MissingArgument",option);
1003 if (IsGeometry(argv[i]) == MagickFalse)
1004 ThrowImportInvalidArgumentException(option,argv[i]);
1005 resource_info.pause=(
unsigned int) StringToUnsignedLong(argv[i]);
1008 if (LocaleCompare(
"ping",option+1) == 0)
1010 if (LocaleCompare(
"pointsize",option+1) == 0)
1015 if (i == (ssize_t) argc)
1016 ThrowImportException(OptionError,
"MissingArgument",option);
1017 if (IsGeometry(argv[i]) == MagickFalse)
1018 ThrowImportInvalidArgumentException(option,argv[i]);
1021 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1025 if (LocaleCompare(
"quality",option+1) == 0)
1030 if (i == (ssize_t) argc)
1031 ThrowImportException(OptionError,
"MissingArgument",option);
1032 if (IsGeometry(argv[i]) == MagickFalse)
1033 ThrowImportInvalidArgumentException(option,argv[i]);
1036 if (LocaleCompare(
"quantize",option+1) == 0)
1044 if (i == (ssize_t) argc)
1045 ThrowImportException(OptionError,
"MissingArgument",option);
1046 colorspace=ParseCommandOption(MagickColorspaceOptions,
1047 MagickFalse,argv[i]);
1049 ThrowImportException(OptionError,
"UnrecognizedColorspace",
1053 if (LocaleCompare(
"quiet",option+1) == 0)
1055 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1059 if (LocaleCompare(
"regard-warnings",option+1) == 0)
1061 if (LocaleCompare(
"repage",option+1) == 0)
1066 if (i == (ssize_t) argc)
1067 ThrowImportException(OptionError,
"MissingArgument",option);
1068 if (IsGeometry(argv[i]) == MagickFalse)
1069 ThrowImportInvalidArgumentException(option,argv[i]);
1072 if (LocaleCompare(
"resize",option+1) == 0)
1077 if (i == (ssize_t) argc)
1078 ThrowImportException(OptionError,
"MissingArgument",option);
1079 if (IsGeometry(argv[i]) == MagickFalse)
1080 ThrowImportInvalidArgumentException(option,argv[i]);
1083 if (LocaleNCompare(
"respect-parentheses",option+1,17) == 0)
1085 respect_parenthesis=(*option ==
'-') ? MagickTrue : MagickFalse;
1088 if (LocaleCompare(
"rotate",option+1) == 0)
1091 if (i == (ssize_t) argc)
1092 ThrowImportException(OptionError,
"MissingArgument",option);
1093 if (IsGeometry(argv[i]) == MagickFalse)
1094 ThrowImportInvalidArgumentException(option,argv[i]);
1097 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1101 if (LocaleCompare(
"sampling-factor",option+1) == 0)
1106 if (i == (ssize_t) argc)
1107 ThrowImportException(OptionError,
"MissingArgument",option);
1108 if (IsGeometry(argv[i]) == MagickFalse)
1109 ThrowImportInvalidArgumentException(option,argv[i]);
1112 if (LocaleCompare(
"scene",option+1) == 0)
1117 if (i == (ssize_t) argc)
1118 ThrowImportException(OptionError,
"MissingArgument",option);
1119 if (IsGeometry(argv[i]) == MagickFalse)
1120 ThrowImportInvalidArgumentException(option,argv[i]);
1123 if (LocaleCompare(
"set",option+1) == 0)
1126 if (i == (ssize_t) argc)
1127 ThrowImportException(OptionError,
"MissingArgument",option);
1131 if (i == (ssize_t) argc)
1132 ThrowImportException(OptionError,
"MissingArgument",option);
1135 if (LocaleCompare(
"screen",option+1) == 0)
1137 ximage_info.screen=(*option ==
'-') ? MagickTrue : MagickFalse;
1140 if (LocaleCompare(
"seed",option+1) == 0)
1145 if (i == (ssize_t) argc)
1146 ThrowImportException(OptionError,
"MissingArgument",option);
1147 if (IsGeometry(argv[i]) == MagickFalse)
1148 ThrowImportInvalidArgumentException(option,argv[i]);
1151 if (LocaleCompare(
"silent",option+1) == 0)
1153 ximage_info.silent=(*option ==
'-') ? MagickTrue : MagickFalse;
1156 if (LocaleCompare(
"snaps",option+1) == 0)
1158 (void) CopyMagickString(argv[i]+1,
"sans",MaxTextExtent);
1160 if (i == (ssize_t) argc)
1161 ThrowImportException(OptionError,
"MissingArgument",option);
1162 if (IsGeometry(argv[i]) == MagickFalse)
1163 ThrowImportInvalidArgumentException(option,argv[i]);
1164 snapshots=(ssize_t) StringToLong(argv[i]);
1167 if (LocaleCompare(
"strip",option+1) == 0)
1169 if (LocaleCompare(
"support",option+1) == 0)
1174 if (LocaleCompare(
"synchronize",option+1) == 0)
1176 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1180 if (LocaleCompare(
"taint",option+1) == 0)
1182 if (LocaleCompare(
"thumbnail",option+1) == 0)
1187 if (i == (ssize_t) argc)
1188 ThrowImportException(OptionError,
"MissingArgument",option);
1189 if (IsGeometry(argv[i]) == MagickFalse)
1190 ThrowImportInvalidArgumentException(option,argv[i]);
1193 if (LocaleCompare(
"transparent",option+1) == 0)
1196 if (i == (ssize_t) argc)
1197 ThrowImportException(OptionError,
"MissingArgument",option);
1200 if (LocaleCompare(
"transparent-color",option+1) == 0)
1205 if (i == (ssize_t) argc)
1206 ThrowImportException(OptionError,
"MissingArgument",option);
1209 if (LocaleCompare(
"treedepth",option+1) == 0)
1211 quantize_info->tree_depth=0;
1215 if (i == (ssize_t) argc)
1216 ThrowImportException(OptionError,
"MissingArgument",option);
1217 if (IsGeometry(argv[i]) == MagickFalse)
1218 ThrowImportInvalidArgumentException(option,argv[i]);
1219 quantize_info->tree_depth=StringToUnsignedLong(argv[i]);
1222 if (LocaleCompare(
"trim",option+1) == 0)
1224 if (LocaleCompare(
"type",option+1) == 0)
1232 if (i == (ssize_t) argc)
1233 ThrowImportException(OptionError,
"MissingArgument",option);
1234 type=ParseCommandOption(MagickTypeOptions,MagickFalse,argv[i]);
1236 ThrowImportException(OptionError,
"UnrecognizedImageType",argv[i]);
1239 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1244 if (i == (ssize_t) argc)
1245 ThrowImportException(OptionError,
"MissingArgument",option);
1246 (void) CloneString(&target_window,argv[i]);
1251 if (LocaleCompare(
"verbose",option+1) == 0)
1253 if ((LocaleCompare(
"version",option+1) == 0) ||
1254 (LocaleCompare(
"-version",option+1) == 0))
1256 ListMagickVersion(stdout);
1259 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1264 ThrowImportException(OptionError,
"UnrecognizedOption",option);
1266 fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) &
1267 FireOptionFlag) == 0 ? MagickFalse : MagickTrue;
1268 if (fire != MagickFalse)
1269 FireImageStack(MagickFalse,MagickTrue,MagickTrue);
1272 ThrowImportException(OptionError,
"UnbalancedParenthesis",argv[i]);
1273 if (i-- != (ssize_t) argc)
1274 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[i]);
1275 if (image == (Image *) NULL)
1276 ThrowImportException(OptionError,
"MissingAnImageFilename",argv[argc-1]);
1277 FinalizeImageSettings(image_info,image,MagickTrue);
1278 status&=WriteImages(image_info,image,filename,exception);
1280 return(status != 0 ? MagickTrue : MagickFalse);
1282 magick_unreferenced(argc);
1283 magick_unreferenced(argv);
1284 magick_unreferenced(metadata);
1286 (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
1287 "DelegateLibrarySupportNotBuiltIn",
"`%s' (X11)",image_info->filename);
1288 return(ImportUsage());