]> granicus.if.org Git - imagemagick/blob - MagickWand/magick-property.c
(no commit message)
[imagemagick] / MagickWand / magick-property.c
1 /*
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %                                                                             %
4 %                                                                             %
5 %                                                                             %
6 %                 M   M   AAA    GGGG  IIIII   CCCC  K   K                    %
7 %                 MM MM  A   A  G        I    C      K  K                     %
8 %                 M M M  AAAAA  G GGG    I    C      KKK                      %
9 %                 M   M  A   A  G   G    I    C      K  K                     %
10 %                 M   M  A   A   GGGG  IIIII   CCCC  K   K                    %
11 %                                                                             %
12 %           PPPP    RRRR     OOO   PPPP   EEEEE  RRRR   TTTTT  Y   Y          %
13 %           P   P   R   R   O   O  P   P  E      R   R    T     Y Y           %
14 %           PPPP    RRRR    O   O  PPPP   EEE    RRRR     T      Y            %
15 %           P       R R     O   O  P      E      R R      T      Y            %
16 %           P       R  R     OOO   P      EEEEE  R  R     T      Y            %
17 %                                                                             %
18 %                                                                             %
19 %            Set or Get MagickWand Properties, Options, or Profiles           %
20 %                                                                             %
21 %                               Software Design                               %
22 %                                 John Cristy                                 %
23 %                                 August 2003                                 %
24 %                                                                             %
25 %                                                                             %
26 %  Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization      %
27 %  dedicated to making software imaging solutions freely available.           %
28 %                                                                             %
29 %  You may not use this file except in compliance with the License.  You may  %
30 %  obtain a copy of the License at                                            %
31 %                                                                             %
32 %    http://www.imagemagick.org/script/license.php                            %
33 %                                                                             %
34 %  Unless required by applicable law or agreed to in writing, software        %
35 %  distributed under the License is distributed on an "AS IS" BASIS,          %
36 %  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
37 %  See the License for the specific language governing permissions and        %
38 %  limitations under the License.                                             %
39 %                                                                             %
40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41 %
42 %
43 %
44 */
45 \f
46 /*
47   Include declarations.
48 */
49 #include "MagickWand/studio.h"
50 #include "MagickWand/MagickWand.h"
51 #include "MagickWand/magick-wand-private.h"
52 #include "MagickWand/wand.h"
53 #include "MagickCore/string-private.h"
54 \f
55 /*
56   Define declarations.
57 */
58 #define ThrowWandException(severity,tag,context) \
59 { \
60   (void) ThrowMagickException(wand->exception,GetMagickModule(),severity, \
61     tag,"`%s'",context); \
62   return(MagickFalse); \
63 }
64 \f
65 /*
66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67 %                                                                             %
68 %                                                                             %
69 %                                                                             %
70 %   M a g i c k D e l e t e I m a g e A r t i f a c t                         %
71 %                                                                             %
72 %                                                                             %
73 %                                                                             %
74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
75 %
76 %  MagickDeleteImageArtifact() deletes a wand artifact.
77 %
78 %  The format of the MagickDeleteImageArtifact method is:
79 %
80 %      MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand,
81 %        const char *artifact)
82 %
83 %  A description of each parameter follows:
84 %
85 %    o image: the image.
86 %
87 %    o artifact: the image artifact.
88 %
89 */
90 WandExport MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand,
91   const char *artifact)
92 {
93   assert(wand != (MagickWand *) NULL);
94   assert(wand->signature == WandSignature);
95   if (wand->debug != MagickFalse)
96     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
97   if (wand->images == (Image *) NULL)
98     {
99       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
100         "ContainsNoImages","`%s'",wand->name);
101       return(MagickFalse);
102     }
103   return(DeleteImageArtifact(wand->images,artifact));
104 }
105 \f
106 /*
107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108 %                                                                             %
109 %                                                                             %
110 %                                                                             %
111 %   M a g i c k D e l e t e I m a g e P r o p e r t y                         %
112 %                                                                             %
113 %                                                                             %
114 %                                                                             %
115 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
116 %
117 %  MagickDeleteImageProperty() deletes a wand property.
118 %
119 %  The format of the MagickDeleteImageProperty method is:
120 %
121 %      MagickBooleanType MagickDeleteImageProperty(MagickWand *wand,
122 %        const char *property)
123 %
124 %  A description of each parameter follows:
125 %
126 %    o image: the image.
127 %
128 %    o property: the image property.
129 %
130 */
131 WandExport MagickBooleanType MagickDeleteImageProperty(MagickWand *wand,
132   const char *property)
133 {
134   assert(wand != (MagickWand *) NULL);
135   assert(wand->signature == WandSignature);
136   if (wand->debug != MagickFalse)
137     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
138   if (wand->images == (Image *) NULL)
139     {
140       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
141         "ContainsNoImages","`%s'",wand->name);
142       return(MagickFalse);
143     }
144   return(DeleteImageProperty(wand->images,property));
145 }
146 \f
147 /*
148 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
149 %                                                                             %
150 %                                                                             %
151 %                                                                             %
152 %   M a g i c k D e l e t e O p t i o n                                       %
153 %                                                                             %
154 %                                                                             %
155 %                                                                             %
156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
157 %
158 %  MagickDeleteOption() deletes a wand option.
159 %
160 %  The format of the MagickDeleteOption method is:
161 %
162 %      MagickBooleanType MagickDeleteOption(MagickWand *wand,
163 %        const char *option)
164 %
165 %  A description of each parameter follows:
166 %
167 %    o image: the image.
168 %
169 %    o option: the image option.
170 %
171 */
172 WandExport MagickBooleanType MagickDeleteOption(MagickWand *wand,
173   const char *option)
174 {
175   assert(wand != (MagickWand *) NULL);
176   assert(wand->signature == WandSignature);
177   if (wand->debug != MagickFalse)
178     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
179   return(DeleteImageOption(wand->image_info,option));
180 }
181 \f
182 /*
183 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
184 %                                                                             %
185 %                                                                             %
186 %                                                                             %
187 %   M a g i c k G e t A n t i a l i a s                                       %
188 %                                                                             %
189 %                                                                             %
190 %                                                                             %
191 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
192 %
193 %  MagickGetAntialias() returns the antialias property associated with the
194 %  wand.
195 %
196 %  The format of the MagickGetAntialias method is:
197 %
198 %      MagickBooleanType MagickGetAntialias(const MagickWand *wand)
199 %
200 %  A description of each parameter follows:
201 %
202 %    o wand: the magick wand.
203 %
204 */
205 WandExport MagickBooleanType MagickGetAntialias(const MagickWand *wand)
206 {
207   assert(wand != (const MagickWand *) NULL);
208   assert(wand->signature == WandSignature);
209   if (wand->debug != MagickFalse)
210     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
211   return(wand->image_info->antialias);
212 }
213 \f
214 /*
215 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
216 %                                                                             %
217 %                                                                             %
218 %                                                                             %
219 %   M a g i c k G e t B a c k g r o u n d C o l o r                           %
220 %                                                                             %
221 %                                                                             %
222 %                                                                             %
223 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
224 %
225 %  MagickGetBackgroundColor() returns the wand background color.
226 %
227 %  The format of the MagickGetBackgroundColor method is:
228 %
229 %      PixelWand *MagickGetBackgroundColor(MagickWand *wand)
230 %
231 %  A description of each parameter follows:
232 %
233 %    o wand: the magick wand.
234 %
235 */
236 WandExport PixelWand *MagickGetBackgroundColor(MagickWand *wand)
237 {
238   PixelWand
239     *background_color;
240
241   assert(wand != (MagickWand *) NULL);
242   assert(wand->signature == WandSignature);
243   if (wand->debug != MagickFalse)
244     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
245   background_color=NewPixelWand();
246   PixelSetPixelColor(background_color,&wand->image_info->background_color);
247   return(background_color);
248 }
249 \f
250 /*
251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
252 %                                                                             %
253 %                                                                             %
254 %                                                                             %
255 %   M a g i c k G e t C o l o r s p a c e                                     %
256 %                                                                             %
257 %                                                                             %
258 %                                                                             %
259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
260 %
261 %  MagickGetColorspace() gets the wand colorspace type.
262 %
263 %  The format of the MagickGetColorspace method is:
264 %
265 %      ColorspaceType MagickGetColorspace(MagickWand *wand)
266 %
267 %  A description of each parameter follows:
268 %
269 %    o wand: the magick wand.
270 %
271 */
272 WandExport ColorspaceType MagickGetColorspace(MagickWand *wand)
273 {
274   assert(wand != (MagickWand *) NULL);
275   assert(wand->signature == WandSignature);
276   if (wand->debug != MagickFalse)
277     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
278   return(wand->image_info->colorspace);
279 }
280 \f
281 /*
282 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
283 %                                                                             %
284 %                                                                             %
285 %                                                                             %
286 %   M a g i c k G e t C o m p r e s s i o n                                   %
287 %                                                                             %
288 %                                                                             %
289 %                                                                             %
290 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
291 %
292 %  MagickGetCompression() gets the wand compression type.
293 %
294 %  The format of the MagickGetCompression method is:
295 %
296 %      CompressionType MagickGetCompression(MagickWand *wand)
297 %
298 %  A description of each parameter follows:
299 %
300 %    o wand: the magick wand.
301 %
302 */
303 WandExport CompressionType MagickGetCompression(MagickWand *wand)
304 {
305   assert(wand != (MagickWand *) NULL);
306   assert(wand->signature == WandSignature);
307   if (wand->debug != MagickFalse)
308     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
309   return(wand->image_info->compression);
310 }
311 \f
312 /*
313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
314 %                                                                             %
315 %                                                                             %
316 %                                                                             %
317 %   M a g i c k G e t C o m p r e s s i o n Q u a l i t y                     %
318 %                                                                             %
319 %                                                                             %
320 %                                                                             %
321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322 %
323 %  MagickGetCompressionQuality() gets the wand compression quality.
324 %
325 %  The format of the MagickGetCompressionQuality method is:
326 %
327 %      size_t MagickGetCompressionQuality(MagickWand *wand)
328 %
329 %  A description of each parameter follows:
330 %
331 %    o wand: the magick wand.
332 %
333 */
334 WandExport size_t MagickGetCompressionQuality(MagickWand *wand)
335 {
336   assert(wand != (MagickWand *) NULL);
337   assert(wand->signature == WandSignature);
338   if (wand->debug != MagickFalse)
339     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
340   return(wand->image_info->quality);
341 }
342 \f
343 /*
344 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
345 %                                                                             %
346 %                                                                             %
347 %                                                                             %
348 %   M a g i c k G e t C o p y r i g h t                                       %
349 %                                                                             %
350 %                                                                             %
351 %                                                                             %
352 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
353 %
354 %  MagickGetCopyright() returns the ImageMagick API copyright as a string
355 %  constant.
356 %
357 %  The format of the MagickGetCopyright method is:
358 %
359 %      const char *MagickGetCopyright(void)
360 %
361 */
362 WandExport const char *MagickGetCopyright(void)
363 {
364   return(GetMagickCopyright());
365 }
366 \f
367 /*
368 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
369 %                                                                             %
370 %                                                                             %
371 %                                                                             %
372 %   M a g i c k G e t F i l e n a m e                                         %
373 %                                                                             %
374 %                                                                             %
375 %                                                                             %
376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
377 %
378 %  MagickGetFilename() returns the filename associated with an image sequence.
379 %
380 %  The format of the MagickGetFilename method is:
381 %
382 %      const char *MagickGetFilename(const MagickWand *wand)
383 %
384 %  A description of each parameter follows:
385 %
386 %    o wand: the magick wand.
387 %
388 */
389 WandExport char *MagickGetFilename(const MagickWand *wand)
390 {
391   assert(wand != (const MagickWand *) NULL);
392   assert(wand->signature == WandSignature);
393   if (wand->debug != MagickFalse)
394     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
395   return(AcquireString(wand->image_info->filename));
396 }
397 \f
398 /*
399 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
400 %                                                                             %
401 %                                                                             %
402 %                                                                             %
403 %   M a g i c k G e t F o n t                                                 %
404 %                                                                             %
405 %                                                                             %
406 %                                                                             %
407 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
408 %
409 %  MagickGetFont() returns the font associated with the MagickWand.
410 %
411 %  The format of the MagickGetFont method is:
412 %
413 %      char *MagickGetFont(MagickWand *wand)
414 %
415 %  A description of each parameter follows:
416 %
417 %    o wand: the magick wand.
418 %
419 */
420 WandExport char *MagickGetFont(MagickWand *wand)
421 {
422   assert(wand != (MagickWand *) NULL);
423   assert(wand->signature == WandSignature);
424   if (wand->debug != MagickFalse)
425     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
426   if (wand->image_info->font == (char *) NULL)
427     return((char *) NULL);
428   return(AcquireString(wand->image_info->font));
429 }
430 \f
431 /*
432 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
433 %                                                                             %
434 %                                                                             %
435 %                                                                             %
436 %   M a g i c k G e t F o r m a t                                             %
437 %                                                                             %
438 %                                                                             %
439 %                                                                             %
440 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
441 %
442 %  MagickGetFormat() returns the format of the magick wand.
443 %
444 %  The format of the MagickGetFormat method is:
445 %
446 %      const char MagickGetFormat(MagickWand *wand)
447 %
448 %  A description of each parameter follows:
449 %
450 %    o wand: the magick wand.
451 %
452 */
453 WandExport char *MagickGetFormat(MagickWand *wand)
454 {
455   assert(wand != (MagickWand *) NULL);
456   assert(wand->signature == WandSignature);
457   if (wand->debug != MagickFalse)
458     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
459   return(AcquireString(wand->image_info->magick));
460 }
461 \f
462 /*
463 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
464 %                                                                             %
465 %                                                                             %
466 %                                                                             %
467 %   M a g i c k G e t G r a v i t y                                           %
468 %                                                                             %
469 %                                                                             %
470 %                                                                             %
471 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
472 %
473 %  MagickGetGravity() gets the wand gravity.
474 %
475 %  The format of the MagickGetGravity method is:
476 %
477 %      GravityType MagickGetGravity(MagickWand *wand)
478 %
479 %  A description of each parameter follows:
480 %
481 %    o wand: the magick wand.
482 %
483 */
484 WandExport GravityType MagickGetGravity(MagickWand *wand)
485 {
486   const char
487     *option;
488
489   GravityType
490     type;
491
492   assert(wand != (MagickWand *) NULL);
493   assert(wand->signature == WandSignature);
494   if (wand->debug != MagickFalse)
495     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
496   option=GetImageOption(wand->image_info,"gravity");
497   if (option == (const char *) NULL)
498     return(UndefinedGravity);
499   type=(GravityType) ParseCommandOption(MagickGravityOptions,MagickFalse,option);
500   return(type);
501 }
502 \f
503 /*
504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
505 %                                                                             %
506 %                                                                             %
507 %                                                                             %
508 %   M a g i c k G e t H o m e U R L                                           %
509 %                                                                             %
510 %                                                                             %
511 %                                                                             %
512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
513 %
514 %  MagickGetHomeURL() returns the ImageMagick home URL.
515 %
516 %  The format of the MagickGetHomeURL method is:
517 %
518 %      char *MagickGetHomeURL(void)
519 %
520 */
521 WandExport char *MagickGetHomeURL(void)
522 {
523   return(GetMagickHomeURL());
524 }
525 \f
526 /*
527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
528 %                                                                             %
529 %                                                                             %
530 %                                                                             %
531 %   M a g i c k G e t I m a g e A r t i f a c t                               %
532 %                                                                             %
533 %                                                                             %
534 %                                                                             %
535 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
536 %
537 %  MagickGetImageArtifact() returns a value associated with the specified
538 %  artifact.  Use MagickRelinquishMemory() to free the value when you are
539 %  finished with it.
540 %
541 %  The format of the MagickGetImageArtifact method is:
542 %
543 %      char *MagickGetImageArtifact(MagickWand *wand,const char *artifact)
544 %
545 %  A description of each parameter follows:
546 %
547 %    o wand: the magick wand.
548 %
549 %    o artifact: the artifact.
550 %
551 */
552 WandExport char *MagickGetImageArtifact(MagickWand *wand,const char *artifact)
553 {
554   const char
555     *value;
556
557   assert(wand != (MagickWand *) NULL);
558   assert(wand->signature == WandSignature);
559   if (wand->debug != MagickFalse)
560     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
561   if (wand->images == (Image *) NULL)
562     {
563       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
564         "ContainsNoImages","`%s'",wand->name);
565       return((char *) NULL);
566     }
567   value=GetImageArtifact(wand->images,artifact);
568   if (value == (const char *) NULL)
569     return((char *) NULL);
570   return(ConstantString(value));
571 }
572 \f
573 /*
574 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
575 %                                                                             %
576 %                                                                             %
577 %                                                                             %
578 %   M a g i c k G e t I m a g e P r o p e r t i e s                           %
579 %                                                                             %
580 %                                                                             %
581 %                                                                             %
582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
583 %
584 %  MagickGetImageArtifacts() returns all the artifact names that match the
585 %  specified pattern associated with a wand.  Use MagickGetImageProperty() to
586 %  return the value of a particular artifact.  Use MagickRelinquishMemory() to
587 %  free the value when you are finished with it.
588 %
589 %  The format of the MagickGetImageArtifacts method is:
590 %
591 %      char *MagickGetImageArtifacts(MagickWand *wand,
592 %        const char *pattern,size_t *number_artifacts)
593 %
594 %  A description of each parameter follows:
595 %
596 %    o wand: the magick wand.
597 %
598 %    o pattern: Specifies a pointer to a text string containing a pattern.
599 %
600 %    o number_artifacts: the number artifacts associated with this wand.
601 %
602 */
603 WandExport char **MagickGetImageArtifacts(MagickWand *wand,
604   const char *pattern,size_t *number_artifacts)
605 {
606   char
607     **artifacts;
608
609   const char
610     *artifact;
611
612   register ssize_t
613     i;
614
615   size_t
616     length;
617
618   assert(wand != (MagickWand *) NULL);
619   assert(wand->signature == WandSignature);
620   if (wand->debug != MagickFalse)
621     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
622   if (wand->images == (Image *) NULL)
623     {
624       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
625         "ContainsNoImages","`%s'",wand->name);
626       return((char **) NULL);
627     }
628   (void) GetImageProperty(wand->images,"exif:*",wand->exception);
629   length=1024;
630   artifacts=(char **) AcquireQuantumMemory(length,sizeof(*artifacts));
631   if (artifacts == (char **) NULL)
632     return((char **) NULL);
633   ResetImagePropertyIterator(wand->images);
634   artifact=GetNextImageProperty(wand->images);
635   for (i=0; artifact != (const char *) NULL; )
636   {
637     if ((*artifact != '[') &&
638         (GlobExpression(artifact,pattern,MagickFalse) != MagickFalse))
639       {
640         if ((i+1) >= (ssize_t) length)
641           {
642             length<<=1;
643             artifacts=(char **) ResizeQuantumMemory(artifacts,length,
644               sizeof(*artifacts));
645             if (artifacts == (char **) NULL)
646               {
647                 (void) ThrowMagickException(wand->exception,GetMagickModule(),
648                   ResourceLimitError,"MemoryAllocationFailed","`%s'",
649                   wand->name);
650                 return((char **) NULL);
651               }
652           }
653         artifacts[i]=ConstantString(artifact);
654         i++;
655       }
656     artifact=GetNextImageProperty(wand->images);
657   }
658   artifacts[i]=(char *) NULL;
659   *number_artifacts=(size_t) i;
660   return(artifacts);
661 }
662 \f
663 /*
664 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
665 %                                                                             %
666 %                                                                             %
667 %                                                                             %
668 %   M a g i c k G e t I m a g e P r o f i l e                                 %
669 %                                                                             %
670 %                                                                             %
671 %                                                                             %
672 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
673 %
674 %  MagickGetImageProfile() returns the named image profile.
675 %
676 %  The format of the MagickGetImageProfile method is:
677 %
678 %      unsigned char *MagickGetImageProfile(MagickWand *wand,const char *name,
679 %        size_t *length)
680 %
681 %  A description of each parameter follows:
682 %
683 %    o wand: the magick wand.
684 %
685 %    o name: Name of profile to return: ICC, IPTC, or generic profile.
686 %
687 %    o length: the length of the profile.
688 %
689 */
690 WandExport unsigned char *MagickGetImageProfile(MagickWand *wand,
691   const char *name,size_t *length)
692 {
693   const StringInfo
694     *profile;
695
696   unsigned char
697     *datum;
698
699   assert(wand != (MagickWand *) NULL);
700   assert(wand->signature == WandSignature);
701   if (wand->debug != MagickFalse)
702     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
703   if (wand->images == (Image *) NULL)
704     {
705       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
706         "ContainsNoImages","`%s'",wand->name);
707       return((unsigned char *) NULL);
708     }
709   *length=0;
710   if (wand->images->profiles == (SplayTreeInfo *) NULL)
711     return((unsigned char *) NULL);
712   profile=GetImageProfile(wand->images,name);
713   if (profile == (StringInfo *) NULL)
714     return((unsigned char *) NULL);
715   datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile),
716     sizeof(*datum));
717   if (datum == (unsigned char *) NULL)
718     return((unsigned char *) NULL);
719   (void) CopyMagickMemory(datum,GetStringInfoDatum(profile),
720     GetStringInfoLength(profile));
721   *length=(size_t) GetStringInfoLength(profile);
722   return(datum);
723 }
724 \f
725 /*
726 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
727 %                                                                             %
728 %                                                                             %
729 %                                                                             %
730 %   M a g i c k G e t I m a g e P r o f i l e s                               %
731 %                                                                             %
732 %                                                                             %
733 %                                                                             %
734 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
735 %
736 %  MagickGetImageProfiles() returns all the profile names that match the
737 %  specified pattern associated with a wand.  Use MagickGetImageProfile() to
738 %  return the value of a particular property.  Use MagickRelinquishMemory() to
739 %  free the value when you are finished with it.
740 %
741 %  The format of the MagickGetImageProfiles method is:
742 %
743 %      char *MagickGetImageProfiles(MagickWand *wand,
744 %        size_t *number_profiles)
745 %
746 %  A description of each parameter follows:
747 %
748 %    o wand: the magick wand.
749 %
750 %    o pattern: Specifies a pointer to a text string containing a pattern.
751 %
752 %    o number_profiles: the number profiles associated with this wand.
753 %
754 */
755 WandExport char **MagickGetImageProfiles(MagickWand *wand,const char *pattern,
756   size_t *number_profiles)
757 {
758   char
759     **profiles;
760
761   const char
762     *property;
763
764   register ssize_t
765     i;
766
767   size_t
768     length;
769
770   assert(wand != (MagickWand *) NULL);
771   assert(wand->signature == WandSignature);
772   if (wand->debug != MagickFalse)
773     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
774   if (wand->images == (Image *) NULL)
775     {
776       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
777         "ContainsNoImages","`%s'",wand->name);
778       return((char **) NULL);
779     }
780   (void) GetImageProfile(wand->images,"exif:*");
781   length=1024;
782   profiles=(char **) AcquireQuantumMemory(length,sizeof(*profiles));
783   if (profiles == (char **) NULL)
784     return((char **) NULL);
785   ResetImageProfileIterator(wand->images);
786   property=GetNextImageProfile(wand->images);
787   for (i=0; property != (const char *) NULL; )
788   {
789     if ((*property != '[') &&
790         (GlobExpression(property,pattern,MagickFalse) != MagickFalse))
791       {
792         if ((i+1) >= (ssize_t) length)
793           {
794             length<<=1;
795             profiles=(char **) ResizeQuantumMemory(profiles,length,
796               sizeof(*profiles));
797             if (profiles == (char **) NULL)
798               {
799                 (void) ThrowMagickException(wand->exception,GetMagickModule(),
800                   ResourceLimitError,"MemoryAllocationFailed","`%s'",
801                   wand->name);
802                 return((char **) NULL);
803               }
804           }
805         profiles[i]=ConstantString(property);
806         i++;
807       }
808     property=GetNextImageProfile(wand->images);
809   }
810   profiles[i]=(char *) NULL;
811   *number_profiles=(size_t) i;
812   return(profiles);
813 }
814 \f
815 /*
816 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
817 %                                                                             %
818 %                                                                             %
819 %                                                                             %
820 %   M a g i c k G e t I m a g e P r o p e r t y                               %
821 %                                                                             %
822 %                                                                             %
823 %                                                                             %
824 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
825 %
826 %  MagickGetImageProperty() returns a value associated with the specified
827 %  property.  Use MagickRelinquishMemory() to free the value when you are
828 %  finished with it.
829 %
830 %  The format of the MagickGetImageProperty method is:
831 %
832 %      char *MagickGetImageProperty(MagickWand *wand,const char *property)
833 %
834 %  A description of each parameter follows:
835 %
836 %    o wand: the magick wand.
837 %
838 %    o property: the property.
839 %
840 */
841 WandExport char *MagickGetImageProperty(MagickWand *wand,const char *property)
842 {
843   const char
844     *value;
845
846   assert(wand != (MagickWand *) NULL);
847   assert(wand->signature == WandSignature);
848   if (wand->debug != MagickFalse)
849     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
850   if (wand->images == (Image *) NULL)
851     {
852       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
853         "ContainsNoImages","`%s'",wand->name);
854       return((char *) NULL);
855     }
856   value=GetImageProperty(wand->images,property,wand->exception);
857   if (value == (const char *) NULL)
858     return((char *) NULL);
859   return(ConstantString(value));
860 }
861 \f
862 /*
863 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
864 %                                                                             %
865 %                                                                             %
866 %                                                                             %
867 %   M a g i c k G e t I m a g e P r o p e r t i e s                           %
868 %                                                                             %
869 %                                                                             %
870 %                                                                             %
871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
872 %
873 %  MagickGetImageProperties() returns all the property names that match the
874 %  specified pattern associated with a wand.  Use MagickGetImageProperty() to
875 %  return the value of a particular property.  Use MagickRelinquishMemory() to
876 %  free the value when you are finished with it.
877 %
878 %  The format of the MagickGetImageProperties method is:
879 %
880 %      char *MagickGetImageProperties(MagickWand *wand,
881 %        const char *pattern,size_t *number_properties)
882 %
883 %  A description of each parameter follows:
884 %
885 %    o wand: the magick wand.
886 %
887 %    o pattern: Specifies a pointer to a text string containing a pattern.
888 %
889 %    o number_properties: the number properties associated with this wand.
890 %
891 */
892 WandExport char **MagickGetImageProperties(MagickWand *wand,
893   const char *pattern,size_t *number_properties)
894 {
895   char
896     **properties;
897
898   const char
899     *property;
900
901   register ssize_t
902     i;
903
904   size_t
905     length;
906
907   assert(wand != (MagickWand *) NULL);
908   assert(wand->signature == WandSignature);
909   if (wand->debug != MagickFalse)
910     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
911   if (wand->images == (Image *) NULL)
912     {
913       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
914         "ContainsNoImages","`%s'",wand->name);
915       return((char **) NULL);
916     }
917   (void) GetImageProperty(wand->images,"exif:*",wand->exception);
918   length=1024;
919   properties=(char **) AcquireQuantumMemory(length,sizeof(*properties));
920   if (properties == (char **) NULL)
921     return((char **) NULL);
922   ResetImagePropertyIterator(wand->images);
923   property=GetNextImageProperty(wand->images);
924   for (i=0; property != (const char *) NULL; )
925   {
926     if ((*property != '[') &&
927         (GlobExpression(property,pattern,MagickFalse) != MagickFalse))
928       {
929         if ((i+1) >= (ssize_t) length)
930           {
931             length<<=1;
932             properties=(char **) ResizeQuantumMemory(properties,length,
933               sizeof(*properties));
934             if (properties == (char **) NULL)
935               {
936                 (void) ThrowMagickException(wand->exception,GetMagickModule(),
937                   ResourceLimitError,"MemoryAllocationFailed","`%s'",
938                   wand->name);
939                 return((char **) NULL);
940               }
941           }
942         properties[i]=ConstantString(property);
943         i++;
944       }
945     property=GetNextImageProperty(wand->images);
946   }
947   properties[i]=(char *) NULL;
948   *number_properties=(size_t) i;
949   return(properties);
950 }
951 \f
952 /*
953 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
954 %                                                                             %
955 %                                                                             %
956 %                                                                             %
957 %   M a g i c k G e t I n t e r l a c e S c h e m e                           %
958 %                                                                             %
959 %                                                                             %
960 %                                                                             %
961 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
962 %
963 %  MagickGetInterlaceScheme() gets the wand interlace scheme.
964 %
965 %  The format of the MagickGetInterlaceScheme method is:
966 %
967 %      InterlaceType MagickGetInterlaceScheme(MagickWand *wand)
968 %
969 %  A description of each parameter follows:
970 %
971 %    o wand: the magick wand.
972 %
973 */
974 WandExport InterlaceType MagickGetInterlaceScheme(MagickWand *wand)
975 {
976   assert(wand != (MagickWand *) NULL);
977   assert(wand->signature == WandSignature);
978   if (wand->debug != MagickFalse)
979     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
980   return(wand->image_info->interlace);
981 }
982 \f
983 /*
984 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
985 %                                                                             %
986 %                                                                             %
987 %                                                                             %
988 %   M a g i c k G e t I n t e r p o l a t e M e t h o d                       %
989 %                                                                             %
990 %                                                                             %
991 %                                                                             %
992 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
993 %
994 %  MagickGetInterpolateMethod() gets the wand compression.
995 %
996 %  The format of the MagickGetInterpolateMethod method is:
997 %
998 %      PixelInterpolateMethod MagickGetInterpolateMethod(MagickWand *wand)
999 %
1000 %  A description of each parameter follows:
1001 %
1002 %    o wand: the magick wand.
1003 %
1004 */
1005 WandExport PixelInterpolateMethod MagickGetInterpolateMethod(MagickWand *wand)
1006 {
1007   const char
1008     *option;
1009
1010   PixelInterpolateMethod
1011     method;
1012
1013   assert(wand != (MagickWand *) NULL);
1014   assert(wand->signature == WandSignature);
1015   if (wand->debug != MagickFalse)
1016     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1017   option=GetImageOption(wand->image_info,"interpolate");
1018   if (option == (const char *) NULL)
1019     return(UndefinedInterpolatePixel);
1020   method=(PixelInterpolateMethod) ParseCommandOption(MagickInterpolateOptions,
1021     MagickFalse,option);
1022   return(method);
1023 }
1024 \f
1025 /*
1026 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1027 %                                                                             %
1028 %                                                                             %
1029 %                                                                             %
1030 %   M a g i c k G e t O p t i o n                                             %
1031 %                                                                             %
1032 %                                                                             %
1033 %                                                                             %
1034 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1035 %
1036 %  MagickGetOption() returns a value associated with a wand and the specified
1037 %  key.  Use MagickRelinquishMemory() to free the value when you are finished
1038 %  with it.
1039 %
1040 %  The format of the MagickGetOption method is:
1041 %
1042 %      char *MagickGetOption(MagickWand *wand,const char *key)
1043 %
1044 %  A description of each parameter follows:
1045 %
1046 %    o wand: the magick wand.
1047 %
1048 %    o key: the key.
1049 %
1050 */
1051 WandExport char *MagickGetOption(MagickWand *wand,const char *key)
1052 {
1053   const char
1054     *option;
1055
1056   assert(wand != (MagickWand *) NULL);
1057   assert(wand->signature == WandSignature);
1058   if (wand->debug != MagickFalse)
1059     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1060   option=GetImageOption(wand->image_info,key);
1061   return(ConstantString(option));
1062 }
1063 \f
1064 /*
1065 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1066 %                                                                             %
1067 %                                                                             %
1068 %                                                                             %
1069 %   M a g i c k G e t O p t i o n                                             %
1070 %                                                                             %
1071 %                                                                             %
1072 %                                                                             %
1073 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1074 %
1075 %  MagickGetOptions() returns all the option names that match the specified
1076 %  pattern associated with a wand.  Use MagickGetOption() to return the value
1077 %  of a particular option.  Use MagickRelinquishMemory() to free the value
1078 %  when you are finished with it.
1079 %
1080 %  The format of the MagickGetOptions method is:
1081 %
1082 %      char *MagickGetOptions(MagickWand *wand,size_t *number_options)
1083 %
1084 %  A description of each parameter follows:
1085 %
1086 %    o wand: the magick wand.
1087 %
1088 %    o pattern: Specifies a pointer to a text string containing a pattern.
1089 %
1090 %    o number_options: the number options associated with this wand.
1091 %
1092 */
1093 WandExport char **MagickGetOptions(MagickWand *wand,const char *pattern,
1094   size_t *number_options)
1095 {
1096   char
1097     **options;
1098
1099   const char
1100     *option;
1101
1102   register ssize_t
1103     i;
1104
1105   size_t
1106     length;
1107
1108   assert(wand != (MagickWand *) NULL);
1109   assert(wand->signature == WandSignature);
1110   if (wand->debug != MagickFalse)
1111     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1112   if (wand->images == (Image *) NULL)
1113     {
1114       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1115         "ContainsNoImages","`%s'",wand->name);
1116       return((char **) NULL);
1117     }
1118   length=1024;
1119   options=(char **) AcquireQuantumMemory(length,sizeof(*options));
1120   if (options == (char **) NULL)
1121     return((char **) NULL);
1122   ResetImageOptionIterator(wand->image_info);
1123   option=GetNextImageOption(wand->image_info);
1124   for (i=0; option != (const char *) NULL; )
1125   {
1126     if ((*option != '[') &&
1127         (GlobExpression(option,pattern,MagickFalse) != MagickFalse))
1128       {
1129         if ((i+1) >= (ssize_t) length)
1130           {
1131             length<<=1;
1132             options=(char **) ResizeQuantumMemory(options,length,
1133               sizeof(*options));
1134             if (options == (char **) NULL)
1135               {
1136                 (void) ThrowMagickException(wand->exception,GetMagickModule(),
1137                   ResourceLimitError,"MemoryAllocationFailed","`%s'",
1138                   wand->name);
1139                 return((char **) NULL);
1140               }
1141           }
1142         options[i]=ConstantString(option);
1143         i++;
1144       }
1145     option=GetNextImageOption(wand->image_info);
1146   }
1147   options[i]=(char *) NULL;
1148   *number_options=(size_t) i;
1149   return(options);
1150 }
1151 \f
1152 /*
1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1154 %                                                                             %
1155 %                                                                             %
1156 %                                                                             %
1157 %   M a g i c k G e t O r i e n t a t i o n                                   %
1158 %                                                                             %
1159 %                                                                             %
1160 %                                                                             %
1161 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1162 %
1163 %  MagickGetOrientation() gets the wand orientation type.
1164 %
1165 %  The format of the MagickGetOrientation method is:
1166 %
1167 %      OrientationType MagickGetOrientation(MagickWand *wand)
1168 %
1169 %  A description of each parameter follows:
1170 %
1171 %    o wand: the magick wand.
1172 %
1173 */
1174 WandExport OrientationType MagickGetOrientation(MagickWand *wand)
1175 {
1176   assert(wand != (MagickWand *) NULL);
1177   assert(wand->signature == WandSignature);
1178   if (wand->debug != MagickFalse)
1179     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1180   return(wand->image_info->orientation);
1181 }
1182 \f
1183 /*
1184 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1185 %                                                                             %
1186 %                                                                             %
1187 %                                                                             %
1188 %   M a g i c k G e t P a c k a g e N a m e                                   %
1189 %                                                                             %
1190 %                                                                             %
1191 %                                                                             %
1192 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1193 %
1194 %  MagickGetPackageName() returns the ImageMagick package name as a string
1195 %  constant.
1196 %
1197 %  The format of the MagickGetPackageName method is:
1198 %
1199 %      const char *MagickGetPackageName(void)
1200 %
1201 %
1202 */
1203 WandExport const char *MagickGetPackageName(void)
1204 {
1205   return(GetMagickPackageName());
1206 }
1207 \f
1208 /*
1209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1210 %                                                                             %
1211 %                                                                             %
1212 %                                                                             %
1213 %   M a g i c k G e t P a g e                                                 %
1214 %                                                                             %
1215 %                                                                             %
1216 %                                                                             %
1217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1218 %
1219 %  MagickGetPage() returns the page geometry associated with the magick wand.
1220 %
1221 %  The format of the MagickGetPage method is:
1222 %
1223 %      MagickBooleanType MagickGetPage(const MagickWand *wand,
1224 %        size_t *width,size_t *height,ssize_t *x,ssize_t *y)
1225 %
1226 %  A description of each parameter follows:
1227 %
1228 %    o wand: the magick wand.
1229 %
1230 %    o width: the page width.
1231 %
1232 %    o height: page height.
1233 %
1234 %    o x: the page x-offset.
1235 %
1236 %    o y: the page y-offset.
1237 %
1238 */
1239 WandExport MagickBooleanType MagickGetPage(const MagickWand *wand,
1240   size_t *width,size_t *height,ssize_t *x,ssize_t *y)
1241 {
1242   RectangleInfo
1243     geometry;
1244
1245   assert(wand != (const MagickWand *) NULL);
1246   assert(wand->signature == WandSignature);
1247   if (wand->debug != MagickFalse)
1248     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1249   (void) ResetMagickMemory(&geometry,0,sizeof(geometry));
1250   (void) ParseAbsoluteGeometry(wand->image_info->page,&geometry);
1251   *width=geometry.width;
1252   *height=geometry.height;
1253   *x=geometry.x;
1254   *y=geometry.y;
1255   return(MagickTrue);
1256 }
1257 \f
1258 /*
1259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1260 %                                                                             %
1261 %                                                                             %
1262 %                                                                             %
1263 %   M a g i c k G e t P o i n t s i z e                                       %
1264 %                                                                             %
1265 %                                                                             %
1266 %                                                                             %
1267 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1268 %
1269 %  MagickGetPointsize() returns the font pointsize associated with the
1270 %  MagickWand.
1271 %
1272 %  The format of the MagickGetPointsize method is:
1273 %
1274 %      double MagickGetPointsize(MagickWand *wand)
1275 %
1276 %  A description of each parameter follows:
1277 %
1278 %    o wand: the magick wand.
1279 %
1280 */
1281 WandExport double MagickGetPointsize(MagickWand *wand)
1282 {
1283   assert(wand != (MagickWand *) NULL);
1284   assert(wand->signature == WandSignature);
1285   if (wand->debug != MagickFalse)
1286     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1287   return(wand->image_info->pointsize);
1288 }
1289 \f
1290 /*
1291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1292 %                                                                             %
1293 %                                                                             %
1294 %                                                                             %
1295 %   M a g i c k G e t Q u a n t u m D e p t h                                 %
1296 %                                                                             %
1297 %                                                                             %
1298 %                                                                             %
1299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1300 %
1301 %  MagickGetQuantumDepth() returns the ImageMagick quantum depth as a string
1302 %  constant.
1303 %
1304 %  The format of the MagickGetQuantumDepth method is:
1305 %
1306 %      const char *MagickGetQuantumDepth(size_t *depth)
1307 %
1308 %  A description of each parameter follows:
1309 %
1310 %    o depth: the quantum depth is returned as a number.
1311 %
1312 */
1313 WandExport const char *MagickGetQuantumDepth(size_t *depth)
1314 {
1315   return(GetMagickQuantumDepth(depth));
1316 }
1317 \f
1318 /*
1319 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1320 %                                                                             %
1321 %                                                                             %
1322 %                                                                             %
1323 %   M a g i c k G e t Q u a n t u m R a n g e                                 %
1324 %                                                                             %
1325 %                                                                             %
1326 %                                                                             %
1327 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1328 %
1329 %  MagickGetQuantumRange() returns the ImageMagick quantum range as a string
1330 %  constant.
1331 %
1332 %  The format of the MagickGetQuantumRange method is:
1333 %
1334 %      const char *MagickGetQuantumRange(size_t *range)
1335 %
1336 %  A description of each parameter follows:
1337 %
1338 %    o range: the quantum range is returned as a number.
1339 %
1340 */
1341 WandExport const char *MagickGetQuantumRange(size_t *range)
1342 {
1343   return(GetMagickQuantumRange(range));
1344 }
1345 \f
1346 /*
1347 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1348 %                                                                             %
1349 %                                                                             %
1350 %                                                                             %
1351 %   M a g i c k G e t R e l e a s e D a t e                                   %
1352 %                                                                             %
1353 %                                                                             %
1354 %                                                                             %
1355 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1356 %
1357 %  MagickGetReleaseDate() returns the ImageMagick release date as a string
1358 %  constant.
1359 %
1360 %  The format of the MagickGetReleaseDate method is:
1361 %
1362 %      const char *MagickGetReleaseDate(void)
1363 %
1364 */
1365 WandExport const char *MagickGetReleaseDate(void)
1366 {
1367   return(GetMagickReleaseDate());
1368 }
1369 \f
1370 /*
1371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1372 %                                                                             %
1373 %                                                                             %
1374 %                                                                             %
1375 %   M a g i c k G e t R e s o l u t i o n                                     %
1376 %                                                                             %
1377 %                                                                             %
1378 %                                                                             %
1379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1380 %
1381 %  MagickGetResolution() gets the image X and Y resolution.
1382 %
1383 %  The format of the MagickGetResolution method is:
1384 %
1385 %      MagickBooleanType MagickGetResolution(const MagickWand *wand,double *x,
1386 %        double *y)
1387 %
1388 %  A description of each parameter follows:
1389 %
1390 %    o wand: the magick wand.
1391 %
1392 %    o x: the x-resolution.
1393 %
1394 %    o y: the y-resolution.
1395 %
1396 */
1397 WandExport MagickBooleanType MagickGetResolution(const MagickWand *wand,
1398   double *x,double *y)
1399 {
1400   assert(wand != (MagickWand *) NULL);
1401   assert(wand->signature == WandSignature);
1402   if (wand->debug != MagickFalse)
1403     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1404   *x=72.0;
1405   *y=72.0;
1406   if (wand->image_info->density != (char *) NULL)
1407     {
1408       GeometryInfo
1409         geometry_info;
1410
1411       MagickStatusType
1412         flags;
1413
1414       flags=ParseGeometry(wand->image_info->density,&geometry_info);
1415       *x=geometry_info.rho;
1416       *y=geometry_info.sigma;
1417       if ((flags & SigmaValue) == MagickFalse)
1418         *y=(*x);
1419     }
1420   return(MagickTrue);
1421 }
1422 \f
1423 /*
1424 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1425 %                                                                             %
1426 %                                                                             %
1427 %                                                                             %
1428 %   M a g i c k G e t R e s o u r c e                                         %
1429 %                                                                             %
1430 %                                                                             %
1431 %                                                                             %
1432 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1433 %
1434 %  MagickGetResource() returns the specified resource in megabytes.
1435 %
1436 %  The format of the MagickGetResource method is:
1437 %
1438 %      MagickSizeType MagickGetResource(const ResourceType type)
1439 %
1440 %  A description of each parameter follows:
1441 %
1442 %    o wand: the magick wand.
1443 %
1444 */
1445 WandExport MagickSizeType MagickGetResource(const ResourceType type)
1446 {
1447   return(GetMagickResource(type));
1448 }
1449 \f
1450 /*
1451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1452 %                                                                             %
1453 %                                                                             %
1454 %                                                                             %
1455 %   M a g i c k G e t R e s o u r c e L i m i t                               %
1456 %                                                                             %
1457 %                                                                             %
1458 %                                                                             %
1459 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1460 %
1461 %  MagickGetResourceLimit() returns the specified resource limit in megabytes.
1462 %
1463 %  The format of the MagickGetResourceLimit method is:
1464 %
1465 %      MagickSizeType MagickGetResourceLimit(const ResourceType type)
1466 %
1467 %  A description of each parameter follows:
1468 %
1469 %    o wand: the magick wand.
1470 %
1471 */
1472 WandExport MagickSizeType MagickGetResourceLimit(const ResourceType type)
1473 {
1474   return(GetMagickResourceLimit(type));
1475 }
1476 \f
1477 /*
1478 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1479 %                                                                             %
1480 %                                                                             %
1481 %                                                                             %
1482 %   M a g i c k G e t S a m p l i n g F a c t o r s                           %
1483 %                                                                             %
1484 %                                                                             %
1485 %                                                                             %
1486 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1487 %
1488 %  MagickGetSamplingFactors() gets the horizontal and vertical sampling factor.
1489 %
1490 %  The format of the MagickGetSamplingFactors method is:
1491 %
1492 %      double *MagickGetSamplingFactor(MagickWand *wand,
1493 %        size_t *number_factors)
1494 %
1495 %  A description of each parameter follows:
1496 %
1497 %    o wand: the magick wand.
1498 %
1499 %    o number_factors: the number of factors in the returned array.
1500 %
1501 */
1502 WandExport double *MagickGetSamplingFactors(MagickWand *wand,
1503   size_t *number_factors)
1504 {
1505   double
1506     *sampling_factors;
1507
1508   register const char
1509     *p;
1510
1511   register ssize_t
1512     i;
1513
1514   assert(wand != (MagickWand *) NULL);
1515   assert(wand->signature == WandSignature);
1516   if (wand->debug != MagickFalse)
1517     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1518   *number_factors=0;
1519   sampling_factors=(double *) NULL;
1520   if (wand->image_info->sampling_factor == (char *) NULL)
1521     return(sampling_factors);
1522   i=0;
1523   for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,','))
1524   {
1525     while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) ||
1526            (*p == ',')))
1527       p++;
1528     i++;
1529   }
1530   sampling_factors=(double *) AcquireQuantumMemory((size_t) i,
1531     sizeof(*sampling_factors));
1532   if (sampling_factors == (double *) NULL)
1533     ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
1534       wand->image_info->filename);
1535   i=0;
1536   for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,','))
1537   {
1538     while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) ||
1539            (*p == ',')))
1540       p++;
1541     sampling_factors[i]=StringToDouble(p,(char **) NULL);
1542     i++;
1543   }
1544   *number_factors=(size_t) i;
1545   return(sampling_factors);
1546 }
1547 \f
1548 /*
1549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1550 %                                                                             %
1551 %                                                                             %
1552 %                                                                             %
1553 %   M a g i c k G e t S i z e                                                 %
1554 %                                                                             %
1555 %                                                                             %
1556 %                                                                             %
1557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1558 %
1559 %  MagickGetSize() returns the size associated with the magick wand.
1560 %
1561 %  The format of the MagickGetSize method is:
1562 %
1563 %      MagickBooleanType MagickGetSize(const MagickWand *wand,
1564 %        size_t *columns,size_t *rows)
1565 %
1566 %  A description of each parameter follows:
1567 %
1568 %    o wand: the magick wand.
1569 %
1570 %    o columns: the width in pixels.
1571 %
1572 %    o height: the height in pixels.
1573 %
1574 */
1575 WandExport MagickBooleanType MagickGetSize(const MagickWand *wand,
1576   size_t *columns,size_t *rows)
1577 {
1578   RectangleInfo
1579     geometry;
1580
1581   assert(wand != (const MagickWand *) NULL);
1582   assert(wand->signature == WandSignature);
1583   if (wand->debug != MagickFalse)
1584     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1585   (void) ResetMagickMemory(&geometry,0,sizeof(geometry));
1586   (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1587   *columns=geometry.width;
1588   *rows=geometry.height;
1589   return(MagickTrue);
1590 }
1591 \f
1592 /*
1593 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1594 %                                                                             %
1595 %                                                                             %
1596 %                                                                             %
1597 %   M a g i c k G e t S i z e O f f s e t                                     %
1598 %                                                                             %
1599 %                                                                             %
1600 %                                                                             %
1601 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1602 %
1603 %  MagickGetSizeOffset() returns the size offset associated with the magick
1604 %  wand.
1605 %
1606 %  The format of the MagickGetSizeOffset method is:
1607 %
1608 %      MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
1609 %        ssize_t *offset)
1610 %
1611 %  A description of each parameter follows:
1612 %
1613 %    o wand: the magick wand.
1614 %
1615 %    o offset: the image offset.
1616 %
1617 */
1618 WandExport MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
1619   ssize_t *offset)
1620 {
1621   RectangleInfo
1622     geometry;
1623
1624   assert(wand != (const MagickWand *) NULL);
1625   assert(wand->signature == WandSignature);
1626   if (wand->debug != MagickFalse)
1627     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1628   (void) ResetMagickMemory(&geometry,0,sizeof(geometry));
1629   (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1630   *offset=geometry.x;
1631   return(MagickTrue);
1632 }
1633 \f
1634 /*
1635 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1636 %                                                                             %
1637 %                                                                             %
1638 %                                                                             %
1639 %   M a g i c k G e t T y p e                                                 %
1640 %                                                                             %
1641 %                                                                             %
1642 %                                                                             %
1643 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1644 %
1645 %  MagickGetType() returns the wand type.
1646 %
1647 %  The format of the MagickGetType method is:
1648 %
1649 %      ImageType MagickGetType(MagickWand *wand)
1650 %
1651 %  A description of each parameter follows:
1652 %
1653 %    o wand: the magick wand.
1654 %
1655 */
1656 WandExport ImageType MagickGetType(MagickWand *wand)
1657 {
1658   assert(wand != (MagickWand *) NULL);
1659   assert(wand->signature == WandSignature);
1660   if (wand->debug != MagickFalse)
1661     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1662   return(wand->image_info->type);
1663 }
1664 \f
1665 /*
1666 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1667 %                                                                             %
1668 %                                                                             %
1669 %                                                                             %
1670 %   M a g i c k G e t V e r s i o n                                           %
1671 %                                                                             %
1672 %                                                                             %
1673 %                                                                             %
1674 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1675 %
1676 %  MagickGetVersion() returns the ImageMagick API version as a string constant
1677 %  and as a number.
1678 %
1679 %  The format of the MagickGetVersion method is:
1680 %
1681 %      const char *MagickGetVersion(size_t *version)
1682 %
1683 %  A description of each parameter follows:
1684 %
1685 %    o version: the ImageMagick version is returned as a number.
1686 %
1687 */
1688 WandExport const char *MagickGetVersion(size_t *version)
1689 {
1690   return(GetMagickVersion(version));
1691 }
1692 \f
1693 /*
1694 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1695 %                                                                             %
1696 %                                                                             %
1697 %                                                                             %
1698 %   M a g i c k P r o f i l e I m a g e                                       %
1699 %                                                                             %
1700 %                                                                             %
1701 %                                                                             %
1702 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1703 %
1704 %  MagickProfileImage() adds or removes a ICC, IPTC, or generic profile
1705 %  from an image.  If the profile is NULL, it is removed from the image
1706 %  otherwise added.  Use a name of '*' and a profile of NULL to remove all
1707 %  profiles from the image.
1708 %
1709 %  The format of the MagickProfileImage method is:
1710 %
1711 %      MagickBooleanType MagickProfileImage(MagickWand *wand,const char *name,
1712 %        const void *profile,const size_t length)
1713 %
1714 %  A description of each parameter follows:
1715 %
1716 %    o wand: the magick wand.
1717 %
1718 %    o name: Name of profile to add or remove: ICC, IPTC, or generic profile.
1719 %
1720 %    o profile: the profile.
1721 %
1722 %    o length: the length of the profile.
1723 %
1724 */
1725 WandExport MagickBooleanType MagickProfileImage(MagickWand *wand,
1726   const char *name,const void *profile,const size_t length)
1727 {
1728   assert(wand != (MagickWand *) NULL);
1729   assert(wand->signature == WandSignature);
1730   if (wand->debug != MagickFalse)
1731     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1732   if (wand->images == (Image *) NULL)
1733     ThrowWandException(WandError,"ContainsNoImages",wand->name);
1734   return(ProfileImage(wand->images,name,profile,length,wand->exception));
1735 }
1736 \f
1737 /*
1738 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1739 %                                                                             %
1740 %                                                                             %
1741 %                                                                             %
1742 %   M a g i c k R e m o v e I m a g e P r o f i l e                           %
1743 %                                                                             %
1744 %                                                                             %
1745 %                                                                             %
1746 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1747 %
1748 %  MagickRemoveImageProfile() removes the named image profile and returns it.
1749 %
1750 %  The format of the MagickRemoveImageProfile method is:
1751 %
1752 %      unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1753 %        const char *name,size_t *length)
1754 %
1755 %  A description of each parameter follows:
1756 %
1757 %    o wand: the magick wand.
1758 %
1759 %    o name: Name of profile to return: ICC, IPTC, or generic profile.
1760 %
1761 %    o length: the length of the profile.
1762 %
1763 */
1764 WandExport unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1765   const char *name,size_t *length)
1766 {
1767   StringInfo
1768     *profile;
1769
1770   unsigned char
1771     *datum;
1772
1773   assert(wand != (MagickWand *) NULL);
1774   assert(wand->signature == WandSignature);
1775   if (wand->debug != MagickFalse)
1776     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1777   if (wand->images == (Image *) NULL)
1778     {
1779       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1780         "ContainsNoImages","`%s'",wand->name);
1781       return((unsigned char *) NULL);
1782     }
1783   *length=0;
1784   profile=RemoveImageProfile(wand->images,name);
1785   if (profile == (StringInfo *) NULL)
1786     return((unsigned char *) NULL);
1787   datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile),
1788     sizeof(*datum));
1789   if (datum == (unsigned char *) NULL)
1790     return((unsigned char *) NULL);
1791   (void) CopyMagickMemory(datum,GetStringInfoDatum(profile),
1792     GetStringInfoLength(profile));
1793   *length=GetStringInfoLength(profile);
1794   profile=DestroyStringInfo(profile);
1795   return(datum);
1796 }
1797 \f
1798 /*
1799 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1800 %                                                                             %
1801 %                                                                             %
1802 %                                                                             %
1803 %   M a g i c k S e t A n t i a l i a s                                       %
1804 %                                                                             %
1805 %                                                                             %
1806 %                                                                             %
1807 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1808 %
1809 %  MagickSetAntialias() sets the antialias propery of the wand.
1810 %
1811 %  The format of the MagickSetAntialias method is:
1812 %
1813 %      MagickBooleanType MagickSetAntialias(MagickWand *wand,
1814 %        const MagickBooleanType antialias)
1815 %
1816 %  A description of each parameter follows:
1817 %
1818 %    o wand: the magick wand.
1819 %
1820 %    o antialias: the antialias property.
1821 %
1822 */
1823 WandExport MagickBooleanType MagickSetAntialias(MagickWand *wand,
1824   const MagickBooleanType antialias)
1825 {
1826   assert(wand != (MagickWand *) NULL);
1827   assert(wand->signature == WandSignature);
1828   if (wand->debug != MagickFalse)
1829     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1830   wand->image_info->antialias=antialias;
1831   return(MagickTrue);
1832 }
1833 \f
1834 /*
1835 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1836 %                                                                             %
1837 %                                                                             %
1838 %                                                                             %
1839 %   M a g i c k S e t B a c k g r o u n d C o l o r                           %
1840 %                                                                             %
1841 %                                                                             %
1842 %                                                                             %
1843 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1844 %
1845 %  MagickSetBackgroundColor() sets the wand background color.
1846 %
1847 %  The format of the MagickSetBackgroundColor method is:
1848 %
1849 %      MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1850 %        const PixelWand *background)
1851 %
1852 %  A description of each parameter follows:
1853 %
1854 %    o wand: the magick wand.
1855 %
1856 %    o background: the background pixel wand.
1857 %
1858 */
1859 WandExport MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1860   const PixelWand *background)
1861 {
1862   assert(wand != (MagickWand *) NULL);
1863   assert(wand->signature == WandSignature);
1864   if (wand->debug != MagickFalse)
1865     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1866   PixelGetQuantumPacket(background,&wand->image_info->background_color);
1867   return(MagickTrue);
1868 }
1869 \f
1870 /*
1871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1872 %                                                                             %
1873 %                                                                             %
1874 %                                                                             %
1875 %   M a g i c k S e t C o l o r s p a c e                                     %
1876 %                                                                             %
1877 %                                                                             %
1878 %                                                                             %
1879 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1880 %
1881 %  MagickSetColorspace() sets the wand colorspace type.
1882 %
1883 %  The format of the MagickSetColorspace method is:
1884 %
1885 %      MagickBooleanType MagickSetColorspace(MagickWand *wand,
1886 %        const ColorspaceType colorspace)
1887 %
1888 %  A description of each parameter follows:
1889 %
1890 %    o wand: the magick wand.
1891 %
1892 %    o colorspace: the wand colorspace.
1893 %
1894 */
1895 WandExport MagickBooleanType MagickSetColorspace(MagickWand *wand,
1896   const ColorspaceType colorspace)
1897 {
1898   assert(wand != (MagickWand *) NULL);
1899   assert(wand->signature == WandSignature);
1900   if (wand->debug != MagickFalse)
1901     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1902   wand->image_info->colorspace=colorspace;
1903   return(MagickTrue);
1904 }
1905 \f
1906 /*
1907 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1908 %                                                                             %
1909 %                                                                             %
1910 %                                                                             %
1911 %   M a g i c k S e t C o m p r e s s i o n                                   %
1912 %                                                                             %
1913 %                                                                             %
1914 %                                                                             %
1915 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1916 %
1917 %  MagickSetCompression() sets the wand compression type.
1918 %
1919 %  The format of the MagickSetCompression method is:
1920 %
1921 %      MagickBooleanType MagickSetCompression(MagickWand *wand,
1922 %        const CompressionType compression)
1923 %
1924 %  A description of each parameter follows:
1925 %
1926 %    o wand: the magick wand.
1927 %
1928 %    o compression: the wand compression.
1929 %
1930 */
1931 WandExport MagickBooleanType MagickSetCompression(MagickWand *wand,
1932   const CompressionType compression)
1933 {
1934   assert(wand != (MagickWand *) NULL);
1935   assert(wand->signature == WandSignature);
1936   if (wand->debug != MagickFalse)
1937     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1938   wand->image_info->compression=compression;
1939   return(MagickTrue);
1940 }
1941 \f
1942 /*
1943 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1944 %                                                                             %
1945 %                                                                             %
1946 %                                                                             %
1947 %   M a g i c k S e t C o m p r e s s i o n Q u a l i t y                     %
1948 %                                                                             %
1949 %                                                                             %
1950 %                                                                             %
1951 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1952 %
1953 %  MagickSetCompressionQuality() sets the wand compression quality.
1954 %
1955 %  The format of the MagickSetCompressionQuality method is:
1956 %
1957 %      MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1958 %        const size_t quality)
1959 %
1960 %  A description of each parameter follows:
1961 %
1962 %    o wand: the magick wand.
1963 %
1964 %    o quality: the wand compression quality.
1965 %
1966 */
1967 WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1968   const size_t quality)
1969 {
1970   assert(wand != (MagickWand *) NULL);
1971   assert(wand->signature == WandSignature);
1972   if (wand->debug != MagickFalse)
1973     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1974   wand->image_info->quality=quality;
1975   return(MagickTrue);
1976 }
1977 \f
1978 /*
1979 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1980 %                                                                             %
1981 %                                                                             %
1982 %                                                                             %
1983 %   M a g i c k S e t D e p t h                                               %
1984 %                                                                             %
1985 %                                                                             %
1986 %                                                                             %
1987 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1988 %
1989 %  MagickSetDepth() sets the wand pixel depth.
1990 %
1991 %  The format of the MagickSetDepth method is:
1992 %
1993 %      MagickBooleanType MagickSetDepth(MagickWand *wand,
1994 %        const size_t depth)
1995 %
1996 %  A description of each parameter follows:
1997 %
1998 %    o wand: the magick wand.
1999 %
2000 %    o depth: the wand pixel depth.
2001 %
2002 */
2003 WandExport MagickBooleanType MagickSetDepth(MagickWand *wand,
2004   const size_t depth)
2005 {
2006   assert(wand != (MagickWand *) NULL);
2007   assert(wand->signature == WandSignature);
2008   if (wand->debug != MagickFalse)
2009     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2010   wand->image_info->depth=depth;
2011   return(MagickTrue);
2012 }
2013 \f
2014 /*
2015 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2016 %                                                                             %
2017 %                                                                             %
2018 %                                                                             %
2019 %   M a g i c k S e t E x t r a c t                                           %
2020 %                                                                             %
2021 %                                                                             %
2022 %                                                                             %
2023 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2024 %
2025 %  MagickSetExtract() sets the extract geometry before you read or write an
2026 %  image file.  Use it for inline cropping (e.g. 200x200+0+0) or resizing
2027 %  (e.g.200x200).
2028 %
2029 %  The format of the MagickSetExtract method is:
2030 %
2031 %      MagickBooleanType MagickSetExtract(MagickWand *wand,
2032 %        const char *geometry)
2033 %
2034 %  A description of each parameter follows:
2035 %
2036 %    o wand: the magick wand.
2037 %
2038 %    o geometry: the extract geometry.
2039 %
2040 */
2041 WandExport MagickBooleanType MagickSetExtract(MagickWand *wand,
2042   const char *geometry)
2043 {
2044   assert(wand != (MagickWand *) NULL);
2045   assert(wand->signature == WandSignature);
2046   if (wand->debug != MagickFalse)
2047     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2048   if (geometry != (const char *) NULL)
2049     (void) CopyMagickString(wand->image_info->extract,geometry,MaxTextExtent);
2050   return(MagickTrue);
2051 }
2052 \f
2053 /*
2054 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2055 %                                                                             %
2056 %                                                                             %
2057 %                                                                             %
2058 %   M a g i c k S e t F i l e n a m e                                         %
2059 %                                                                             %
2060 %                                                                             %
2061 %                                                                             %
2062 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2063 %
2064 %  MagickSetFilename() sets the filename before you read or write an image file.
2065 %
2066 %  The format of the MagickSetFilename method is:
2067 %
2068 %      MagickBooleanType MagickSetFilename(MagickWand *wand,
2069 %        const char *filename)
2070 %
2071 %  A description of each parameter follows:
2072 %
2073 %    o wand: the magick wand.
2074 %
2075 %    o filename: the image filename.
2076 %
2077 */
2078 WandExport MagickBooleanType MagickSetFilename(MagickWand *wand,
2079   const char *filename)
2080 {
2081   assert(wand != (MagickWand *) NULL);
2082   assert(wand->signature == WandSignature);
2083   if (wand->debug != MagickFalse)
2084     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2085   if (filename != (const char *) NULL)
2086     (void) CopyMagickString(wand->image_info->filename,filename,MaxTextExtent);
2087   return(MagickTrue);
2088 }
2089 \f
2090 /*
2091 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2092 %                                                                             %
2093 %                                                                             %
2094 %                                                                             %
2095 %   M a g i c k S e t F o n t                                                 %
2096 %                                                                             %
2097 %                                                                             %
2098 %                                                                             %
2099 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2100 %
2101 %  MagickSetFont() sets the font associated with the MagickWand.
2102 %
2103 %  The format of the MagickSetFont method is:
2104 %
2105 %      MagickBooleanType MagickSetFont(MagickWand *wand, const char *font)
2106 %
2107 %  A description of each parameter follows:
2108 %
2109 %    o wand: the magick wand.
2110 %
2111 %    o font: the font
2112 %
2113 */
2114 WandExport MagickBooleanType MagickSetFont(MagickWand *wand,const char *font)
2115 {
2116   if ((font == (const char *) NULL) || (*font == '\0'))
2117     return(MagickFalse);
2118   assert(wand != (MagickWand *) NULL);
2119   assert(wand->signature == WandSignature);
2120   if (wand->debug != MagickFalse)
2121     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2122   (void) CloneString(&wand->image_info->font,font);
2123   return(MagickTrue);
2124 }
2125 \f
2126 /*
2127 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2128 %                                                                             %
2129 %                                                                             %
2130 %                                                                             %
2131 %   M a g i c k S e t F o r m a t                                             %
2132 %                                                                             %
2133 %                                                                             %
2134 %                                                                             %
2135 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2136 %
2137 %  MagickSetFormat() sets the format of the magick wand.
2138 %
2139 %  The format of the MagickSetFormat method is:
2140 %
2141 %      MagickBooleanType MagickSetFormat(MagickWand *wand,const char *format)
2142 %
2143 %  A description of each parameter follows:
2144 %
2145 %    o wand: the magick wand.
2146 %
2147 %    o format: the image format.
2148 %
2149 */
2150 WandExport MagickBooleanType MagickSetFormat(MagickWand *wand,
2151   const char *format)
2152 {
2153   const MagickInfo
2154     *magick_info;
2155
2156   assert(wand != (MagickWand *) NULL);
2157   assert(wand->signature == WandSignature);
2158   if (wand->debug != MagickFalse)
2159     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2160   if ((format == (char *) NULL) || (*format == '\0'))
2161     {
2162       *wand->image_info->magick='\0';
2163       return(MagickTrue);
2164     }
2165   magick_info=GetMagickInfo(format,wand->exception);
2166   if (magick_info == (const MagickInfo *) NULL)
2167     return(MagickFalse);
2168   ClearMagickException(wand->exception);
2169   (void) CopyMagickString(wand->image_info->magick,format,MaxTextExtent);
2170   return(MagickTrue);
2171 }
2172 \f
2173 /*
2174 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2175 %                                                                             %
2176 %                                                                             %
2177 %                                                                             %
2178 %   M a g i c k S e t G r a v i t y                                           %
2179 %                                                                             %
2180 %                                                                             %
2181 %                                                                             %
2182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2183 %
2184 %  MagickSetGravity() sets the gravity type.
2185 %
2186 %  The format of the MagickSetGravity type is:
2187 %
2188 %      MagickBooleanType MagickSetGravity(MagickWand *wand,
2189 %        const GravityType type)
2190 %
2191 %  A description of each parameter follows:
2192 %
2193 %    o wand: the magick wand.
2194 %
2195 %    o type: the gravity type.
2196 %
2197 */
2198 WandExport MagickBooleanType MagickSetGravity(MagickWand *wand,
2199   const GravityType type)
2200 {
2201   MagickBooleanType
2202     status;
2203
2204   assert(wand != (MagickWand *) NULL);
2205   assert(wand->signature == WandSignature);
2206   if (wand->debug != MagickFalse)
2207     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2208   status=SetImageOption(wand->image_info,"gravity",CommandOptionToMnemonic(
2209     MagickGravityOptions,(ssize_t) type));
2210   return(status);
2211 }
2212 \f
2213 /*
2214 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2215 %                                                                             %
2216 %                                                                             %
2217 %                                                                             %
2218 %   M a g i c k S e t I m a g e A r t i f r c t                               %
2219 %                                                                             %
2220 %                                                                             %
2221 %                                                                             %
2222 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2223 %
2224 %  MagickSetImageArtifact() associates a artifact with an image.
2225 %
2226 %  The format of the MagickSetImageArtifact method is:
2227 %
2228 %      MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2229 %        const char *artifact,const char *value)
2230 %
2231 %  A description of each parameter follows:
2232 %
2233 %    o wand: the magick wand.
2234 %
2235 %    o artifact: the artifact.
2236 %
2237 %    o value: the value.
2238 %
2239 */
2240 WandExport MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2241   const char *artifact,const char *value)
2242 {
2243   assert(wand != (MagickWand *) NULL);
2244   assert(wand->signature == WandSignature);
2245   if (wand->debug != MagickFalse)
2246     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2247   if (wand->images == (Image *) NULL)
2248     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2249   return(SetImageArtifact(wand->images,artifact,value));
2250 }
2251 \f
2252 /*
2253 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2254 %                                                                             %
2255 %                                                                             %
2256 %                                                                             %
2257 %   M a g i c k S e t P r o f i l e I m a g e                                 %
2258 %                                                                             %
2259 %                                                                             %
2260 %                                                                             %
2261 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2262 %
2263 %  MagickSetImageProfile() adds a named profile to the magick wand.  If a
2264 %  profile with the same name already exists, it is replaced.  This method
2265 %  differs from the MagickProfileImage() method in that it does not apply any
2266 %  CMS color profiles.
2267 %
2268 %  The format of the MagickSetImageProfile method is:
2269 %
2270 %      MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2271 %        const char *name,const void *profile,const size_t length)
2272 %
2273 %  A description of each parameter follows:
2274 %
2275 %    o wand: the magick wand.
2276 %
2277 %    o name: Name of profile to add or remove: ICC, IPTC, or generic profile.
2278 %
2279 %    o profile: the profile.
2280 %
2281 %    o length: the length of the profile.
2282 %
2283 */
2284 WandExport MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2285   const char *name,const void *profile,const size_t length)
2286 {
2287   MagickBooleanType
2288     status;
2289
2290   StringInfo
2291     *profile_info;
2292
2293   assert(wand != (MagickWand *) NULL);
2294   assert(wand->signature == WandSignature);
2295   if (wand->debug != MagickFalse)
2296     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2297   if (wand->images == (Image *) NULL)
2298     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2299   profile_info=AcquireStringInfo((size_t) length);
2300   SetStringInfoDatum(profile_info,(unsigned char *) profile);
2301   status=SetImageProfile(wand->images,name,profile_info,wand->exception);
2302   profile_info=DestroyStringInfo(profile_info);
2303   return(status);
2304 }
2305 \f
2306 /*
2307 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2308 %                                                                             %
2309 %                                                                             %
2310 %                                                                             %
2311 %   M a g i c k S e t I m a g e P r o p e r t y                               %
2312 %                                                                             %
2313 %                                                                             %
2314 %                                                                             %
2315 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2316 %
2317 %  MagickSetImageProperty() associates a property with an image.
2318 %
2319 %  The format of the MagickSetImageProperty method is:
2320 %
2321 %      MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2322 %        const char *property,const char *value)
2323 %
2324 %  A description of each parameter follows:
2325 %
2326 %    o wand: the magick wand.
2327 %
2328 %    o property: the property.
2329 %
2330 %    o value: the value.
2331 %
2332 */
2333 WandExport MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2334   const char *property,const char *value)
2335 {
2336   MagickBooleanType
2337     status;
2338
2339   assert(wand != (MagickWand *) NULL);
2340   assert(wand->signature == WandSignature);
2341   if (wand->debug != MagickFalse)
2342     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2343   if (wand->images == (Image *) NULL)
2344     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2345   status=SetImageProperty(wand->images,property,value,wand->exception);
2346   return(status);
2347 }
2348 \f
2349 /*
2350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2351 %                                                                             %
2352 %                                                                             %
2353 %                                                                             %
2354 %   M a g i c k S e t I n t e r l a c e S c h e m e                           %
2355 %                                                                             %
2356 %                                                                             %
2357 %                                                                             %
2358 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2359 %
2360 %  MagickSetInterlaceScheme() sets the image compression.
2361 %
2362 %  The format of the MagickSetInterlaceScheme method is:
2363 %
2364 %      MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2365 %        const InterlaceType interlace_scheme)
2366 %
2367 %  A description of each parameter follows:
2368 %
2369 %    o wand: the magick wand.
2370 %
2371 %    o interlace_scheme: the image interlace scheme: NoInterlace, LineInterlace,
2372 %      PlaneInterlace, PartitionInterlace.
2373 %
2374 */
2375 WandExport MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2376   const InterlaceType interlace_scheme)
2377 {
2378   assert(wand != (MagickWand *) NULL);
2379   assert(wand->signature == WandSignature);
2380   if (wand->debug != MagickFalse)
2381     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2382   wand->image_info->interlace=interlace_scheme;
2383   return(MagickTrue);
2384 }
2385 \f
2386 /*
2387 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2388 %                                                                             %
2389 %                                                                             %
2390 %                                                                             %
2391 %   M a g i c k S e t I n t e r p o l a t e M e t h o d                       %
2392 %                                                                             %
2393 %                                                                             %
2394 %                                                                             %
2395 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2396 %
2397 %  MagickSetInterpolateMethod() sets the interpolate pixel method.
2398 %
2399 %  The format of the MagickSetInterpolateMethod method is:
2400 %
2401 %      MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2402 %        const InterpolateMethodPixel method)
2403 %
2404 %  A description of each parameter follows:
2405 %
2406 %    o wand: the magick wand.
2407 %
2408 %    o method: the interpolate pixel method.
2409 %
2410 */
2411 WandExport MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2412   const PixelInterpolateMethod method)
2413 {
2414   MagickBooleanType
2415     status;
2416
2417   assert(wand != (MagickWand *) NULL);
2418   assert(wand->signature == WandSignature);
2419   if (wand->debug != MagickFalse)
2420     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2421   status=SetImageOption(wand->image_info,"interpolate",
2422     CommandOptionToMnemonic(MagickInterpolateOptions,(ssize_t) method));
2423   return(status);
2424 }
2425 \f
2426 /*
2427 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2428 %                                                                             %
2429 %                                                                             %
2430 %                                                                             %
2431 %   M a g i c k S e t O p t i o n                                             %
2432 %                                                                             %
2433 %                                                                             %
2434 %                                                                             %
2435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2436 %
2437 %  MagickSetOption() associates one or options with the wand (.e.g
2438 %  MagickSetOption(wand,"jpeg:perserve","yes")).
2439 %
2440 %  The format of the MagickSetOption method is:
2441 %
2442 %      MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2443 %        const char *value)
2444 %
2445 %  A description of each parameter follows:
2446 %
2447 %    o wand: the magick wand.
2448 %
2449 %    o key:  The key.
2450 %
2451 %    o value:  The value.
2452 %
2453 */
2454 WandExport MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2455   const char *value)
2456 {
2457   assert(wand != (MagickWand *) NULL);
2458   assert(wand->signature == WandSignature);
2459   if (wand->debug != MagickFalse)
2460     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2461   return(SetImageOption(wand->image_info,key,value));
2462 }
2463 \f
2464 /*
2465 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2466 %                                                                             %
2467 %                                                                             %
2468 %                                                                             %
2469 %   M a g i c k S e t O r i e n t a t i o n                                   %
2470 %                                                                             %
2471 %                                                                             %
2472 %                                                                             %
2473 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2474 %
2475 %  MagickSetOrientation() sets the wand orientation type.
2476 %
2477 %  The format of the MagickSetOrientation method is:
2478 %
2479 %      MagickBooleanType MagickSetOrientation(MagickWand *wand,
2480 %        const OrientationType orientation)
2481 %
2482 %  A description of each parameter follows:
2483 %
2484 %    o wand: the magick wand.
2485 %
2486 %    o orientation: the wand orientation.
2487 %
2488 */
2489 WandExport MagickBooleanType MagickSetOrientation(MagickWand *wand,
2490   const OrientationType orientation)
2491 {
2492   assert(wand != (MagickWand *) NULL);
2493   assert(wand->signature == WandSignature);
2494   if (wand->debug != MagickFalse)
2495     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2496   wand->image_info->orientation=orientation;
2497   return(MagickTrue);
2498 }
2499 \f
2500 /*
2501 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2502 %                                                                             %
2503 %                                                                             %
2504 %                                                                             %
2505 %   M a g i c k S e t P a g e                                                 %
2506 %                                                                             %
2507 %                                                                             %
2508 %                                                                             %
2509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2510 %
2511 %  MagickSetPage() sets the page geometry of the magick wand.
2512 %
2513 %  The format of the MagickSetPage method is:
2514 %
2515 %      MagickBooleanType MagickSetPage(MagickWand *wand,
2516 %        const size_t width,const size_t height,const ssize_t x,
2517 %        const ssize_t y)
2518 %
2519 %  A description of each parameter follows:
2520 %
2521 %    o wand: the magick wand.
2522 %
2523 %    o width: the page width.
2524 %
2525 %    o height: the page height.
2526 %
2527 %    o x: the page x-offset.
2528 %
2529 %    o y: the page y-offset.
2530 %
2531 */
2532 WandExport MagickBooleanType MagickSetPage(MagickWand *wand,
2533   const size_t width,const size_t height,const ssize_t x,
2534   const ssize_t y)
2535 {
2536   char
2537     geometry[MaxTextExtent];
2538
2539   assert(wand != (MagickWand *) NULL);
2540   assert(wand->signature == WandSignature);
2541   if (wand->debug != MagickFalse)
2542     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2543   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
2544     (double) width,(double) height,(double) x,(double) y);
2545   (void) CloneString(&wand->image_info->page,geometry);
2546   return(MagickTrue);
2547 }
2548 \f
2549 /*
2550 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2551 %                                                                             %
2552 %                                                                             %
2553 %                                                                             %
2554 %   M a g i c k S e t P a s s p h r a s e                                     %
2555 %                                                                             %
2556 %                                                                             %
2557 %                                                                             %
2558 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2559 %
2560 %  MagickSetPassphrase() sets the passphrase.
2561 %
2562 %  The format of the MagickSetPassphrase method is:
2563 %
2564 %      MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2565 %        const char *passphrase)
2566 %
2567 %  A description of each parameter follows:
2568 %
2569 %    o wand: the magick wand.
2570 %
2571 %    o passphrase: the passphrase.
2572 %
2573 */
2574 WandExport MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2575   const char *passphrase)
2576 {
2577   assert(wand != (MagickWand *) NULL);
2578   assert(wand->signature == WandSignature);
2579   if (wand->debug != MagickFalse)
2580     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2581   (void) SetImageOption(wand->image_info,"authenticate",passphrase);
2582   return(MagickTrue);
2583 }
2584 \f
2585 /*
2586 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2587 %                                                                             %
2588 %                                                                             %
2589 %                                                                             %
2590 %   M a g i c k S e t P o i n t s i z e                                       %
2591 %                                                                             %
2592 %                                                                             %
2593 %                                                                             %
2594 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2595 %
2596 %  MagickSetPointsize() sets the font pointsize associated with the MagickWand.
2597 %
2598 %  The format of the MagickSetPointsize method is:
2599 %
2600 %      MagickBooleanType MagickSetPointsize(MagickWand *wand,
2601 %        const double pointsize)
2602 %
2603 %  A description of each parameter follows:
2604 %
2605 %    o wand: the magick wand.
2606 %
2607 %    o pointsize: the size of the font
2608 %
2609 */
2610 WandExport MagickBooleanType MagickSetPointsize(MagickWand *wand,
2611   const double pointsize)
2612 {
2613   assert(wand != (MagickWand *) NULL);
2614   assert(wand->signature == WandSignature);
2615   if (wand->debug != MagickFalse)
2616     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2617   wand->image_info->pointsize=pointsize;
2618   return(MagickTrue);
2619 }
2620 \f
2621 /*
2622 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2623 %                                                                             %
2624 %                                                                             %
2625 %                                                                             %
2626 %   M a g i c k S e t P r o g r e s s M o n i t o r                           %
2627 %                                                                             %
2628 %                                                                             %
2629 %                                                                             %
2630 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2631 %
2632 %  MagickSetProgressMonitor() sets the wand progress monitor to the specified
2633 %  method and returns the previous progress monitor if any.  The progress
2634 %  monitor method looks like this:
2635 %
2636 %    MagickBooleanType MagickProgressMonitor(const char *text,
2637 %      const MagickOffsetType offset,const MagickSizeType span,
2638 %      void *client_data)
2639 %
2640 %  If the progress monitor returns MagickFalse, the current operation is
2641 %  interrupted.
2642 %
2643 %  The format of the MagickSetProgressMonitor method is:
2644 %
2645 %      MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand
2646 %        const MagickProgressMonitor progress_monitor,void *client_data)
2647 %
2648 %  A description of each parameter follows:
2649 %
2650 %    o wand: the magick wand.
2651 %
2652 %    o progress_monitor: Specifies a pointer to a method to monitor progress
2653 %      of an image operation.
2654 %
2655 %    o client_data: Specifies a pointer to any client data.
2656 %
2657 */
2658 WandExport MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand,
2659   const MagickProgressMonitor progress_monitor,void *client_data)
2660 {
2661   MagickProgressMonitor
2662     previous_monitor;
2663
2664   assert(wand != (MagickWand *) NULL);
2665   assert(wand->signature == WandSignature);
2666   if (wand->debug != MagickFalse)
2667     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2668   previous_monitor=SetImageInfoProgressMonitor(wand->image_info,
2669     progress_monitor,client_data);
2670   return(previous_monitor);
2671 }
2672 \f
2673 /*
2674 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2675 %                                                                             %
2676 %                                                                             %
2677 %                                                                             %
2678 %   M a g i c k S e t R e s o u r c e L i m i t                               %
2679 %                                                                             %
2680 %                                                                             %
2681 %                                                                             %
2682 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2683 %
2684 %  MagickSetResourceLimit() sets the limit for a particular resource in
2685 %  megabytes.
2686 %
2687 %  The format of the MagickSetResourceLimit method is:
2688 %
2689 %      MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2690 %        const MagickSizeType limit)
2691 %
2692 %  A description of each parameter follows:
2693 %
2694 %    o type: the type of resource: AreaResource, MemoryResource, MapResource,
2695 %      DiskResource, FileResource.
2696 %
2697 %    o The maximum limit for the resource.
2698 %
2699 */
2700 WandExport MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2701   const MagickSizeType limit)
2702 {
2703   return(SetMagickResourceLimit(type,limit));
2704 }
2705 \f
2706 /*
2707 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2708 %                                                                             %
2709 %                                                                             %
2710 %                                                                             %
2711 %   M a g i c k S e t R e s o l u t i o n                                     %
2712 %                                                                             %
2713 %                                                                             %
2714 %                                                                             %
2715 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2716 %
2717 %  MagickSetResolution() sets the image resolution.
2718 %
2719 %  The format of the MagickSetResolution method is:
2720 %
2721 %      MagickBooleanType MagickSetResolution(MagickWand *wand,
2722 %        const double x_resolution,const doubtl y_resolution)
2723 %
2724 %  A description of each parameter follows:
2725 %
2726 %    o wand: the magick wand.
2727 %
2728 %    o x_resolution: the image x resolution.
2729 %
2730 %    o y_resolution: the image y resolution.
2731 %
2732 */
2733 WandExport MagickBooleanType MagickSetResolution(MagickWand *wand,
2734   const double x_resolution,const double y_resolution)
2735 {
2736   char
2737     density[MaxTextExtent];
2738
2739   assert(wand != (MagickWand *) NULL);
2740   assert(wand->signature == WandSignature);
2741   if (wand->debug != MagickFalse)
2742     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2743   (void) FormatLocaleString(density,MaxTextExtent,"%gx%g",x_resolution,
2744     y_resolution);
2745   (void) CloneString(&wand->image_info->density,density);
2746   return(MagickTrue);
2747 }
2748 \f
2749 /*
2750 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2751 %                                                                             %
2752 %                                                                             %
2753 %                                                                             %
2754 %   M a g i c k S e t S a m p l i n g F a c t o r s                           %
2755 %                                                                             %
2756 %                                                                             %
2757 %                                                                             %
2758 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2759 %
2760 %  MagickSetSamplingFactors() sets the image sampling factors.
2761 %
2762 %  The format of the MagickSetSamplingFactors method is:
2763 %
2764 %      MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2765 %        const size_t number_factors,const double *sampling_factors)
2766 %
2767 %  A description of each parameter follows:
2768 %
2769 %    o wand: the magick wand.
2770 %
2771 %    o number_factoes: the number of factors.
2772 %
2773 %    o sampling_factors: An array of doubles representing the sampling factor
2774 %      for each color component (in RGB order).
2775 %
2776 */
2777 WandExport MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2778   const size_t number_factors,const double *sampling_factors)
2779 {
2780   char
2781     sampling_factor[MaxTextExtent];
2782
2783   register ssize_t
2784     i;
2785
2786   assert(wand != (MagickWand *) NULL);
2787   assert(wand->signature == WandSignature);
2788   if (wand->debug != MagickFalse)
2789     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2790   if (wand->image_info->sampling_factor != (char *) NULL)
2791     wand->image_info->sampling_factor=(char *)
2792       RelinquishMagickMemory(wand->image_info->sampling_factor);
2793   if (number_factors == 0)
2794     return(MagickTrue);
2795   for (i=0; i < (ssize_t) (number_factors-1); i++)
2796   {
2797     (void) FormatLocaleString(sampling_factor,MaxTextExtent,"%g,",
2798       sampling_factors[i]);
2799     (void) ConcatenateString(&wand->image_info->sampling_factor,
2800       sampling_factor);
2801   }
2802   (void) FormatLocaleString(sampling_factor,MaxTextExtent,"%g",
2803     sampling_factors[i]);
2804   (void) ConcatenateString(&wand->image_info->sampling_factor,sampling_factor);
2805   return(MagickTrue);
2806 }
2807 \f
2808 /*
2809 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2810 %                                                                             %
2811 %                                                                             %
2812 %                                                                             %
2813 %   M a g i c k S e t S i z e                                                 %
2814 %                                                                             %
2815 %                                                                             %
2816 %                                                                             %
2817 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2818 %
2819 %  MagickSetSize() sets the size of the magick wand.  Set it before you
2820 %  read a raw image format such as RGB, GRAY, or CMYK.
2821 %
2822 %  The format of the MagickSetSize method is:
2823 %
2824 %      MagickBooleanType MagickSetSize(MagickWand *wand,
2825 %        const size_t columns,const size_t rows)
2826 %
2827 %  A description of each parameter follows:
2828 %
2829 %    o wand: the magick wand.
2830 %
2831 %    o columns: the width in pixels.
2832 %
2833 %    o rows: the rows in pixels.
2834 %
2835 */
2836 WandExport MagickBooleanType MagickSetSize(MagickWand *wand,
2837   const size_t columns,const size_t rows)
2838 {
2839   char
2840     geometry[MaxTextExtent];
2841
2842   assert(wand != (MagickWand *) NULL);
2843   assert(wand->signature == WandSignature);
2844   if (wand->debug != MagickFalse)
2845     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2846   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g",(double)
2847     columns,(double) rows);
2848   (void) CloneString(&wand->image_info->size,geometry);
2849   return(MagickTrue);
2850 }
2851 \f
2852 /*
2853 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2854 %                                                                             %
2855 %                                                                             %
2856 %                                                                             %
2857 %   M a g i c k S e t S i z e O f f s e t                                     %
2858 %                                                                             %
2859 %                                                                             %
2860 %                                                                             %
2861 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2862 %
2863 %  MagickSetSizeOffset() sets the size and offset of the magick wand.  Set it
2864 %  before you read a raw image format such as RGB, GRAY, or CMYK.
2865 %
2866 %  The format of the MagickSetSizeOffset method is:
2867 %
2868 %      MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2869 %        const size_t columns,const size_t rows,
2870 %        const ssize_t offset)
2871 %
2872 %  A description of each parameter follows:
2873 %
2874 %    o wand: the magick wand.
2875 %
2876 %    o columns: the image width in pixels.
2877 %
2878 %    o rows: the image rows in pixels.
2879 %
2880 %    o offset: the image offset.
2881 %
2882 */
2883 WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2884   const size_t columns,const size_t rows,const ssize_t offset)
2885 {
2886   char
2887     geometry[MaxTextExtent];
2888
2889   assert(wand != (MagickWand *) NULL);
2890   assert(wand->signature == WandSignature);
2891   if (wand->debug != MagickFalse)
2892     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2893   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g",
2894     (double) columns,(double) rows,(double) offset);
2895   (void) CloneString(&wand->image_info->size,geometry);
2896   return(MagickTrue);
2897 }
2898 \f
2899 /*
2900 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2901 %                                                                             %
2902 %                                                                             %
2903 %                                                                             %
2904 %   M a g i c k S e t T y p e                                                 %
2905 %                                                                             %
2906 %                                                                             %
2907 %                                                                             %
2908 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2909 %
2910 %  MagickSetType() sets the image type attribute.
2911 %
2912 %  The format of the MagickSetType method is:
2913 %
2914 %      MagickBooleanType MagickSetType(MagickWand *wand,
2915 %        const ImageType image_type)
2916 %
2917 %  A description of each parameter follows:
2918 %
2919 %    o wand: the magick wand.
2920 %
2921 %    o image_type: the image type:   UndefinedType, BilevelType, GrayscaleType,
2922 %      GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType,
2923 %      TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType,
2924 %      or OptimizeType.
2925 %
2926 */
2927 WandExport MagickBooleanType MagickSetType(MagickWand *wand,
2928   const ImageType image_type)
2929 {
2930   assert(wand != (MagickWand *) NULL);
2931   assert(wand->signature == WandSignature);
2932   if (wand->debug != MagickFalse)
2933     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2934   wand->image_info->type=image_type;
2935   return(MagickTrue);
2936 }