]> granicus.if.org Git - imagemagick/blob - wand/magick-property.c
(no commit message)
[imagemagick] / wand / 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-2011 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 "wand/studio.h"
50 #include "wand/MagickWand.h"
51 #include "wand/magick-wand-private.h"
52 #include "wand/wand.h"
53 #include "magick/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   PixelSetQuantumColor(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:*");
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);
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:*");
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 %      InterpolatePixelMethod MagickGetInterpolateMethod(MagickWand *wand)
999 %
1000 %  A description of each parameter follows:
1001 %
1002 %    o wand: the magick wand.
1003 %
1004 */
1005 WandExport InterpolatePixelMethod MagickGetInterpolateMethod(MagickWand *wand)
1006 {
1007   const char
1008     *option;
1009
1010   InterpolatePixelMethod
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=(InterpolatePixelMethod) 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]=LocaleToDouble(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   MagickBooleanType
1729     status;
1730
1731   assert(wand != (MagickWand *) NULL);
1732   assert(wand->signature == WandSignature);
1733   if (wand->debug != MagickFalse)
1734     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1735   if (wand->images == (Image *) NULL)
1736     ThrowWandException(WandError,"ContainsNoImages",wand->name);
1737   status=ProfileImage(wand->images,name,profile,length,MagickTrue);
1738   if (status == MagickFalse)
1739     InheritException(wand->exception,&wand->images->exception);
1740   return(status);
1741 }
1742 \f
1743 /*
1744 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1745 %                                                                             %
1746 %                                                                             %
1747 %                                                                             %
1748 %   M a g i c k R e m o v e I m a g e P r o f i l e                           %
1749 %                                                                             %
1750 %                                                                             %
1751 %                                                                             %
1752 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1753 %
1754 %  MagickRemoveImageProfile() removes the named image profile and returns it.
1755 %
1756 %  The format of the MagickRemoveImageProfile method is:
1757 %
1758 %      unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1759 %        const char *name,size_t *length)
1760 %
1761 %  A description of each parameter follows:
1762 %
1763 %    o wand: the magick wand.
1764 %
1765 %    o name: Name of profile to return: ICC, IPTC, or generic profile.
1766 %
1767 %    o length: the length of the profile.
1768 %
1769 */
1770 WandExport unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1771   const char *name,size_t *length)
1772 {
1773   StringInfo
1774     *profile;
1775
1776   unsigned char
1777     *datum;
1778
1779   assert(wand != (MagickWand *) NULL);
1780   assert(wand->signature == WandSignature);
1781   if (wand->debug != MagickFalse)
1782     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1783   if (wand->images == (Image *) NULL)
1784     {
1785       (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1786         "ContainsNoImages","`%s'",wand->name);
1787       return((unsigned char *) NULL);
1788     }
1789   *length=0;
1790   profile=RemoveImageProfile(wand->images,name);
1791   if (profile == (StringInfo *) NULL)
1792     return((unsigned char *) NULL);
1793   datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile),
1794     sizeof(*datum));
1795   if (datum == (unsigned char *) NULL)
1796     return((unsigned char *) NULL);
1797   (void) CopyMagickMemory(datum,GetStringInfoDatum(profile),
1798     GetStringInfoLength(profile));
1799   *length=GetStringInfoLength(profile);
1800   profile=DestroyStringInfo(profile);
1801   return(datum);
1802 }
1803 \f
1804 /*
1805 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1806 %                                                                             %
1807 %                                                                             %
1808 %                                                                             %
1809 %   M a g i c k S e t A n t i a l i a s                                       %
1810 %                                                                             %
1811 %                                                                             %
1812 %                                                                             %
1813 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1814 %
1815 %  MagickSetAntialias() sets the antialias propery of the wand.
1816 %
1817 %  The format of the MagickSetAntialias method is:
1818 %
1819 %      MagickBooleanType MagickSetAntialias(MagickWand *wand,
1820 %        const MagickBooleanType antialias)
1821 %
1822 %  A description of each parameter follows:
1823 %
1824 %    o wand: the magick wand.
1825 %
1826 %    o antialias: the antialias property.
1827 %
1828 */
1829 WandExport MagickBooleanType MagickSetAntialias(MagickWand *wand,
1830   const MagickBooleanType antialias)
1831 {
1832   assert(wand != (MagickWand *) NULL);
1833   assert(wand->signature == WandSignature);
1834   if (wand->debug != MagickFalse)
1835     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1836   wand->image_info->antialias=antialias;
1837   return(MagickTrue);
1838 }
1839 \f
1840 /*
1841 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1842 %                                                                             %
1843 %                                                                             %
1844 %                                                                             %
1845 %   M a g i c k S e t B a c k g r o u n d C o l o r                           %
1846 %                                                                             %
1847 %                                                                             %
1848 %                                                                             %
1849 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1850 %
1851 %  MagickSetBackgroundColor() sets the wand background color.
1852 %
1853 %  The format of the MagickSetBackgroundColor method is:
1854 %
1855 %      MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1856 %        const PixelWand *background)
1857 %
1858 %  A description of each parameter follows:
1859 %
1860 %    o wand: the magick wand.
1861 %
1862 %    o background: the background pixel wand.
1863 %
1864 */
1865 WandExport MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1866   const PixelWand *background)
1867 {
1868   assert(wand != (MagickWand *) NULL);
1869   assert(wand->signature == WandSignature);
1870   if (wand->debug != MagickFalse)
1871     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1872   PixelGetQuantumColor(background,&wand->image_info->background_color);
1873   return(MagickTrue);
1874 }
1875 \f
1876 /*
1877 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1878 %                                                                             %
1879 %                                                                             %
1880 %                                                                             %
1881 %   M a g i c k S e t C o l o r s p a c e                                     %
1882 %                                                                             %
1883 %                                                                             %
1884 %                                                                             %
1885 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1886 %
1887 %  MagickSetColorspace() sets the wand colorspace type.
1888 %
1889 %  The format of the MagickSetColorspace method is:
1890 %
1891 %      MagickBooleanType MagickSetColorspace(MagickWand *wand,
1892 %        const ColorspaceType colorspace)
1893 %
1894 %  A description of each parameter follows:
1895 %
1896 %    o wand: the magick wand.
1897 %
1898 %    o colorspace: the wand colorspace.
1899 %
1900 */
1901 WandExport MagickBooleanType MagickSetColorspace(MagickWand *wand,
1902   const ColorspaceType colorspace)
1903 {
1904   assert(wand != (MagickWand *) NULL);
1905   assert(wand->signature == WandSignature);
1906   if (wand->debug != MagickFalse)
1907     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1908   wand->image_info->colorspace=colorspace;
1909   return(MagickTrue);
1910 }
1911 \f
1912 /*
1913 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1914 %                                                                             %
1915 %                                                                             %
1916 %                                                                             %
1917 %   M a g i c k S e t C o m p r e s s i o n                                   %
1918 %                                                                             %
1919 %                                                                             %
1920 %                                                                             %
1921 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1922 %
1923 %  MagickSetCompression() sets the wand compression type.
1924 %
1925 %  The format of the MagickSetCompression method is:
1926 %
1927 %      MagickBooleanType MagickSetCompression(MagickWand *wand,
1928 %        const CompressionType compression)
1929 %
1930 %  A description of each parameter follows:
1931 %
1932 %    o wand: the magick wand.
1933 %
1934 %    o compression: the wand compression.
1935 %
1936 */
1937 WandExport MagickBooleanType MagickSetCompression(MagickWand *wand,
1938   const CompressionType compression)
1939 {
1940   assert(wand != (MagickWand *) NULL);
1941   assert(wand->signature == WandSignature);
1942   if (wand->debug != MagickFalse)
1943     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1944   wand->image_info->compression=compression;
1945   return(MagickTrue);
1946 }
1947 \f
1948 /*
1949 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1950 %                                                                             %
1951 %                                                                             %
1952 %                                                                             %
1953 %   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                     %
1954 %                                                                             %
1955 %                                                                             %
1956 %                                                                             %
1957 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1958 %
1959 %  MagickSetCompressionQuality() sets the wand compression quality.
1960 %
1961 %  The format of the MagickSetCompressionQuality method is:
1962 %
1963 %      MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1964 %        const size_t quality)
1965 %
1966 %  A description of each parameter follows:
1967 %
1968 %    o wand: the magick wand.
1969 %
1970 %    o quality: the wand compression quality.
1971 %
1972 */
1973 WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1974   const size_t quality)
1975 {
1976   assert(wand != (MagickWand *) NULL);
1977   assert(wand->signature == WandSignature);
1978   if (wand->debug != MagickFalse)
1979     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1980   wand->image_info->quality=quality;
1981   return(MagickTrue);
1982 }
1983 \f
1984 /*
1985 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1986 %                                                                             %
1987 %                                                                             %
1988 %                                                                             %
1989 %   M a g i c k S e t D e p t h                                               %
1990 %                                                                             %
1991 %                                                                             %
1992 %                                                                             %
1993 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1994 %
1995 %  MagickSetDepth() sets the wand pixel depth.
1996 %
1997 %  The format of the MagickSetDepth method is:
1998 %
1999 %      MagickBooleanType MagickSetDepth(MagickWand *wand,
2000 %        const size_t depth)
2001 %
2002 %  A description of each parameter follows:
2003 %
2004 %    o wand: the magick wand.
2005 %
2006 %    o depth: the wand pixel depth.
2007 %
2008 */
2009 WandExport MagickBooleanType MagickSetDepth(MagickWand *wand,
2010   const size_t depth)
2011 {
2012   assert(wand != (MagickWand *) NULL);
2013   assert(wand->signature == WandSignature);
2014   if (wand->debug != MagickFalse)
2015     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2016   wand->image_info->depth=depth;
2017   return(MagickTrue);
2018 }
2019 \f
2020 /*
2021 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2022 %                                                                             %
2023 %                                                                             %
2024 %                                                                             %
2025 %   M a g i c k S e t E x t r a c t                                           %
2026 %                                                                             %
2027 %                                                                             %
2028 %                                                                             %
2029 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2030 %
2031 %  MagickSetExtract() sets the extract geometry before you read or write an
2032 %  image file.  Use it for inline cropping (e.g. 200x200+0+0) or resizing
2033 %  (e.g.200x200).
2034 %
2035 %  The format of the MagickSetExtract method is:
2036 %
2037 %      MagickBooleanType MagickSetExtract(MagickWand *wand,
2038 %        const char *geometry)
2039 %
2040 %  A description of each parameter follows:
2041 %
2042 %    o wand: the magick wand.
2043 %
2044 %    o geometry: the extract geometry.
2045 %
2046 */
2047 WandExport MagickBooleanType MagickSetExtract(MagickWand *wand,
2048   const char *geometry)
2049 {
2050   assert(wand != (MagickWand *) NULL);
2051   assert(wand->signature == WandSignature);
2052   if (wand->debug != MagickFalse)
2053     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2054   if (geometry != (const char *) NULL)
2055     (void) CopyMagickString(wand->image_info->extract,geometry,MaxTextExtent);
2056   return(MagickTrue);
2057 }
2058 \f
2059 /*
2060 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2061 %                                                                             %
2062 %                                                                             %
2063 %                                                                             %
2064 %   M a g i c k S e t F i l e n a m e                                         %
2065 %                                                                             %
2066 %                                                                             %
2067 %                                                                             %
2068 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2069 %
2070 %  MagickSetFilename() sets the filename before you read or write an image file.
2071 %
2072 %  The format of the MagickSetFilename method is:
2073 %
2074 %      MagickBooleanType MagickSetFilename(MagickWand *wand,
2075 %        const char *filename)
2076 %
2077 %  A description of each parameter follows:
2078 %
2079 %    o wand: the magick wand.
2080 %
2081 %    o filename: the image filename.
2082 %
2083 */
2084 WandExport MagickBooleanType MagickSetFilename(MagickWand *wand,
2085   const char *filename)
2086 {
2087   assert(wand != (MagickWand *) NULL);
2088   assert(wand->signature == WandSignature);
2089   if (wand->debug != MagickFalse)
2090     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2091   if (filename != (const char *) NULL)
2092     (void) CopyMagickString(wand->image_info->filename,filename,MaxTextExtent);
2093   return(MagickTrue);
2094 }
2095 \f
2096 /*
2097 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2098 %                                                                             %
2099 %                                                                             %
2100 %                                                                             %
2101 %   M a g i c k S e t F o n t                                                 %
2102 %                                                                             %
2103 %                                                                             %
2104 %                                                                             %
2105 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2106 %
2107 %  MagickSetFont() sets the font associated with the MagickWand.
2108 %
2109 %  The format of the MagickSetFont method is:
2110 %
2111 %      MagickBooleanType MagickSetFont(MagickWand *wand, const char *font)
2112 %
2113 %  A description of each parameter follows:
2114 %
2115 %    o wand: the magick wand.
2116 %
2117 %    o font: the font
2118 %
2119 */
2120 WandExport MagickBooleanType MagickSetFont(MagickWand *wand,const char *font)
2121 {
2122   if ((font == (const char *) NULL) || (*font == '\0'))
2123     return(MagickFalse);
2124   assert(wand != (MagickWand *) NULL);
2125   assert(wand->signature == WandSignature);
2126   if (wand->debug != MagickFalse)
2127     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2128   (void) CloneString(&wand->image_info->font,font);
2129   return(MagickTrue);
2130 }
2131 \f
2132 /*
2133 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2134 %                                                                             %
2135 %                                                                             %
2136 %                                                                             %
2137 %   M a g i c k S e t F o r m a t                                             %
2138 %                                                                             %
2139 %                                                                             %
2140 %                                                                             %
2141 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2142 %
2143 %  MagickSetFormat() sets the format of the magick wand.
2144 %
2145 %  The format of the MagickSetFormat method is:
2146 %
2147 %      MagickBooleanType MagickSetFormat(MagickWand *wand,const char *format)
2148 %
2149 %  A description of each parameter follows:
2150 %
2151 %    o wand: the magick wand.
2152 %
2153 %    o format: the image format.
2154 %
2155 */
2156 WandExport MagickBooleanType MagickSetFormat(MagickWand *wand,
2157   const char *format)
2158 {
2159   const MagickInfo
2160     *magick_info;
2161
2162   assert(wand != (MagickWand *) NULL);
2163   assert(wand->signature == WandSignature);
2164   if (wand->debug != MagickFalse)
2165     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2166   if ((format == (char *) NULL) || (*format == '\0'))
2167     {
2168       *wand->image_info->magick='\0';
2169       return(MagickTrue);
2170     }
2171   magick_info=GetMagickInfo(format,wand->exception);
2172   if (magick_info == (const MagickInfo *) NULL)
2173     return(MagickFalse);
2174   ClearMagickException(wand->exception);
2175   (void) CopyMagickString(wand->image_info->magick,format,MaxTextExtent);
2176   return(MagickTrue);
2177 }
2178 \f
2179 /*
2180 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2181 %                                                                             %
2182 %                                                                             %
2183 %                                                                             %
2184 %   M a g i c k S e t G r a v i t y                                           %
2185 %                                                                             %
2186 %                                                                             %
2187 %                                                                             %
2188 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2189 %
2190 %  MagickSetGravity() sets the gravity type.
2191 %
2192 %  The format of the MagickSetGravity type is:
2193 %
2194 %      MagickBooleanType MagickSetGravity(MagickWand *wand,
2195 %        const GravityType type)
2196 %
2197 %  A description of each parameter follows:
2198 %
2199 %    o wand: the magick wand.
2200 %
2201 %    o type: the gravity type.
2202 %
2203 */
2204 WandExport MagickBooleanType MagickSetGravity(MagickWand *wand,
2205   const GravityType type)
2206 {
2207   MagickBooleanType
2208     status;
2209
2210   assert(wand != (MagickWand *) NULL);
2211   assert(wand->signature == WandSignature);
2212   if (wand->debug != MagickFalse)
2213     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2214   status=SetImageOption(wand->image_info,"gravity",CommandOptionToMnemonic(
2215     MagickGravityOptions,(ssize_t) type));
2216   return(status);
2217 }
2218 \f
2219 /*
2220 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2221 %                                                                             %
2222 %                                                                             %
2223 %                                                                             %
2224 %   M a g i c k S e t I m a g e A r t i f r c t                               %
2225 %                                                                             %
2226 %                                                                             %
2227 %                                                                             %
2228 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2229 %
2230 %  MagickSetImageArtifact() associates a artifact with an image.
2231 %
2232 %  The format of the MagickSetImageArtifact method is:
2233 %
2234 %      MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2235 %        const char *artifact,const char *value)
2236 %
2237 %  A description of each parameter follows:
2238 %
2239 %    o wand: the magick wand.
2240 %
2241 %    o artifact: the artifact.
2242 %
2243 %    o value: the value.
2244 %
2245 */
2246 WandExport MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2247   const char *artifact,const char *value)
2248 {
2249   MagickBooleanType
2250     status;
2251
2252   assert(wand != (MagickWand *) NULL);
2253   assert(wand->signature == WandSignature);
2254   if (wand->debug != MagickFalse)
2255     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2256   if (wand->images == (Image *) NULL)
2257     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2258   status=SetImageArtifact(wand->images,artifact,value);
2259   if (status == MagickFalse)
2260     InheritException(wand->exception,&wand->images->exception);
2261   return(status);
2262 }
2263 \f
2264 /*
2265 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2266 %                                                                             %
2267 %                                                                             %
2268 %                                                                             %
2269 %   M a g i c k S e t P r o f i l e I m a g e                                 %
2270 %                                                                             %
2271 %                                                                             %
2272 %                                                                             %
2273 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2274 %
2275 %  MagickSetImageProfile() adds a named profile to the magick wand.  If a
2276 %  profile with the same name already exists, it is replaced.  This method
2277 %  differs from the MagickProfileImage() method in that it does not apply any
2278 %  CMS color profiles.
2279 %
2280 %  The format of the MagickSetImageProfile method is:
2281 %
2282 %      MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2283 %        const char *name,const void *profile,const size_t length)
2284 %
2285 %  A description of each parameter follows:
2286 %
2287 %    o wand: the magick wand.
2288 %
2289 %    o name: Name of profile to add or remove: ICC, IPTC, or generic profile.
2290 %
2291 %    o profile: the profile.
2292 %
2293 %    o length: the length of the profile.
2294 %
2295 */
2296 WandExport MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2297   const char *name,const void *profile,const size_t length)
2298 {
2299   MagickBooleanType
2300     status;
2301
2302   StringInfo
2303     *profile_info;
2304
2305   assert(wand != (MagickWand *) NULL);
2306   assert(wand->signature == WandSignature);
2307   if (wand->debug != MagickFalse)
2308     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2309   if (wand->images == (Image *) NULL)
2310     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2311   profile_info=AcquireStringInfo((size_t) length);
2312   SetStringInfoDatum(profile_info,(unsigned char *) profile);
2313   status=SetImageProfile(wand->images,name,profile_info);
2314   profile_info=DestroyStringInfo(profile_info);
2315   if (status == MagickFalse)
2316     InheritException(wand->exception,&wand->images->exception);
2317   return(status);
2318 }
2319 \f
2320 /*
2321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2322 %                                                                             %
2323 %                                                                             %
2324 %                                                                             %
2325 %   M a g i c k S e t I m a g e P r o p e r t y                               %
2326 %                                                                             %
2327 %                                                                             %
2328 %                                                                             %
2329 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2330 %
2331 %  MagickSetImageProperty() associates a property with an image.
2332 %
2333 %  The format of the MagickSetImageProperty method is:
2334 %
2335 %      MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2336 %        const char *property,const char *value)
2337 %
2338 %  A description of each parameter follows:
2339 %
2340 %    o wand: the magick wand.
2341 %
2342 %    o property: the property.
2343 %
2344 %    o value: the value.
2345 %
2346 */
2347 WandExport MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2348   const char *property,const char *value)
2349 {
2350   MagickBooleanType
2351     status;
2352
2353   assert(wand != (MagickWand *) NULL);
2354   assert(wand->signature == WandSignature);
2355   if (wand->debug != MagickFalse)
2356     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2357   if (wand->images == (Image *) NULL)
2358     ThrowWandException(WandError,"ContainsNoImages",wand->name);
2359   status=SetImageProperty(wand->images,property,value);
2360   if (status == MagickFalse)
2361     InheritException(wand->exception,&wand->images->exception);
2362   return(status);
2363 }
2364 \f
2365 /*
2366 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2367 %                                                                             %
2368 %                                                                             %
2369 %                                                                             %
2370 %   M a g i c k S e t I n t e r l a c e S c h e m e                           %
2371 %                                                                             %
2372 %                                                                             %
2373 %                                                                             %
2374 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2375 %
2376 %  MagickSetInterlaceScheme() sets the image compression.
2377 %
2378 %  The format of the MagickSetInterlaceScheme method is:
2379 %
2380 %      MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2381 %        const InterlaceType interlace_scheme)
2382 %
2383 %  A description of each parameter follows:
2384 %
2385 %    o wand: the magick wand.
2386 %
2387 %    o interlace_scheme: the image interlace scheme: NoInterlace, LineInterlace,
2388 %      PlaneInterlace, PartitionInterlace.
2389 %
2390 */
2391 WandExport MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2392   const InterlaceType interlace_scheme)
2393 {
2394   assert(wand != (MagickWand *) NULL);
2395   assert(wand->signature == WandSignature);
2396   if (wand->debug != MagickFalse)
2397     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2398   wand->image_info->interlace=interlace_scheme;
2399   return(MagickTrue);
2400 }
2401 \f
2402 /*
2403 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2404 %                                                                             %
2405 %                                                                             %
2406 %                                                                             %
2407 %   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                       %
2408 %                                                                             %
2409 %                                                                             %
2410 %                                                                             %
2411 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2412 %
2413 %  MagickSetInterpolateMethod() sets the interpolate pixel method.
2414 %
2415 %  The format of the MagickSetInterpolateMethod method is:
2416 %
2417 %      MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2418 %        const InterpolateMethodPixel method)
2419 %
2420 %  A description of each parameter follows:
2421 %
2422 %    o wand: the magick wand.
2423 %
2424 %    o method: the interpolate pixel method.
2425 %
2426 */
2427 WandExport MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2428   const InterpolatePixelMethod method)
2429 {
2430   MagickBooleanType
2431     status;
2432
2433   assert(wand != (MagickWand *) NULL);
2434   assert(wand->signature == WandSignature);
2435   if (wand->debug != MagickFalse)
2436     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2437   status=SetImageOption(wand->image_info,"interpolate",
2438     CommandOptionToMnemonic(MagickInterpolateOptions,(ssize_t) method));
2439   return(status);
2440 }
2441 \f
2442 /*
2443 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2444 %                                                                             %
2445 %                                                                             %
2446 %                                                                             %
2447 %   M a g i c k S e t O p t i o n                                             %
2448 %                                                                             %
2449 %                                                                             %
2450 %                                                                             %
2451 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2452 %
2453 %  MagickSetOption() associates one or options with the wand (.e.g
2454 %  MagickSetOption(wand,"jpeg:perserve","yes")).
2455 %
2456 %  The format of the MagickSetOption method is:
2457 %
2458 %      MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2459 %        const char *value)
2460 %
2461 %  A description of each parameter follows:
2462 %
2463 %    o wand: the magick wand.
2464 %
2465 %    o key:  The key.
2466 %
2467 %    o value:  The value.
2468 %
2469 */
2470 WandExport MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2471   const char *value)
2472 {
2473   assert(wand != (MagickWand *) NULL);
2474   assert(wand->signature == WandSignature);
2475   if (wand->debug != MagickFalse)
2476     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2477   return(SetImageOption(wand->image_info,key,value));
2478 }
2479 \f
2480 /*
2481 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2482 %                                                                             %
2483 %                                                                             %
2484 %                                                                             %
2485 %   M a g i c k S e t O r i e n t a t i o n                                   %
2486 %                                                                             %
2487 %                                                                             %
2488 %                                                                             %
2489 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2490 %
2491 %  MagickSetOrientation() sets the wand orientation type.
2492 %
2493 %  The format of the MagickSetOrientation method is:
2494 %
2495 %      MagickBooleanType MagickSetOrientation(MagickWand *wand,
2496 %        const OrientationType orientation)
2497 %
2498 %  A description of each parameter follows:
2499 %
2500 %    o wand: the magick wand.
2501 %
2502 %    o orientation: the wand orientation.
2503 %
2504 */
2505 WandExport MagickBooleanType MagickSetOrientation(MagickWand *wand,
2506   const OrientationType orientation)
2507 {
2508   assert(wand != (MagickWand *) NULL);
2509   assert(wand->signature == WandSignature);
2510   if (wand->debug != MagickFalse)
2511     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2512   wand->image_info->orientation=orientation;
2513   return(MagickTrue);
2514 }
2515 \f
2516 /*
2517 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2518 %                                                                             %
2519 %                                                                             %
2520 %                                                                             %
2521 %   M a g i c k S e t P a g e                                                 %
2522 %                                                                             %
2523 %                                                                             %
2524 %                                                                             %
2525 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2526 %
2527 %  MagickSetPage() sets the page geometry of the magick wand.
2528 %
2529 %  The format of the MagickSetPage method is:
2530 %
2531 %      MagickBooleanType MagickSetPage(MagickWand *wand,
2532 %        const size_t width,const size_t height,const ssize_t x,
2533 %        const ssize_t y)
2534 %
2535 %  A description of each parameter follows:
2536 %
2537 %    o wand: the magick wand.
2538 %
2539 %    o width: the page width.
2540 %
2541 %    o height: the page height.
2542 %
2543 %    o x: the page x-offset.
2544 %
2545 %    o y: the page y-offset.
2546 %
2547 */
2548 WandExport MagickBooleanType MagickSetPage(MagickWand *wand,
2549   const size_t width,const size_t height,const ssize_t x,
2550   const ssize_t y)
2551 {
2552   char
2553     geometry[MaxTextExtent];
2554
2555   assert(wand != (MagickWand *) NULL);
2556   assert(wand->signature == WandSignature);
2557   if (wand->debug != MagickFalse)
2558     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2559   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
2560     (double) width,(double) height,(double) x,(double) y);
2561   (void) CloneString(&wand->image_info->page,geometry);
2562   return(MagickTrue);
2563 }
2564 \f
2565 /*
2566 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2567 %                                                                             %
2568 %                                                                             %
2569 %                                                                             %
2570 %   M a g i c k S e t P a s s p h r a s e                                     %
2571 %                                                                             %
2572 %                                                                             %
2573 %                                                                             %
2574 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2575 %
2576 %  MagickSetPassphrase() sets the passphrase.
2577 %
2578 %  The format of the MagickSetPassphrase method is:
2579 %
2580 %      MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2581 %        const char *passphrase)
2582 %
2583 %  A description of each parameter follows:
2584 %
2585 %    o wand: the magick wand.
2586 %
2587 %    o passphrase: the passphrase.
2588 %
2589 */
2590 WandExport MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2591   const char *passphrase)
2592 {
2593   assert(wand != (MagickWand *) NULL);
2594   assert(wand->signature == WandSignature);
2595   if (wand->debug != MagickFalse)
2596     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2597   (void) CloneString(&wand->image_info->authenticate,passphrase);
2598   return(MagickTrue);
2599 }
2600 \f
2601 /*
2602 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2603 %                                                                             %
2604 %                                                                             %
2605 %                                                                             %
2606 %   M a g i c k S e t P o i n t s i z e                                       %
2607 %                                                                             %
2608 %                                                                             %
2609 %                                                                             %
2610 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2611 %
2612 %  MagickSetPointsize() sets the font pointsize associated with the MagickWand.
2613 %
2614 %  The format of the MagickSetPointsize method is:
2615 %
2616 %      MagickBooleanType MagickSetPointsize(MagickWand *wand,
2617 %        const double pointsize)
2618 %
2619 %  A description of each parameter follows:
2620 %
2621 %    o wand: the magick wand.
2622 %
2623 %    o pointsize: the size of the font
2624 %
2625 */
2626 WandExport MagickBooleanType MagickSetPointsize(MagickWand *wand,
2627   const double pointsize)
2628 {
2629   assert(wand != (MagickWand *) NULL);
2630   assert(wand->signature == WandSignature);
2631   if (wand->debug != MagickFalse)
2632     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2633   wand->image_info->pointsize=pointsize;
2634   return(MagickTrue);
2635 }
2636 \f
2637 /*
2638 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2639 %                                                                             %
2640 %                                                                             %
2641 %                                                                             %
2642 %   M a g i c k S e t P r o g r e s s M o n i t o r                           %
2643 %                                                                             %
2644 %                                                                             %
2645 %                                                                             %
2646 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2647 %
2648 %  MagickSetProgressMonitor() sets the wand progress monitor to the specified
2649 %  method and returns the previous progress monitor if any.  The progress
2650 %  monitor method looks like this:
2651 %
2652 %    MagickBooleanType MagickProgressMonitor(const char *text,
2653 %      const MagickOffsetType offset,const MagickSizeType span,
2654 %      void *client_data)
2655 %
2656 %  If the progress monitor returns MagickFalse, the current operation is
2657 %  interrupted.
2658 %
2659 %  The format of the MagickSetProgressMonitor method is:
2660 %
2661 %      MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand
2662 %        const MagickProgressMonitor progress_monitor,void *client_data)
2663 %
2664 %  A description of each parameter follows:
2665 %
2666 %    o wand: the magick wand.
2667 %
2668 %    o progress_monitor: Specifies a pointer to a method to monitor progress
2669 %      of an image operation.
2670 %
2671 %    o client_data: Specifies a pointer to any client data.
2672 %
2673 */
2674 WandExport MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand,
2675   const MagickProgressMonitor progress_monitor,void *client_data)
2676 {
2677   MagickProgressMonitor
2678     previous_monitor;
2679
2680   assert(wand != (MagickWand *) NULL);
2681   assert(wand->signature == WandSignature);
2682   if (wand->debug != MagickFalse)
2683     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2684   previous_monitor=SetImageInfoProgressMonitor(wand->image_info,
2685     progress_monitor,client_data);
2686   return(previous_monitor);
2687 }
2688 \f
2689 /*
2690 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2691 %                                                                             %
2692 %                                                                             %
2693 %                                                                             %
2694 %   M a g i c k S e t R e s o u r c e L i m i t                               %
2695 %                                                                             %
2696 %                                                                             %
2697 %                                                                             %
2698 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2699 %
2700 %  MagickSetResourceLimit() sets the limit for a particular resource in
2701 %  megabytes.
2702 %
2703 %  The format of the MagickSetResourceLimit method is:
2704 %
2705 %      MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2706 %        const MagickSizeType limit)
2707 %
2708 %  A description of each parameter follows:
2709 %
2710 %    o type: the type of resource: AreaResource, MemoryResource, MapResource,
2711 %      DiskResource, FileResource.
2712 %
2713 %    o The maximum limit for the resource.
2714 %
2715 */
2716 WandExport MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2717   const MagickSizeType limit)
2718 {
2719   return(SetMagickResourceLimit(type,limit));
2720 }
2721 \f
2722 /*
2723 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2724 %                                                                             %
2725 %                                                                             %
2726 %                                                                             %
2727 %   M a g i c k S e t R e s o l u t i o n                                     %
2728 %                                                                             %
2729 %                                                                             %
2730 %                                                                             %
2731 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2732 %
2733 %  MagickSetResolution() sets the image resolution.
2734 %
2735 %  The format of the MagickSetResolution method is:
2736 %
2737 %      MagickBooleanType MagickSetResolution(MagickWand *wand,
2738 %        const double x_resolution,const doubtl y_resolution)
2739 %
2740 %  A description of each parameter follows:
2741 %
2742 %    o wand: the magick wand.
2743 %
2744 %    o x_resolution: the image x resolution.
2745 %
2746 %    o y_resolution: the image y resolution.
2747 %
2748 */
2749 WandExport MagickBooleanType MagickSetResolution(MagickWand *wand,
2750   const double x_resolution,const double y_resolution)
2751 {
2752   char
2753     density[MaxTextExtent];
2754
2755   assert(wand != (MagickWand *) NULL);
2756   assert(wand->signature == WandSignature);
2757   if (wand->debug != MagickFalse)
2758     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2759   (void) FormatLocaleString(density,MaxTextExtent,"%gx%g",x_resolution,
2760     y_resolution);
2761   (void) CloneString(&wand->image_info->density,density);
2762   return(MagickTrue);
2763 }
2764 \f
2765 /*
2766 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2767 %                                                                             %
2768 %                                                                             %
2769 %                                                                             %
2770 %   M a g i c k S e t S a m p l i n g F a c t o r s                           %
2771 %                                                                             %
2772 %                                                                             %
2773 %                                                                             %
2774 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2775 %
2776 %  MagickSetSamplingFactors() sets the image sampling factors.
2777 %
2778 %  The format of the MagickSetSamplingFactors method is:
2779 %
2780 %      MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2781 %        const size_t number_factors,const double *sampling_factors)
2782 %
2783 %  A description of each parameter follows:
2784 %
2785 %    o wand: the magick wand.
2786 %
2787 %    o number_factoes: the number of factors.
2788 %
2789 %    o sampling_factors: An array of doubles representing the sampling factor
2790 %      for each color component (in RGB order).
2791 %
2792 */
2793 WandExport MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2794   const size_t number_factors,const double *sampling_factors)
2795 {
2796   char
2797     sampling_factor[MaxTextExtent];
2798
2799   register ssize_t
2800     i;
2801
2802   assert(wand != (MagickWand *) NULL);
2803   assert(wand->signature == WandSignature);
2804   if (wand->debug != MagickFalse)
2805     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2806   if (wand->image_info->sampling_factor != (char *) NULL)
2807     wand->image_info->sampling_factor=(char *)
2808       RelinquishMagickMemory(wand->image_info->sampling_factor);
2809   if (number_factors == 0)
2810     return(MagickTrue);
2811   for (i=0; i < (ssize_t) (number_factors-1); i++)
2812   {
2813     (void) FormatLocaleString(sampling_factor,MaxTextExtent,"%g,",
2814       sampling_factors[i]);
2815     (void) ConcatenateString(&wand->image_info->sampling_factor,
2816       sampling_factor);
2817   }
2818   (void) FormatLocaleString(sampling_factor,MaxTextExtent,"%g",
2819     sampling_factors[i]);
2820   (void) ConcatenateString(&wand->image_info->sampling_factor,sampling_factor);
2821   return(MagickTrue);
2822 }
2823 \f
2824 /*
2825 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2826 %                                                                             %
2827 %                                                                             %
2828 %                                                                             %
2829 %   M a g i c k S e t S i z e                                                 %
2830 %                                                                             %
2831 %                                                                             %
2832 %                                                                             %
2833 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2834 %
2835 %  MagickSetSize() sets the size of the magick wand.  Set it before you
2836 %  read a raw image format such as RGB, GRAY, or CMYK.
2837 %
2838 %  The format of the MagickSetSize method is:
2839 %
2840 %      MagickBooleanType MagickSetSize(MagickWand *wand,
2841 %        const size_t columns,const size_t rows)
2842 %
2843 %  A description of each parameter follows:
2844 %
2845 %    o wand: the magick wand.
2846 %
2847 %    o columns: the width in pixels.
2848 %
2849 %    o rows: the rows in pixels.
2850 %
2851 */
2852 WandExport MagickBooleanType MagickSetSize(MagickWand *wand,
2853   const size_t columns,const size_t rows)
2854 {
2855   char
2856     geometry[MaxTextExtent];
2857
2858   assert(wand != (MagickWand *) NULL);
2859   assert(wand->signature == WandSignature);
2860   if (wand->debug != MagickFalse)
2861     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2862   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g",(double)
2863     columns,(double) rows);
2864   (void) CloneString(&wand->image_info->size,geometry);
2865   return(MagickTrue);
2866 }
2867 \f
2868 /*
2869 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2870 %                                                                             %
2871 %                                                                             %
2872 %                                                                             %
2873 %   M a g i c k S e t S i z e O f f s e t                                     %
2874 %                                                                             %
2875 %                                                                             %
2876 %                                                                             %
2877 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2878 %
2879 %  MagickSetSizeOffset() sets the size and offset of the magick wand.  Set it
2880 %  before you read a raw image format such as RGB, GRAY, or CMYK.
2881 %
2882 %  The format of the MagickSetSizeOffset method is:
2883 %
2884 %      MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2885 %        const size_t columns,const size_t rows,
2886 %        const ssize_t offset)
2887 %
2888 %  A description of each parameter follows:
2889 %
2890 %    o wand: the magick wand.
2891 %
2892 %    o columns: the image width in pixels.
2893 %
2894 %    o rows: the image rows in pixels.
2895 %
2896 %    o offset: the image offset.
2897 %
2898 */
2899 WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2900   const size_t columns,const size_t rows,const ssize_t offset)
2901 {
2902   char
2903     geometry[MaxTextExtent];
2904
2905   assert(wand != (MagickWand *) NULL);
2906   assert(wand->signature == WandSignature);
2907   if (wand->debug != MagickFalse)
2908     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2909   (void) FormatLocaleString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g",
2910     (double) columns,(double) rows,(double) offset);
2911   (void) CloneString(&wand->image_info->size,geometry);
2912   return(MagickTrue);
2913 }
2914 \f
2915 /*
2916 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2917 %                                                                             %
2918 %                                                                             %
2919 %                                                                             %
2920 %   M a g i c k S e t T y p e                                                 %
2921 %                                                                             %
2922 %                                                                             %
2923 %                                                                             %
2924 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2925 %
2926 %  MagickSetType() sets the image type attribute.
2927 %
2928 %  The format of the MagickSetType method is:
2929 %
2930 %      MagickBooleanType MagickSetType(MagickWand *wand,
2931 %        const ImageType image_type)
2932 %
2933 %  A description of each parameter follows:
2934 %
2935 %    o wand: the magick wand.
2936 %
2937 %    o image_type: the image type:   UndefinedType, BilevelType, GrayscaleType,
2938 %      GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType,
2939 %      TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType,
2940 %      or OptimizeType.
2941 %
2942 */
2943 WandExport MagickBooleanType MagickSetType(MagickWand *wand,
2944   const ImageType image_type)
2945 {
2946   assert(wand != (MagickWand *) NULL);
2947   assert(wand->signature == WandSignature);
2948   if (wand->debug != MagickFalse)
2949     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2950   wand->image_info->type=image_type;
2951   return(MagickTrue);
2952 }