13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
23ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                 IIIII  M   M  PPPP    OOO   RRRR   TTTTT                    %
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                   I    MM MM  P   P  O   O  R   R    T                      %
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                   I    M M M  PPPP   O   O  RRRR     T                      %
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                   I    M   M  P      O   O  R R      T                      %
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                 IIIII  M   M  P       OOO   R  R     T                      %
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                       Import Image from X11 Screen                          %
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                           Software Design                                   %
16de984cdc3631106b1cbbb8d3972b76a0fc27e8e8cristy%                                Cristy                                       %
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                              July 1992                                      %
183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
207ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy%  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization      %
213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  dedicated to making software imaging solutions freely available.           %
223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  You may not use this file except in compliance with the License.  You may  %
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  obtain a copy of the License at                                            %
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    http://www.imagemagick.org/script/license.php                            %
273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  Unless required by applicable law or agreed to in writing, software        %
293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  distributed under the License is distributed on an "AS IS" BASIS,          %
303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  See the License for the specific language governing permissions and        %
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  limitations under the License.                                             %
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  Use the import program to capture some or all of an X server screen and
373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  save the image to a file.
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Include declarations.
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
444c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/studio.h"
454c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/MagickWand.h"
464c08aed51c5899665ade97263692328eea4af106cristy#include "MagickWand/mogrify-private.h"
474c08aed51c5899665ade97263692328eea4af106cristy#include "MagickCore/string-private.h"
48a43c34d9560fee3ba49ca12b9f9cdd69b0ae4bd3cristy#include "MagickCore/image-private.h"
497832dc2d904c471770087cce18a9a2d76c2216a3cristy#include "MagickCore/xwindow-private.h"
503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy+   I m p o r t I m a g e C o m m a n d                                       %
573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%                                                                             %
603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  ImportImageCommand() reads an image from any visible window on an X server
633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  and outputs it as an image file. You can capture a single window, the
643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  entire screen, or any rectangular portion of the screen.  You can use the
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  display utility for redisplay, printing, editing, formatting, archiving,
6679b5c337cb49374c3e2642044aa52eba1263f47aglennrp%  image processing, etc. of the captured image.
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The target window can be specified by id, name, or may be selected by
693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  clicking the mouse in the desired window. If you press a button and then
703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  drag, a rectangle will form which expands and contracts as the mouse moves.
713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  To save the portion of the screen defined by the rectangle, just release
723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  the button. The keyboard bell is rung once at the beginning of the screen
733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  capture and twice when it completes.
743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  The format of the ImportImageCommand method is:
763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%      MagickBooleanType ImportImageCommand(ImageInfo *image_info,int argc,
783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%        char **argv,char **metadata,ExceptionInfo *exception)
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%  A description of each parameter follows:
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o image_info: the image info.
833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o argc: the number of elements in the argument vector.
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o argv: A text array containing the command line arguments.
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o metadata: any metadata is returned here.
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%    o exception: return any errors or warnings in this structure.
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy%
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristystatic MagickBooleanType ImportUsage(void)
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  const char
973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    **p;
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  static const char
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *miscellaneous[]=
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-debug events        display copious debugging information",
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-help                print program options",
1043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-list type           print a list of supported option arguments",
1053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-log format          format of debugging information",
1063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-version             print version information",
1073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (char *) NULL
1083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    },
1093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *operators[]=
1103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-annotate geometry text",
1123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "                     annotate the image with text",
1133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-colors value        preferred number of colors in the image",
1143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-crop geometry       preferred size and location of the cropped image",
1153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-encipher filename   convert plain pixels to cipher pixels",
116901f09dec8567f88ad6c73be08ce3c7043dd58a1cristy      "-geometry geometry   preferred size or location of the image",
1173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-help                print program options",
1183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-monochrome          transform image to black and white",
1193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-negate              replace every pixel with its complementary color ",
1203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-repage geometry     size and location of an image canvas",
1213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-quantize colorspace reduce colors in this colorspace",
1223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-resize geometry     resize the image",
1233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-rotate degrees      apply Paeth rotation to the image",
1243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-strip               strip image of all profiles and comments",
1253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-thumbnail geometry  create a thumbnail of the image",
1263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-transparent color   make this color transparent within the image",
1273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-trim                trim image edges",
1283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-type type           image type",
1293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (char *) NULL
1303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    },
1313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *settings[]=
1323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
1333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-adjoin              join images into a single multi-image file",
134079bd9ea1776cb6f59270dfa407e0d2bcd606ddfcristy      "-border              include window border in the output image",
1353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-channel type        apply option to select image channels",
1363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-colorspace type     alternate image colorspace",
1373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-comment string      annotate image with comment",
1383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-compress type       type of pixel compression when writing the image",
1393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-define format:option",
1403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "                     define one or more image format options",
1413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-density geometry    horizontal and vertical density of the image",
1423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-depth value         image depth",
1433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-descend             obtain image by descending window hierarchy",
1443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-display server      X server to contact",
1453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-dispose method      layer disposal method",
1463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-dither method       apply error diffusion to image",
1473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-delay value         display the next image after pausing",
1483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-encipher filename   convert plain pixels to cipher pixels",
1493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-endian type         endianness (MSB or LSB) of the image",
1503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-encoding type       text encoding type",
1513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-filter type         use this filter when resizing an image",
1523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-format \"string\"     output formatted image characteristics",
1533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-frame               include window manager frame",
1543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-gravity direction   which direction to gravitate towards",
1553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-identify            identify the format and characteristics of the image",
1563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-interlace type      None, Line, Plane, or Partition",
1573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-interpolate method  pixel color interpolation method",
1583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-label string        assign a label to an image",
1593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-limit type value    Area, Disk, Map, or Memory resource limit",
1603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-monitor             monitor progress",
1613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-page geometry       size and location of an image canvas",
1621fbf9dc346dfd2ed26e7ed81fb02e598681e7bb2cristy      "-pause seconds       seconds delay between snapshots",
1633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-pointsize value     font point size",
1643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-quality value       JPEG/MIFF/PNG compression level",
1653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-quiet               suppress all warning messages",
1663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-regard-warnings     pay attention to warning messages",
1673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-respect-parentheses settings remain in effect until parenthesis boundary",
1683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-sampling-factor geometry",
1693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "                     horizontal and vertical sampling factor",
1703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-scene value         image scene number",
1713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-screen              select image from root window",
1723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-seed value          seed a new sequence of pseudo-random numbers",
1733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-set property value  set an image property",
1743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-silent              operate silently, i.e. don't ring any bells ",
1753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-snaps value         number of screen snapshots",
176e9252c26b8f1dcf9d41023fb5918c2ce5e1f01c0cristy      "-support factor      resize support: > 1.0 is blurry, < 1.0 is sharp",
177d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy      "-synchronize         synchronize image to storage device",
178d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy      "-taint               declare the image as modified",
1793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-transparent-color color",
1803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "                     transparent color",
1813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-treedepth value     color tree depth",
1823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-verbose             print detailed information about the image",
1833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-virtual-pixel method",
1843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "                     Constant, Edge, Mirror, or Tile",
1853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      "-window id           select window with this id or name",
1863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      (char *) NULL
1873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    };
1883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1894f7a61361f38ef4d3eaae0c74b9964a57aee813acristy  ListMagickVersion(stdout);
1903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf("Usage: %s [options ...] [ file ]\n",
1913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    GetClientName());
1923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf("\nImage Settings:\n");
1933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for (p=settings; *p != (char *) NULL; p++)
1943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (void) printf("  %s\n",*p);
1953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf("\nImage Operators:\n");
1963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for (p=operators; *p != (char *) NULL; p++)
1973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (void) printf("  %s\n",*p);
1983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf("\nMiscellaneous Options:\n");
1993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  for (p=miscellaneous; *p != (char *) NULL; p++)
2003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (void) printf("  %s\n",*p);
2013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf(
2023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  "\nBy default, 'file' is written in the MIFF image format.  To\n");
2033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf(
2043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "specify a particular image format, precede the filename with an image\n");
2053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf(
2063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "format name and a colon (i.e. ps:image) or specify the image type as\n");
2073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf(
2083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "the filename suffix (i.e. image.ps).  Specify 'file' as '-' for\n");
2093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) printf("standard input or output.\n");
2103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(MagickFalse);
2113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2133ed852eea50f9d4cd633efb8c2b054b8e33c253cristyWandExport MagickBooleanType ImportImageCommand(ImageInfo *image_info,
2143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  int argc,char **argv,char **wand_unused(metadata),ExceptionInfo *exception)
2153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
2163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(MAGICKCORE_X11_DELEGATE)
2173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define DestroyImport() \
2183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \
2193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XDestroyResourceInfo(&resource_info); \
2203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (display != (Display *) NULL) \
2213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    { \
2223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      XCloseDisplay(display); \
2233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      display=(Display *) NULL; \
2243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    } \
2253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DestroyImageStack(); \
2263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (target_window != (char *) NULL) \
2273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    target_window=DestroyString(target_window); \
228bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  for (i=0; i < (ssize_t) argc; i++) \
2293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    argv[i]=DestroyString(argv[i]); \
2303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  argv=(char **) RelinquishMagickMemory(argv); \
2313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define ThrowImportException(asperity,tag,option) \
2333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \
234efe601ce9ea5ad34ad0e8ad6e61d9be9b148b2a3cristy  (void) ThrowMagickException(exception,GetMagickModule(),asperity,tag,"`%s'", \
2353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy     option); \
2363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DestroyImport(); \
2373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(MagickFalse); \
2383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#define ThrowImportInvalidArgumentException(option,argument) \
2403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{ \
2413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) ThrowMagickException(exception,GetMagickModule(),OptionError, \
242e5b39652d8d21bc3940d83b8d6088d4070a8a34aanthony    "InvalidArgument","'%s': %s",option,argument); \
2433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DestroyImport(); \
2443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(MagickFalse); \
2453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
2463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  char
2483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *filename,
2493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *option,
2503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *resource_value,
2513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *server_name,
2523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *target_window;
2533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Display
2553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *display;
2563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Image
2583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *image;
2593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ImageStack
2613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    image_stack[MaxImageStackDepth+1];
2623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickBooleanType
2643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    fire,
265ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy    pend,
266ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy    respect_parenthesis;
2673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickStatusType
2693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    status;
2703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  QuantizeInfo
2723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    *quantize_info;
2733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
274bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  register ssize_t
2753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    i;
2763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2779d314ff2c17a77996c05413c2013880387e50f0ecristy  ssize_t
2789d314ff2c17a77996c05413c2013880387e50f0ecristy    j,
2799d314ff2c17a77996c05413c2013880387e50f0ecristy    k,
2809d314ff2c17a77996c05413c2013880387e50f0ecristy    snapshots;
2819d314ff2c17a77996c05413c2013880387e50f0ecristy
2823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XImportInfo
2833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ximage_info;
2843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XResourceInfo
2863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    resource_info;
2873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XrmDatabase
2893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    resource_database;
2903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
2913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
2923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Set defaults.
2933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
2943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  assert(image_info != (ImageInfo *) NULL);
295e1c94d9d25db6b0dd7a5028ffee31d1057855d73cristy  assert(image_info->signature == MagickCoreSignature);
2963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image_info->debug != MagickFalse)
2973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
2983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  assert(exception != (ExceptionInfo *) NULL);
2993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (argc == 2)
3003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
3013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      option=argv[1];
3023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      if ((LocaleCompare("version",option+1) == 0) ||
3033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          (LocaleCompare("-version",option+1) == 0))
3043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        {
3054f7a61361f38ef4d3eaae0c74b9964a57aee813acristy          ListMagickVersion(stdout);
306df0b2915c254e43ac809a58d5bba39e57d16012eCristy          return(MagickTrue);
3073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        }
3083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
3093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  display=(Display *) NULL;
3103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  j=1;
3113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  k=0;
3123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  NewImageStack();
3133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  option=(char *) NULL;
3143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  pend=MagickFalse;
3153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_database=(XrmDatabase) NULL;
316ebbcfea9ab0a5066ff5f0b5257c9598ca77579d3cristy  respect_parenthesis=MagickFalse;
3173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) ResetMagickMemory(&resource_info,0,sizeof(resource_info));
3183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  server_name=(char *) NULL;
3193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  status=MagickTrue;
3203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SetNotifyHandlers;
3213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  target_window=(char *) NULL;
3223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
3233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Check for server name specified on the command line.
3243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
3253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ReadCommandlLine(argc,&argv);
3263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  status=ExpandFilenames(&argc,&argv);
3273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (status == MagickFalse)
3283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(ResourceLimitError,"MemoryAllocationFailed",
3293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      GetExceptionMessage(errno));
330bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  for (i=1; i < (ssize_t) argc; i++)
3313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
3323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    /*
3333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      Check command line for server name.
3343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    */
3353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    option=argv[i];
3363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    if (LocaleCompare("display",option+1) == 0)
3373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
3383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        /*
3393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          User specified server name.
3403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        */
3413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        i++;
342bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy        if (i == (ssize_t) argc)
3433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          ThrowImportException(OptionError,"MissingArgument",option);
3443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        server_name=argv[i];
3453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
3463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    if ((LocaleCompare("help",option+1) == 0) ||
3473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        (LocaleCompare("-help",option+1) == 0))
3483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      return(ImportUsage());
3493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  }
3503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
3513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Get user defaults from X resource database.
3523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
3533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  display=XOpenDisplay(server_name);
3543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (display == (Display *) NULL)
3553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(XServerError,"UnableToOpenXServer",
3563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      XDisplayName(server_name));
3573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) XSetErrorHandler(XError);
3583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_database=XGetResourceDatabase(display,GetClientName());
3593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XGetImportInfo(&ximage_info);
3603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  XGetResourceInfo(image_info,resource_database,GetClientName(),
3613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    &resource_info);
3623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  quantize_info=resource_info.quantize_info;
3633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "border","False");
3652e4501b56bdc589397786ecc59f8c2d206547a36anthony  ximage_info.borders=IsStringTrue(resource_value);
3663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "delay","0");
368e27293e706ca05b6b121e9512a83b16f7ad887f2cristy  resource_info.delay=(unsigned int) StringToUnsignedLong(resource_value);
3693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image_info->density=XGetResourceInstance(resource_database,GetClientName(),
3703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "density",(char *) NULL);
3713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
37264057b049640be82cf952fa3e01282917270850ecristy    "descend","False");
3732e4501b56bdc589397786ecc59f8c2d206547a36anthony  ximage_info.descend=IsStringTrue(resource_value);
3743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "frame","False");
3762e4501b56bdc589397786ecc59f8c2d206547a36anthony  ximage_info.frame=IsStringTrue(resource_value);
3773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "interlace","none");
3793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image_info->interlace=UndefinedInterlace;
3803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (LocaleCompare("None",resource_value) == 0)
3813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    image_info->interlace=NoInterlace;
3823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (LocaleCompare("Line",resource_value) == 0)
3833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    image_info->interlace=LineInterlace;
3843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (LocaleCompare("Plane",resource_value) == 0)
3853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    image_info->interlace=PlaneInterlace;
3863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (LocaleCompare("Partition",resource_value) == 0)
3873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    image_info->interlace=PartitionInterlace;
3883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image_info->interlace == UndefinedInterlace)
3893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(OptionError,"Unrecognized interlace type",
3903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      resource_value);
3913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  image_info->page=XGetResourceInstance(resource_database,GetClientName(),
3923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "pageGeometry",(char *) NULL);
3933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "pause","0");
395e27293e706ca05b6b121e9512a83b16f7ad887f2cristy  resource_info.pause=(unsigned int) StringToUnsignedLong(resource_value);
3963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
3973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "quality","85");
398e27293e706ca05b6b121e9512a83b16f7ad887f2cristy  image_info->quality=StringToUnsignedLong(resource_value);
3993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
4003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "screen","False");
4012e4501b56bdc589397786ecc59f8c2d206547a36anthony  ximage_info.screen=IsStringTrue(resource_value);
4023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
4033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "silent","False");
4042e4501b56bdc589397786ecc59f8c2d206547a36anthony  ximage_info.silent=IsStringTrue(resource_value);
4053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
4063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "verbose","False");
4072e4501b56bdc589397786ecc59f8c2d206547a36anthony  image_info->verbose=IsStringTrue(resource_value);
4083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  resource_value=XGetResourceInstance(resource_database,GetClientName(),
4093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    "dither","True");
410cbda611068350bf4459f2dda1951f8823702e129cristy  quantize_info->dither_method=IsStringTrue(resource_value) != MagickFalse ?
411cbda611068350bf4459f2dda1951f8823702e129cristy    RiemersmaDitherMethod : NoDitherMethod;
4123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  snapshots=1;
4133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  status=MagickTrue;
4143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  filename=(char *) NULL;
4153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  /*
4163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    Check command syntax.
4173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  */
418bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy  for (i=1; i < (ssize_t) argc; i++)
4193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  {
4203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    option=argv[i];
4213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    if (LocaleCompare(option,"(") == 0)
4223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
4233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        FireImageStack(MagickFalse,MagickTrue,pend);
4243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (k == MaxImageStackDepth)
4253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          ThrowImportException(OptionError,"ParenthesisNestedTooDeeply",
4263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            option);
4273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        PushImageStack();
4283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        continue;
4293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
4303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    if (LocaleCompare(option,")") == 0)
4313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
4323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        FireImageStack(MagickFalse,MagickTrue,MagickTrue);
4333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (k == 0)
4343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          ThrowImportException(OptionError,"UnableToParseExpression",option);
4353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        PopImageStack();
4363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        continue;
4373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
438042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy    if (IsCommandOption(option) == MagickFalse)
4393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
4403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        Image
4413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          *images;
4423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
443bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy        size_t
4443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          scene;
4453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
4463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        /*
4473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          Read image from X server.
4483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        */
4493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        FireImageStack(MagickFalse,MagickFalse,pend);
4503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        filename=argv[i];
4513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (target_window != (char *) NULL)
4523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          (void) CopyMagickString(image_info->filename,target_window,
453151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy            MagickPathExtent);
454bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy        for (scene=0; scene < (size_t) MagickMax(snapshots,1); scene++)
4553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        {
45666387d2b5d18e31609c476f1a88f7fc0389dc73aCristy          MagickDelay(1000*resource_info.pause);
4576710d8414f0ed06e4eaf9346366be72e2b4719efcristy          images=XImportImage(image_info,&ximage_info,exception);
4583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          status&=(images != (Image *) NULL) &&
4593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            (exception->severity < ErrorException);
4603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          if (images == (Image *) NULL)
4613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            continue;
462151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy          (void) CopyMagickString(images->filename,filename,MagickPathExtent);
463151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy          (void) CopyMagickString(images->magick,"PS",MagickPathExtent);
4643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          images->scene=scene;
4653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          AppendImageStack(images);
4663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        }
4673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        continue;
4683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
4693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    pend=image != (Image *) NULL ? MagickTrue : MagickFalse;
4703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    switch(*(option+1))
4713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    {
4723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'a':
4733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
4743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("adjoin",option+1) == 0)
4753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
4763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("annotate",option+1) == 0)
4773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
4783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
4793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
4803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
481e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
4823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
4833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
4843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
485e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
4863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
4873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
4883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
4893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
4903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
4913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
4923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'b':
4933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
4943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("border",option+1) == 0)
4953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
496151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy            (void) CopyMagickString(argv[i]+1,"sans",MagickPathExtent);
4973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            ximage_info.borders=(*option == '-') ? MagickTrue : MagickFalse;
4983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
4993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("bordercolor",option+1) == 0)
5013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
5023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
505bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
5073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
5103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
5113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'c':
5123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
5133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("cache",option+1) == 0)
5143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
5153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
518bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
5203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
5213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
5223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("channel",option+1) == 0)
5253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
526bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
5273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              channel;
5283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
532e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
5333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
5343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            channel=ParseChannelOption(argv[i]);
5353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (channel < 0)
5363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedChannelType",
5373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
5383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("colors",option+1) == 0)
5413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
5423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            quantize_info->number_colors=0;
5433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
546bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
5483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
5493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
550e27293e706ca05b6b121e9512a83b16f7ad887f2cristy            quantize_info->number_colors=StringToUnsignedLong(argv[i]);
5513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("colorspace",option+1) == 0)
5543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
555bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
5563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              colorspace;
5573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
561bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
563042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            colorspace=ParseCommandOption(MagickColorspaceOptions,MagickFalse,
5643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
5653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (colorspace < 0)
5663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedColorspace",
5673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
5683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("comment",option+1) == 0)
5713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
5723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
575bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
5773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            status=SetImageOption(image_info,"comment",argv[i]);
5783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (status == MagickFalse)
5793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedOption",argv[i]);
5803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("compress",option+1) == 0)
5833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
584bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
5853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              compress;
5863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
5873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
5883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
5893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
590bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
5913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
592042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            compress=ParseCommandOption(MagickCompressOptions,MagickFalse,
5933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
5943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (compress < 0)
5953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedImageCompression",
5963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
5973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
5983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
5992287975e02162155f1500d91ccce6e0fde5de7c8cristy        if (LocaleCompare("concurrent",option+1) == 0)
6002287975e02162155f1500d91ccce6e0fde5de7c8cristy          break;
6013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("crop",option+1) == 0)
6023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
606bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
6093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
6103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
6133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
6143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'd':
6153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
6163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("debug",option+1) == 0)
6173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
618bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
6193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              event;
6203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
624bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
626042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            event=ParseCommandOption(MagickLogEventOptions,MagickFalse,argv[i]);
6273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (event < 0)
6283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedEventType",argv[i]);
6293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            (void) SetLogEventMask(argv[i]);
6303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("define",option+1) == 0)
6333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
635bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              {
6393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                const char
6403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  *define;
6413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
6423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                define=GetImageOption(image_info,argv[i]);
6433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                if (define == (char *) NULL)
6443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                  ThrowImportException(OptionError,"NoSuchOption",argv[i]);
6453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                break;
6463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              }
6473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("delay",option+1) == 0)
6503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
654bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
6573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
6583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            status=SetImageOption(image_info,"delay",argv[i]);
6593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (status == MagickFalse)
6603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedOption",argv[i]);
6613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("density",option+1) == 0)
6643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
668bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
6713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
6723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("depth",option+1) == 0)
6753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
679bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
6823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
6833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("descend",option+1) == 0)
6863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            ximage_info.descend=(*option == '-') ? MagickTrue : MagickFalse;
6883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("display",option+1) == 0)
6913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
6923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
6933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
6943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
695bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
6963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
6973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
6983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
6993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("dispose",option+1) == 0)
7003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
701bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
7023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              dispose;
7033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
707bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
7083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
709042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            dispose=ParseCommandOption(MagickDisposeOptions,MagickFalse,argv[i]);
7103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (dispose < 0)
7113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedDisposeMethod",
7123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
7133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
7143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
7153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("dither",option+1) == 0)
7163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
717bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
7183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              method;
7193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
720cbda611068350bf4459f2dda1951f8823702e129cristy            quantize_info->dither_method=NoDitherMethod;
7213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
724bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
7253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
726042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            method=ParseCommandOption(MagickDitherOptions,MagickFalse,argv[i]);
7273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (method < 0)
7283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedDitherMethod",
7293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
7303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            quantize_info->dither_method=(DitherMethod) method;
7313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
7323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
7332287975e02162155f1500d91ccce6e0fde5de7c8cristy        if (LocaleCompare("duration",option+1) == 0)
7342287975e02162155f1500d91ccce6e0fde5de7c8cristy          {
7352287975e02162155f1500d91ccce6e0fde5de7c8cristy            if (*option == '+')
7362287975e02162155f1500d91ccce6e0fde5de7c8cristy              break;
7372287975e02162155f1500d91ccce6e0fde5de7c8cristy            i++;
738e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
7392287975e02162155f1500d91ccce6e0fde5de7c8cristy              ThrowImportException(OptionError,"MissingArgument",option);
7402287975e02162155f1500d91ccce6e0fde5de7c8cristy            if (IsGeometry(argv[i]) == MagickFalse)
7412287975e02162155f1500d91ccce6e0fde5de7c8cristy              ThrowImportInvalidArgumentException(option,argv[i]);
7422287975e02162155f1500d91ccce6e0fde5de7c8cristy            break;
7432287975e02162155f1500d91ccce6e0fde5de7c8cristy          }
7443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
7453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
7463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'e':
7473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
7483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("encipher",option+1) == 0)
7493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
7503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
753e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
7543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
7553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
7563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
7573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("encoding",option+1) == 0)
7583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
7593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
762bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
7633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
7643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
7653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
7663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("endian",option+1) == 0)
7673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
768bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
7693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              endian;
7703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
774bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
7753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
776042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            endian=ParseCommandOption(MagickEndianOptions,MagickFalse,
7773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
7783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (endian < 0)
7793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedEndianType",
7803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
7813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
7823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
7833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
7843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
7853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'f':
7863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
7873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("filter",option+1) == 0)
7883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
789bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
7903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              filter;
7913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
7923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
7933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
7943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
795e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
7963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
797042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            filter=ParseCommandOption(MagickFilterOptions,MagickFalse,argv[i]);
7983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (filter < 0)
7993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedImageFilter",
8003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
8013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("frame",option+1) == 0)
8043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
805151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy            (void) CopyMagickString(argv[i]+1,"sans0",MagickPathExtent);
8063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            ximage_info.frame=(*option == '-') ? MagickTrue : MagickFalse;
8073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("format",option+1) == 0)
8103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
8113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
8123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
8133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
814e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
8153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
8163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
8193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
8203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'g':
8213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
8223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("geometry",option+1) == 0)
8233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
8243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
8253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
8263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
827bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
8283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
8293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
8303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
8313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("gravity",option+1) == 0)
8343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
835bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
8363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              gravity;
8373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
8393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
8403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
841bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
8423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
843042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,argv[i]);
8443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (gravity < 0)
8453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedGravityType",
8463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
8473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
8503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
8513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'h':
8523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
8533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("help",option+1) == 0)
8543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
8553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
8563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
8573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'i':
8583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
8593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("identify",option+1) == 0)
8603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
8613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("interlace",option+1) == 0)
8623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
863bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
8643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              interlace;
8653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
8673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
8683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
869bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
8703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
871042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            interlace=ParseCommandOption(MagickInterlaceOptions,MagickFalse,
8723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
8733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (interlace < 0)
8743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedInterlaceType",
8753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
8763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("interpolate",option+1) == 0)
8793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
880bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
8813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              interpolate;
8823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
8833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
8843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
8853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
886bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
8873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
888042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            interpolate=ParseCommandOption(MagickInterpolateOptions,MagickFalse,
8893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
8903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (interpolate < 0)
8913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedInterpolateMethod",
8923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
8933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
8943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
8953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
8963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
8973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'l':
8983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
8993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("label",option+1) == 0)
9003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
9013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
904bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
9053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
9063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            status=SetImageOption(image_info,"label",argv[i]);
9073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (status == MagickFalse)
9083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedOption",argv[i]);
9093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
9103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
9113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("limit",option+1) == 0)
9123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
9133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            char
9143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              *p;
9153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            double
9173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              value;
9183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
919bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
9203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              resource;
9213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
925bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
9263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
927042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            resource=ParseCommandOption(MagickResourceOptions,MagickFalse,
9283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv[i]);
9293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (resource < 0)
9303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedResourceType",
9313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
9323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
933bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
9343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
935dbdd0e35efc03c9bccda644f5407db38b7c17eeccristy            value=StringToDouble(argv[i],&p);
936da16f16767eb31921af855f17bda465fffc4e000cristy            (void) value;
9373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if ((p == argv[i]) && (LocaleCompare("unlimited",argv[i]) != 0))
9383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
9393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
9403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
9413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("list",option+1) == 0)
9423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
943bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
9443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              list;
9453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
9463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
949bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
9503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
951042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            list=ParseCommandOption(MagickListOptions,MagickFalse,argv[i]);
9523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (list < 0)
9533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedListType",argv[i]);
954aeb2cbc4eb61cc6a04744db1dc52f5319c466e29cristy            status=MogrifyImageInfo(image_info,(int) (i-j+1),(const char **)
9553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              argv+j,exception);
9563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            DestroyImport();
95732ce2391bb7051ac53c7c3c25d3ad8f41836824dcristy            return(status == 0 ? MagickTrue : MagickFalse);
9583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
9593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("log",option+1) == 0)
9603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
9613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
964bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if ((i == (ssize_t) argc) || (strchr(argv[i],'%') == (char *) NULL))
9653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
9663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
9673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
9683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
9693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
9703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'm':
9713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
9723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("monitor",option+1) == 0)
9733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
9743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("monochrome",option+1) == 0)
9753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
9763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            quantize_info->number_colors=2;
9793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            quantize_info->colorspace=GRAYColorspace;
9803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
9813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
9823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
9833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
9843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'n':
9853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
9863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("negate",option+1) == 0)
9873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
9883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
9893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
9903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'p':
9913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
9923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("page",option+1) == 0)
9933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
9943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
9953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
9963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
997bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
9983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
9993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            status=SetImageOption(image_info,"page",argv[i]);
10003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (status == MagickFalse)
10013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedOption",argv[i]);
10023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("pause",option+1) == 0)
10053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            resource_info.pause=0;
10073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1010bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
10113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
10123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
10133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
1014e27293e706ca05b6b121e9512a83b16f7ad887f2cristy            resource_info.pause=(unsigned int) StringToUnsignedLong(argv[i]);
10153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("ping",option+1) == 0)
10183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;  /* deprecated option */
10193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("pointsize",option+1) == 0)
10203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1024bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
10253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
10263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
10273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
10283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
10313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
10323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'q':
10333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
10343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("quality",option+1) == 0)
10353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1039bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
10403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
10413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
10423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
10433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("quantize",option+1) == 0)
10463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
1047bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
10483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              colorspace;
10493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
10503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1053e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
10543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
1055042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            colorspace=ParseCommandOption(MagickColorspaceOptions,
10563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              MagickFalse,argv[i]);
10573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (colorspace < 0)
10583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedColorspace",
10593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy                argv[i]);
10603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("quiet",option+1) == 0)
10633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
10643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
10653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
10663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'r':
10673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
10683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("regard-warnings",option+1) == 0)
10693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
10703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("repage",option+1) == 0)
10713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1075e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
10763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
10773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
10783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
10793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("resize",option+1) == 0)
10823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
10843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
10853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1086bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
10873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
10883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
10893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
10903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleNCompare("respect-parentheses",option+1,17) == 0)
10933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            respect_parenthesis=(*option == '-') ? MagickTrue : MagickFalse;
10953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
10963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
10973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("rotate",option+1) == 0)
10983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
10993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1100bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
11043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11053ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
11073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
11083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 's':
11093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
11103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("sampling-factor",option+1) == 0)
11113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
11133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
11143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1115bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
11193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("scene",option+1) == 0)
11223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
11243ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
11253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1126bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11283ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
11303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("set",option+1) == 0)
11333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1135bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
11383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
11393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1140bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("screen",option+1) == 0)
11453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            ximage_info.screen=(*option == '-') ? MagickTrue : MagickFalse;
11473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("seed",option+1) == 0)
11503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
11523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
11533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1154e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
11553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
11583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("silent",option+1) == 0)
11613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            ximage_info.silent=(*option == '-') ? MagickTrue : MagickFalse;
11633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("snaps",option+1) == 0)
11663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
1167151b66dffc9e3c2e8c4f8cdaca37ff987ca0f497cristy            (void) CopyMagickString(argv[i]+1,"sans",MagickPathExtent);
11683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1169bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
117332c2aeaecd0abcb91039f999f270ca8ce439abd0cristy            snapshots=(ssize_t) StringToLong(argv[i]);
11743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11753ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
11763ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("strip",option+1) == 0)
11773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
11783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("support",option+1) == 0)
11793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;  /* deprecated */
11813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
11823ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
1183d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy        if (LocaleCompare("synchronize",option+1) == 0)
1184d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy          break;
11853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
11863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
11873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 't':
11883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
1189d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy        if (LocaleCompare("taint",option+1) == 0)
1190d9a291985cb653d62a4e7c3b6aa3f9c4436d30ebcristy          break;
11914435c7126b65edeb26a29e89fa23aa6da9121ea5anthony        if (LocaleCompare("thumbnail",option+1) == 0)
11923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
11933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
11943ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
11953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1196bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
11973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
11983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
11993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
12003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("transparent",option+1) == 0)
12033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
12043ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1205bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
12063ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
12073ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12083ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12093ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("transparent-color",option+1) == 0)
12103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
12113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
12123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
12133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1214e81f552f8ca2fc16632bd9830db3f93af07d514ccristy            if (i == (ssize_t) argc)
12153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
12163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12183ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("treedepth",option+1) == 0)
12193ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
12203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            quantize_info->tree_depth=0;
12213ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
12223ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
12233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1224bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
12253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
12263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (IsGeometry(argv[i]) == MagickFalse)
12273ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportInvalidArgumentException(option,argv[i]);
1228e27293e706ca05b6b121e9512a83b16f7ad887f2cristy            quantize_info->tree_depth=StringToUnsignedLong(argv[i]);
12293ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12303ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12313ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("trim",option+1) == 0)
12323ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
12333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("type",option+1) == 0)
12343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
1235bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            ssize_t
12363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              type;
12373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
12383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (*option == '+')
12393ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              break;
12403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            i++;
1241bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy            if (i == (ssize_t) argc)
12423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"MissingArgument",option);
1243042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy            type=ParseCommandOption(MagickTypeOptions,MagickFalse,argv[i]);
12443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            if (type < 0)
12453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy              ThrowImportException(OptionError,"UnrecognizedImageType",argv[i]);
12463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12473ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
12493ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
12503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'w':
12513ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
12523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        i++;
1253bb50337b2a8a16ca7e903cc04ab195ff0fd47ae6cristy        if (i == (ssize_t) argc)
12543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          ThrowImportException(OptionError,"MissingArgument",option);
12553ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        (void) CloneString(&target_window,argv[i]);
12563ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        break;
12573ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
12583ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case 'v':
12593ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      {
12603ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if (LocaleCompare("verbose",option+1) == 0)
12613ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          break;
12623ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        if ((LocaleCompare("version",option+1) == 0) ||
12633ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            (LocaleCompare("-version",option+1) == 0))
12643ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          {
12654f7a61361f38ef4d3eaae0c74b9964a57aee813acristy            ListMagickVersion(stdout);
12663ed852eea50f9d4cd633efb8c2b054b8e33c253cristy            break;
12673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy          }
12683ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
12693ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      }
12703ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      case '?':
12713ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        break;
12723ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      default:
12733ed852eea50f9d4cd633efb8c2b054b8e33c253cristy        ThrowImportException(OptionError,"UnrecognizedOption",option);
12743ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    }
1275042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy    fire=(GetCommandOptionFlags(MagickCommandOptions,MagickFalse,option) &
1276042ee78fa9004bf1ac6a95f09d9d1faca631dda1cristy      FireOptionFlag) == 0 ?  MagickFalse : MagickTrue;
12773ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    if (fire != MagickFalse)
12783ed852eea50f9d4cd633efb8c2b054b8e33c253cristy      FireImageStack(MagickFalse,MagickTrue,MagickTrue);
12793ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  }
12803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (k != 0)
12813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(OptionError,"UnbalancedParenthesis",argv[i]);
1282cee9711bbc334b5677d5ec4ea1cc70340d35ee35cristy  if (i-- != (ssize_t) argc)
12833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(OptionError,"MissingAnImageFilename",argv[i]);
12843ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  if (image == (Image *) NULL)
12853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    ThrowImportException(OptionError,"MissingAnImageFilename",argv[argc-1]);
12863ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  FinalizeImageSettings(image_info,image,MagickTrue);
12873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  status&=WriteImages(image_info,image,filename,exception);
12883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  DestroyImport();
12893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(status != 0 ? MagickTrue : MagickFalse);
12903ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#else
12913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) argc;
12923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) argv;
12933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  (void) ThrowMagickException(exception,GetMagickModule(),MissingDelegateError,
1294e5b39652d8d21bc3940d83b8d6088d4070a8a34aanthony    "DelegateLibrarySupportNotBuiltIn","'%s' (X11)",image_info->filename);
12953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  return(ImportUsage());
12963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
12973ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1298