2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
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 %
19 % Set or Get MagickWand Properties, Options, or Profiles %
26 % Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization %
27 % dedicated to making software imaging solutions freely available. %
29 % You may not use this file except in compliance with the License. You may %
30 % obtain a copy of the License at %
32 % http://www.imagemagick.org/script/license.php %
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. %
40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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"
58 #define ThrowWandException(severity,tag,context) \
60 (void) ThrowMagickException(wand->exception,GetMagickModule(),severity, \
61 tag,"`%s'",context); \
62 return(MagickFalse); \
66 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
74 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 % MagickDeleteImageArtifact() deletes a wand artifact.
78 % The format of the MagickDeleteImageArtifact method is:
80 % MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand,
81 % const char *artifact)
83 % A description of each parameter follows:
87 % o artifact: the image artifact.
90 WandExport MagickBooleanType MagickDeleteImageArtifact(MagickWand *wand,
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)
99 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
100 "ContainsNoImages","`%s'",wand->name);
103 return(DeleteImageArtifact(wand->images,artifact));
107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
115 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
117 % MagickDeleteImageProperty() deletes a wand property.
119 % The format of the MagickDeleteImageProperty method is:
121 % MagickBooleanType MagickDeleteImageProperty(MagickWand *wand,
122 % const char *property)
124 % A description of each parameter follows:
126 % o image: the image.
128 % o property: the image property.
131 WandExport MagickBooleanType MagickDeleteImageProperty(MagickWand *wand,
132 const char *property)
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)
140 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
141 "ContainsNoImages","`%s'",wand->name);
144 return(DeleteImageProperty(wand->images,property));
148 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
152 % M a g i c k D e l e t e O p t i o n %
156 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158 % MagickDeleteOption() deletes a wand option.
160 % The format of the MagickDeleteOption method is:
162 % MagickBooleanType MagickDeleteOption(MagickWand *wand,
163 % const char *option)
165 % A description of each parameter follows:
167 % o image: the image.
169 % o option: the image option.
172 WandExport MagickBooleanType MagickDeleteOption(MagickWand *wand,
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));
183 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
187 % M a g i c k G e t A n t i a l i a s %
191 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
193 % MagickGetAntialias() returns the antialias property associated with the
196 % The format of the MagickGetAntialias method is:
198 % MagickBooleanType MagickGetAntialias(const MagickWand *wand)
200 % A description of each parameter follows:
202 % o wand: the magick wand.
205 WandExport MagickBooleanType MagickGetAntialias(const MagickWand *wand)
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);
215 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
223 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
225 % MagickGetBackgroundColor() returns the wand background color.
227 % The format of the MagickGetBackgroundColor method is:
229 % PixelWand *MagickGetBackgroundColor(MagickWand *wand)
231 % A description of each parameter follows:
233 % o wand: the magick wand.
236 WandExport PixelWand *MagickGetBackgroundColor(MagickWand *wand)
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);
251 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255 % M a g i c k G e t C o l o r s p a c e %
259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
261 % MagickGetColorspace() gets the wand colorspace type.
263 % The format of the MagickGetColorspace method is:
265 % ColorspaceType MagickGetColorspace(MagickWand *wand)
267 % A description of each parameter follows:
269 % o wand: the magick wand.
272 WandExport ColorspaceType MagickGetColorspace(MagickWand *wand)
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);
282 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
286 % M a g i c k G e t C o m p r e s s i o n %
290 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
292 % MagickGetCompression() gets the wand compression type.
294 % The format of the MagickGetCompression method is:
296 % CompressionType MagickGetCompression(MagickWand *wand)
298 % A description of each parameter follows:
300 % o wand: the magick wand.
303 WandExport CompressionType MagickGetCompression(MagickWand *wand)
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);
313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
323 % MagickGetCompressionQuality() gets the wand compression quality.
325 % The format of the MagickGetCompressionQuality method is:
327 % size_t MagickGetCompressionQuality(MagickWand *wand)
329 % A description of each parameter follows:
331 % o wand: the magick wand.
334 WandExport size_t MagickGetCompressionQuality(MagickWand *wand)
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);
344 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
348 % M a g i c k G e t C o p y r i g h t %
352 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
354 % MagickGetCopyright() returns the ImageMagick API copyright as a string
357 % The format of the MagickGetCopyright method is:
359 % const char *MagickGetCopyright(void)
362 WandExport const char *MagickGetCopyright(void)
364 return(GetMagickCopyright());
368 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
372 % M a g i c k G e t F i l e n a m e %
376 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
378 % MagickGetFilename() returns the filename associated with an image sequence.
380 % The format of the MagickGetFilename method is:
382 % const char *MagickGetFilename(const MagickWand *wand)
384 % A description of each parameter follows:
386 % o wand: the magick wand.
389 WandExport char *MagickGetFilename(const MagickWand *wand)
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));
399 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
403 % M a g i c k G e t F o n t %
407 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
409 % MagickGetFont() returns the font associated with the MagickWand.
411 % The format of the MagickGetFont method is:
413 % char *MagickGetFont(MagickWand *wand)
415 % A description of each parameter follows:
417 % o wand: the magick wand.
420 WandExport char *MagickGetFont(MagickWand *wand)
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));
432 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436 % M a g i c k G e t F o r m a t %
440 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
442 % MagickGetFormat() returns the format of the magick wand.
444 % The format of the MagickGetFormat method is:
446 % const char MagickGetFormat(MagickWand *wand)
448 % A description of each parameter follows:
450 % o wand: the magick wand.
453 WandExport char *MagickGetFormat(MagickWand *wand)
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));
463 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
467 % M a g i c k G e t G r a v i t y %
471 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
473 % MagickGetGravity() gets the wand gravity.
475 % The format of the MagickGetGravity method is:
477 % GravityType MagickGetGravity(MagickWand *wand)
479 % A description of each parameter follows:
481 % o wand: the magick wand.
484 WandExport GravityType MagickGetGravity(MagickWand *wand)
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) ParseMagickOption(MagickGravityOptions,MagickFalse,option);
504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
508 % M a g i c k G e t H o m e U R L %
512 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
514 % MagickGetHomeURL() returns the ImageMagick home URL.
516 % The format of the MagickGetHomeURL method is:
518 % char *MagickGetHomeURL(void)
521 WandExport char *MagickGetHomeURL(void)
523 return(GetMagickHomeURL());
527 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
531 % M a g i c k G e t I m a g e A r t i f a c t %
535 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
537 % MagickGetImageArtifact() returns a value associated with the specified
538 % artifact. Use MagickRelinquishMemory() to free the value when you are
541 % The format of the MagickGetImageArtifact method is:
543 % char *MagickGetImageArtifact(MagickWand *wand,const char *artifact)
545 % A description of each parameter follows:
547 % o wand: the magick wand.
549 % o artifact: the artifact.
552 WandExport char *MagickGetImageArtifact(MagickWand *wand,const char *artifact)
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)
563 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
564 "ContainsNoImages","`%s'",wand->name);
565 return((char *) NULL);
567 value=GetImageArtifact(wand->images,artifact);
568 if (value == (const char *) NULL)
569 return((char *) NULL);
570 return(ConstantString(value));
574 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.
589 % The format of the MagickGetImageArtifacts method is:
591 % char *MagickGetImageArtifacts(MagickWand *wand,
592 % const char *pattern,size_t *number_artifacts)
594 % A description of each parameter follows:
596 % o wand: the magick wand.
598 % o pattern: Specifies a pointer to a text string containing a pattern.
600 % o number_artifacts: the number artifacts associated with this wand.
603 WandExport char **MagickGetImageArtifacts(MagickWand *wand,
604 const char *pattern,size_t *number_artifacts)
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)
624 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
625 "ContainsNoImages","`%s'",wand->name);
626 return((char **) NULL);
628 (void) GetImageProperty(wand->images,"exif:*");
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; )
637 if ((*artifact != '[') &&
638 (GlobExpression(artifact,pattern,MagickFalse) != MagickFalse))
640 if ((i+1) >= (ssize_t) length)
643 artifacts=(char **) ResizeQuantumMemory(artifacts,length,
645 if (artifacts == (char **) NULL)
647 (void) ThrowMagickException(wand->exception,GetMagickModule(),
648 ResourceLimitError,"MemoryAllocationFailed","`%s'",
650 return((char **) NULL);
653 artifacts[i]=ConstantString(artifact);
656 artifact=GetNextImageProperty(wand->images);
658 artifacts[i]=(char *) NULL;
659 *number_artifacts=(size_t) i;
664 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
668 % M a g i c k G e t I m a g e P r o f i l e %
672 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
674 % MagickGetImageProfile() returns the named image profile.
676 % The format of the MagickGetImageProfile method is:
678 % unsigned char *MagickGetImageProfile(MagickWand *wand,const char *name,
681 % A description of each parameter follows:
683 % o wand: the magick wand.
685 % o name: Name of profile to return: ICC, IPTC, or generic profile.
687 % o length: the length of the profile.
690 WandExport unsigned char *MagickGetImageProfile(MagickWand *wand,
691 const char *name,size_t *length)
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)
705 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
706 "ContainsNoImages","`%s'",wand->name);
707 return((unsigned char *) NULL);
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),
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);
726 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
730 % M a g i c k G e t I m a g e P r o f i l e s %
734 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.
741 % The format of the MagickGetImageProfiles method is:
743 % char *MagickGetImageProfiles(MagickWand *wand,
744 % size_t *number_profiles)
746 % A description of each parameter follows:
748 % o wand: the magick wand.
750 % o pattern: Specifies a pointer to a text string containing a pattern.
752 % o number_profiles: the number profiles associated with this wand.
755 WandExport char **MagickGetImageProfiles(MagickWand *wand,const char *pattern,
756 size_t *number_profiles)
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)
776 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
777 "ContainsNoImages","`%s'",wand->name);
778 return((char **) NULL);
780 (void) GetImageProfile(wand->images,"exif:*");
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; )
789 if ((*property != '[') &&
790 (GlobExpression(property,pattern,MagickFalse) != MagickFalse))
792 if ((i+1) >= (ssize_t) length)
795 profiles=(char **) ResizeQuantumMemory(profiles,length,
797 if (profiles == (char **) NULL)
799 (void) ThrowMagickException(wand->exception,GetMagickModule(),
800 ResourceLimitError,"MemoryAllocationFailed","`%s'",
802 return((char **) NULL);
805 profiles[i]=ConstantString(property);
808 property=GetNextImageProfile(wand->images);
810 profiles[i]=(char *) NULL;
811 *number_profiles=(size_t) i;
816 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
820 % M a g i c k G e t I m a g e P r o p e r t y %
824 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
826 % MagickGetImageProperty() returns a value associated with the specified
827 % property. Use MagickRelinquishMemory() to free the value when you are
830 % The format of the MagickGetImageProperty method is:
832 % char *MagickGetImageProperty(MagickWand *wand,const char *property)
834 % A description of each parameter follows:
836 % o wand: the magick wand.
838 % o property: the property.
841 WandExport char *MagickGetImageProperty(MagickWand *wand,const char *property)
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)
852 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
853 "ContainsNoImages","`%s'",wand->name);
854 return((char *) NULL);
856 value=GetImageProperty(wand->images,property);
857 if (value == (const char *) NULL)
858 return((char *) NULL);
859 return(ConstantString(value));
863 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.
878 % The format of the MagickGetImageProperties method is:
880 % char *MagickGetImageProperties(MagickWand *wand,
881 % const char *pattern,size_t *number_properties)
883 % A description of each parameter follows:
885 % o wand: the magick wand.
887 % o pattern: Specifies a pointer to a text string containing a pattern.
889 % o number_properties: the number properties associated with this wand.
892 WandExport char **MagickGetImageProperties(MagickWand *wand,
893 const char *pattern,size_t *number_properties)
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)
913 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
914 "ContainsNoImages","`%s'",wand->name);
915 return((char **) NULL);
917 (void) GetImageProperty(wand->images,"exif:*");
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; )
926 if ((*property != '[') &&
927 (GlobExpression(property,pattern,MagickFalse) != MagickFalse))
929 if ((i+1) >= (ssize_t) length)
932 properties=(char **) ResizeQuantumMemory(properties,length,
933 sizeof(*properties));
934 if (properties == (char **) NULL)
936 (void) ThrowMagickException(wand->exception,GetMagickModule(),
937 ResourceLimitError,"MemoryAllocationFailed","`%s'",
939 return((char **) NULL);
942 properties[i]=ConstantString(property);
945 property=GetNextImageProperty(wand->images);
947 properties[i]=(char *) NULL;
948 *number_properties=(size_t) i;
953 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
961 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
963 % MagickGetInterlaceScheme() gets the wand interlace scheme.
965 % The format of the MagickGetInterlaceScheme method is:
967 % InterlaceType MagickGetInterlaceScheme(MagickWand *wand)
969 % A description of each parameter follows:
971 % o wand: the magick wand.
974 WandExport InterlaceType MagickGetInterlaceScheme(MagickWand *wand)
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);
984 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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 %
992 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
994 % MagickGetInterpolateMethod() gets the wand compression.
996 % The format of the MagickGetInterpolateMethod method is:
998 % InterpolatePixelMethod MagickGetInterpolateMethod(MagickWand *wand)
1000 % A description of each parameter follows:
1002 % o wand: the magick wand.
1005 WandExport InterpolatePixelMethod MagickGetInterpolateMethod(MagickWand *wand)
1010 InterpolatePixelMethod
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) ParseMagickOption(MagickInterpolateOptions,
1021 MagickFalse,option);
1026 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1030 % M a g i c k G e t O p t i o n %
1034 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1036 % MagickGetOption() returns a value associated with a wand and the specified
1037 % key. Use MagickRelinquishMemory() to free the value when you are finished
1040 % The format of the MagickGetOption method is:
1042 % char *MagickGetOption(MagickWand *wand,const char *key)
1044 % A description of each parameter follows:
1046 % o wand: the magick wand.
1051 WandExport char *MagickGetOption(MagickWand *wand,const char *key)
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));
1065 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1069 % M a g i c k G e t O p t i o n %
1073 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
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.
1080 % The format of the MagickGetOptions method is:
1082 % char *MagickGetOptions(MagickWand *wand,size_t *number_options)
1084 % A description of each parameter follows:
1086 % o wand: the magick wand.
1088 % o pattern: Specifies a pointer to a text string containing a pattern.
1090 % o number_options: the number options associated with this wand.
1093 WandExport char **MagickGetOptions(MagickWand *wand,const char *pattern,
1094 size_t *number_options)
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)
1114 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1115 "ContainsNoImages","`%s'",wand->name);
1116 return((char **) NULL);
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; )
1126 if ((*option != '[') &&
1127 (GlobExpression(option,pattern,MagickFalse) != MagickFalse))
1129 if ((i+1) >= (ssize_t) length)
1132 options=(char **) ResizeQuantumMemory(options,length,
1134 if (options == (char **) NULL)
1136 (void) ThrowMagickException(wand->exception,GetMagickModule(),
1137 ResourceLimitError,"MemoryAllocationFailed","`%s'",
1139 return((char **) NULL);
1142 options[i]=ConstantString(option);
1145 option=GetNextImageOption(wand->image_info);
1147 options[i]=(char *) NULL;
1148 *number_options=(size_t) i;
1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1157 % M a g i c k G e t O r i e n t a t i o n %
1161 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1163 % MagickGetOrientation() gets the wand orientation type.
1165 % The format of the MagickGetOrientation method is:
1167 % OrientationType MagickGetOrientation(MagickWand *wand)
1169 % A description of each parameter follows:
1171 % o wand: the magick wand.
1174 WandExport OrientationType MagickGetOrientation(MagickWand *wand)
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);
1184 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1188 % M a g i c k G e t P a c k a g e N a m e %
1192 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1194 % MagickGetPackageName() returns the ImageMagick package name as a string
1197 % The format of the MagickGetPackageName method is:
1199 % const char *MagickGetPackageName(void)
1203 WandExport const char *MagickGetPackageName(void)
1205 return(GetMagickPackageName());
1209 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1213 % M a g i c k G e t P a g e %
1217 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1219 % MagickGetPage() returns the page geometry associated with the magick wand.
1221 % The format of the MagickGetPage method is:
1223 % MagickBooleanType MagickGetPage(const MagickWand *wand,
1224 % size_t *width,size_t *height,ssize_t *x,ssize_t *y)
1226 % A description of each parameter follows:
1228 % o wand: the magick wand.
1230 % o width: the page width.
1232 % o height: page height.
1234 % o x: the page x-offset.
1236 % o y: the page y-offset.
1239 WandExport MagickBooleanType MagickGetPage(const MagickWand *wand,
1240 size_t *width,size_t *height,ssize_t *x,ssize_t *y)
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;
1259 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1263 % M a g i c k G e t P o i n t s i z e %
1267 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1269 % MagickGetPointsize() returns the font pointsize associated with the
1272 % The format of the MagickGetPointsize method is:
1274 % double MagickGetPointsize(MagickWand *wand)
1276 % A description of each parameter follows:
1278 % o wand: the magick wand.
1281 WandExport double MagickGetPointsize(MagickWand *wand)
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);
1291 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1295 % M a g i c k G e t Q u a n t u m D e p t h %
1299 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1301 % MagickGetQuantumDepth() returns the ImageMagick quantum depth as a string
1304 % The format of the MagickGetQuantumDepth method is:
1306 % const char *MagickGetQuantumDepth(size_t *depth)
1308 % A description of each parameter follows:
1310 % o depth: the quantum depth is returned as a number.
1313 WandExport const char *MagickGetQuantumDepth(size_t *depth)
1315 return(GetMagickQuantumDepth(depth));
1319 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1323 % M a g i c k G e t Q u a n t u m R a n g e %
1327 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1329 % MagickGetQuantumRange() returns the ImageMagick quantum range as a string
1332 % The format of the MagickGetQuantumRange method is:
1334 % const char *MagickGetQuantumRange(size_t *range)
1336 % A description of each parameter follows:
1338 % o range: the quantum range is returned as a number.
1341 WandExport const char *MagickGetQuantumRange(size_t *range)
1343 return(GetMagickQuantumRange(range));
1347 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1351 % M a g i c k G e t R e l e a s e D a t e %
1355 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1357 % MagickGetReleaseDate() returns the ImageMagick release date as a string
1360 % The format of the MagickGetReleaseDate method is:
1362 % const char *MagickGetReleaseDate(void)
1365 WandExport const char *MagickGetReleaseDate(void)
1367 return(GetMagickReleaseDate());
1371 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1375 % M a g i c k G e t R e s o u r c e %
1379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1381 % MagickGetResource() returns the specified resource in megabytes.
1383 % The format of the MagickGetResource method is:
1385 % MagickSizeType MagickGetResource(const ResourceType type)
1387 % A description of each parameter follows:
1389 % o wand: the magick wand.
1392 WandExport MagickSizeType MagickGetResource(const ResourceType type)
1394 return(GetMagickResource(type));
1398 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1402 % M a g i c k G e t R e s o u r c e L i m i t %
1406 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1408 % MagickGetResourceLimit() returns the specified resource limit in megabytes.
1410 % The format of the MagickGetResourceLimit method is:
1412 % MagickSizeType MagickGetResourceLimit(const ResourceType type)
1414 % A description of each parameter follows:
1416 % o wand: the magick wand.
1419 WandExport MagickSizeType MagickGetResourceLimit(const ResourceType type)
1421 return(GetMagickResourceLimit(type));
1425 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1429 % M a g i c k G e t S a m p l i n g F a c t o r s %
1433 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1435 % MagickGetSamplingFactors() gets the horizontal and vertical sampling factor.
1437 % The format of the MagickGetSamplingFactors method is:
1439 % double *MagickGetSamplingFactor(MagickWand *wand,
1440 % size_t *number_factors)
1442 % A description of each parameter follows:
1444 % o wand: the magick wand.
1446 % o number_factors: the number of factors in the returned array.
1449 WandExport double *MagickGetSamplingFactors(MagickWand *wand,
1450 size_t *number_factors)
1461 assert(wand != (MagickWand *) NULL);
1462 assert(wand->signature == WandSignature);
1463 if (wand->debug != MagickFalse)
1464 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1466 sampling_factors=(double *) NULL;
1467 if (wand->image_info->sampling_factor == (char *) NULL)
1468 return(sampling_factors);
1470 for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,','))
1472 while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) ||
1477 sampling_factors=(double *) AcquireQuantumMemory((size_t) i,
1478 sizeof(*sampling_factors));
1479 if (sampling_factors == (double *) NULL)
1480 ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
1481 wand->image_info->filename);
1483 for (p=wand->image_info->sampling_factor; p != (char *) NULL; p=strchr(p,','))
1485 while (((int) *p != 0) && ((isspace((int) ((unsigned char) *p)) != 0) ||
1488 sampling_factors[i]=StringToDouble(p);
1491 *number_factors=(size_t) i;
1492 return(sampling_factors);
1496 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1500 % M a g i c k G e t S i z e %
1504 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1506 % MagickGetSize() returns the size associated with the magick wand.
1508 % The format of the MagickGetSize method is:
1510 % MagickBooleanType MagickGetSize(const MagickWand *wand,
1511 % size_t *columns,size_t *rows)
1513 % A description of each parameter follows:
1515 % o wand: the magick wand.
1517 % o columns: the width in pixels.
1519 % o height: the height in pixels.
1522 WandExport MagickBooleanType MagickGetSize(const MagickWand *wand,
1523 size_t *columns,size_t *rows)
1528 assert(wand != (const MagickWand *) NULL);
1529 assert(wand->signature == WandSignature);
1530 if (wand->debug != MagickFalse)
1531 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1532 (void) ResetMagickMemory(&geometry,0,sizeof(geometry));
1533 (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1534 *columns=geometry.width;
1535 *rows=geometry.height;
1540 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1544 % M a g i c k G e t S i z e O f f s e t %
1548 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1550 % MagickGetSizeOffset() returns the size offset associated with the magick
1553 % The format of the MagickGetSizeOffset method is:
1555 % MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
1558 % A description of each parameter follows:
1560 % o wand: the magick wand.
1562 % o offset: the image offset.
1565 WandExport MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
1571 assert(wand != (const MagickWand *) NULL);
1572 assert(wand->signature == WandSignature);
1573 if (wand->debug != MagickFalse)
1574 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1575 (void) ResetMagickMemory(&geometry,0,sizeof(geometry));
1576 (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1582 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1586 % M a g i c k G e t T y p e %
1590 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1592 % MagickGetType() returns the wand type.
1594 % The format of the MagickGetType method is:
1596 % ImageType MagickGetType(MagickWand *wand)
1598 % A description of each parameter follows:
1600 % o wand: the magick wand.
1603 WandExport ImageType MagickGetType(MagickWand *wand)
1605 assert(wand != (MagickWand *) NULL);
1606 assert(wand->signature == WandSignature);
1607 if (wand->debug != MagickFalse)
1608 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1609 return(wand->image_info->type);
1613 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1617 % M a g i c k G e t V e r s i o n %
1621 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1623 % MagickGetVersion() returns the ImageMagick API version as a string constant
1626 % The format of the MagickGetVersion method is:
1628 % const char *MagickGetVersion(size_t *version)
1630 % A description of each parameter follows:
1632 % o version: the ImageMagick version is returned as a number.
1635 WandExport const char *MagickGetVersion(size_t *version)
1637 return(GetMagickVersion(version));
1641 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1645 % M a g i c k P r o f i l e I m a g e %
1649 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1651 % MagickProfileImage() adds or removes a ICC, IPTC, or generic profile
1652 % from an image. If the profile is NULL, it is removed from the image
1653 % otherwise added. Use a name of '*' and a profile of NULL to remove all
1654 % profiles from the image.
1656 % The format of the MagickProfileImage method is:
1658 % MagickBooleanType MagickProfileImage(MagickWand *wand,const char *name,
1659 % const void *profile,const size_t length)
1661 % A description of each parameter follows:
1663 % o wand: the magick wand.
1665 % o name: Name of profile to add or remove: ICC, IPTC, or generic profile.
1667 % o profile: the profile.
1669 % o length: the length of the profile.
1672 WandExport MagickBooleanType MagickProfileImage(MagickWand *wand,
1673 const char *name,const void *profile,const size_t length)
1678 assert(wand != (MagickWand *) NULL);
1679 assert(wand->signature == WandSignature);
1680 if (wand->debug != MagickFalse)
1681 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1682 if (wand->images == (Image *) NULL)
1683 ThrowWandException(WandError,"ContainsNoImages",wand->name);
1684 status=ProfileImage(wand->images,name,profile,length,MagickTrue);
1685 if (status == MagickFalse)
1686 InheritException(wand->exception,&wand->images->exception);
1691 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1695 % M a g i c k R e m o v e I m a g e P r o f i l e %
1699 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1701 % MagickRemoveImageProfile() removes the named image profile and returns it.
1703 % The format of the MagickRemoveImageProfile method is:
1705 % unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1706 % const char *name,size_t *length)
1708 % A description of each parameter follows:
1710 % o wand: the magick wand.
1712 % o name: Name of profile to return: ICC, IPTC, or generic profile.
1714 % o length: the length of the profile.
1717 WandExport unsigned char *MagickRemoveImageProfile(MagickWand *wand,
1718 const char *name,size_t *length)
1726 assert(wand != (MagickWand *) NULL);
1727 assert(wand->signature == WandSignature);
1728 if (wand->debug != MagickFalse)
1729 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1730 if (wand->images == (Image *) NULL)
1732 (void) ThrowMagickException(wand->exception,GetMagickModule(),WandError,
1733 "ContainsNoImages","`%s'",wand->name);
1734 return((unsigned char *) NULL);
1737 profile=RemoveImageProfile(wand->images,name);
1738 if (profile == (StringInfo *) NULL)
1739 return((unsigned char *) NULL);
1740 datum=(unsigned char *) AcquireQuantumMemory(GetStringInfoLength(profile),
1742 if (datum == (unsigned char *) NULL)
1743 return((unsigned char *) NULL);
1744 (void) CopyMagickMemory(datum,GetStringInfoDatum(profile),
1745 GetStringInfoLength(profile));
1746 *length=GetStringInfoLength(profile);
1747 profile=DestroyStringInfo(profile);
1752 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1756 % M a g i c k S e t A n t i a l i a s %
1760 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1762 % MagickSetAntialias() sets the antialias propery of the wand.
1764 % The format of the MagickSetAntialias method is:
1766 % MagickBooleanType MagickSetAntialias(MagickWand *wand,
1767 % const MagickBooleanType antialias)
1769 % A description of each parameter follows:
1771 % o wand: the magick wand.
1773 % o antialias: the antialias property.
1776 WandExport MagickBooleanType MagickSetAntialias(MagickWand *wand,
1777 const MagickBooleanType antialias)
1779 assert(wand != (MagickWand *) NULL);
1780 assert(wand->signature == WandSignature);
1781 if (wand->debug != MagickFalse)
1782 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1783 wand->image_info->antialias=antialias;
1788 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1792 % M a g i c k S e t B a c k g r o u n d C o l o r %
1796 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1798 % MagickSetBackgroundColor() sets the wand background color.
1800 % The format of the MagickSetBackgroundColor method is:
1802 % MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1803 % const PixelWand *background)
1805 % A description of each parameter follows:
1807 % o wand: the magick wand.
1809 % o background: the background pixel wand.
1812 WandExport MagickBooleanType MagickSetBackgroundColor(MagickWand *wand,
1813 const PixelWand *background)
1815 assert(wand != (MagickWand *) NULL);
1816 assert(wand->signature == WandSignature);
1817 if (wand->debug != MagickFalse)
1818 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1819 PixelGetQuantumColor(background,&wand->image_info->background_color);
1824 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1828 % M a g i c k S e t C o l o r s p a c e %
1832 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1834 % MagickSetColorspace() sets the wand colorspace type.
1836 % The format of the MagickSetColorspace method is:
1838 % MagickBooleanType MagickSetColorspace(MagickWand *wand,
1839 % const ColorspaceType colorspace)
1841 % A description of each parameter follows:
1843 % o wand: the magick wand.
1845 % o colorspace: the wand colorspace.
1848 WandExport MagickBooleanType MagickSetColorspace(MagickWand *wand,
1849 const ColorspaceType colorspace)
1851 assert(wand != (MagickWand *) NULL);
1852 assert(wand->signature == WandSignature);
1853 if (wand->debug != MagickFalse)
1854 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1855 wand->image_info->colorspace=colorspace;
1860 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1864 % M a g i c k S e t C o m p r e s s i o n %
1868 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1870 % MagickSetCompression() sets the wand compression type.
1872 % The format of the MagickSetCompression method is:
1874 % MagickBooleanType MagickSetCompression(MagickWand *wand,
1875 % const CompressionType compression)
1877 % A description of each parameter follows:
1879 % o wand: the magick wand.
1881 % o compression: the wand compression.
1884 WandExport MagickBooleanType MagickSetCompression(MagickWand *wand,
1885 const CompressionType compression)
1887 assert(wand != (MagickWand *) NULL);
1888 assert(wand->signature == WandSignature);
1889 if (wand->debug != MagickFalse)
1890 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1891 wand->image_info->compression=compression;
1896 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1900 % 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 %
1904 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1906 % MagickSetCompressionQuality() sets the wand compression quality.
1908 % The format of the MagickSetCompressionQuality method is:
1910 % MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1911 % const size_t quality)
1913 % A description of each parameter follows:
1915 % o wand: the magick wand.
1917 % o quality: the wand compression quality.
1920 WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
1921 const size_t quality)
1923 assert(wand != (MagickWand *) NULL);
1924 assert(wand->signature == WandSignature);
1925 if (wand->debug != MagickFalse)
1926 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1927 wand->image_info->quality=quality;
1932 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1936 % M a g i c k S e t D e p t h %
1940 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1942 % MagickSetDepth() sets the wand pixel depth.
1944 % The format of the MagickSetDepth method is:
1946 % MagickBooleanType MagickSetDepth(MagickWand *wand,
1947 % const size_t depth)
1949 % A description of each parameter follows:
1951 % o wand: the magick wand.
1953 % o depth: the wand pixel depth.
1956 WandExport MagickBooleanType MagickSetDepth(MagickWand *wand,
1959 assert(wand != (MagickWand *) NULL);
1960 assert(wand->signature == WandSignature);
1961 if (wand->debug != MagickFalse)
1962 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
1963 wand->image_info->depth=depth;
1968 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1972 % M a g i c k S e t E x t r a c t %
1976 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1978 % MagickSetExtract() sets the extract geometry before you read or write an
1979 % image file. Use it for inline cropping (e.g. 200x200+0+0) or resizing
1982 % The format of the MagickSetExtract method is:
1984 % MagickBooleanType MagickSetExtract(MagickWand *wand,
1985 % const char *geometry)
1987 % A description of each parameter follows:
1989 % o wand: the magick wand.
1991 % o geometry: the extract geometry.
1994 WandExport MagickBooleanType MagickSetExtract(MagickWand *wand,
1995 const char *geometry)
1997 assert(wand != (MagickWand *) NULL);
1998 assert(wand->signature == WandSignature);
1999 if (wand->debug != MagickFalse)
2000 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2001 if (geometry != (const char *) NULL)
2002 (void) CopyMagickString(wand->image_info->extract,geometry,MaxTextExtent);
2007 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2011 % M a g i c k S e t F i l e n a m e %
2015 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2017 % MagickSetFilename() sets the filename before you read or write an image file.
2019 % The format of the MagickSetFilename method is:
2021 % MagickBooleanType MagickSetFilename(MagickWand *wand,
2022 % const char *filename)
2024 % A description of each parameter follows:
2026 % o wand: the magick wand.
2028 % o filename: the image filename.
2031 WandExport MagickBooleanType MagickSetFilename(MagickWand *wand,
2032 const char *filename)
2034 assert(wand != (MagickWand *) NULL);
2035 assert(wand->signature == WandSignature);
2036 if (wand->debug != MagickFalse)
2037 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2038 if (filename != (const char *) NULL)
2039 (void) CopyMagickString(wand->image_info->filename,filename,MaxTextExtent);
2044 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2048 % M a g i c k S e t F o n t %
2052 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2054 % MagickSetFont() sets the font associated with the MagickWand.
2056 % The format of the MagickSetFont method is:
2058 % MagickBooleanType MagickSetFont(MagickWand *wand, const char *font)
2060 % A description of each parameter follows:
2062 % o wand: the magick wand.
2067 WandExport MagickBooleanType MagickSetFont(MagickWand *wand,const char *font)
2069 if ((font == (const char *) NULL) || (*font == '\0'))
2070 return(MagickFalse);
2071 assert(wand != (MagickWand *) NULL);
2072 assert(wand->signature == WandSignature);
2073 if (wand->debug != MagickFalse)
2074 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2075 (void) CloneString(&wand->image_info->font,font);
2080 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2084 % M a g i c k S e t F o r m a t %
2088 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2090 % MagickSetFormat() sets the format of the magick wand.
2092 % The format of the MagickSetFormat method is:
2094 % MagickBooleanType MagickSetFormat(MagickWand *wand,const char *format)
2096 % A description of each parameter follows:
2098 % o wand: the magick wand.
2100 % o format: the image format.
2103 WandExport MagickBooleanType MagickSetFormat(MagickWand *wand,
2109 assert(wand != (MagickWand *) NULL);
2110 assert(wand->signature == WandSignature);
2111 if (wand->debug != MagickFalse)
2112 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2113 if ((format == (char *) NULL) || (*format == '\0'))
2115 *wand->image_info->magick='\0';
2118 magick_info=GetMagickInfo(format,wand->exception);
2119 if (magick_info == (const MagickInfo *) NULL)
2120 return(MagickFalse);
2121 ClearMagickException(wand->exception);
2122 (void) CopyMagickString(wand->image_info->magick,format,MaxTextExtent);
2127 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2131 % M a g i c k S e t G r a v i t y %
2135 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2137 % MagickSetGravity() sets the gravity type.
2139 % The format of the MagickSetGravity type is:
2141 % MagickBooleanType MagickSetGravity(MagickWand *wand,
2142 % const GravityType type)
2144 % A description of each parameter follows:
2146 % o wand: the magick wand.
2148 % o type: the gravity type.
2151 WandExport MagickBooleanType MagickSetGravity(MagickWand *wand,
2152 const GravityType type)
2157 assert(wand != (MagickWand *) NULL);
2158 assert(wand->signature == WandSignature);
2159 if (wand->debug != MagickFalse)
2160 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2161 status=SetImageOption(wand->image_info,"gravity",MagickOptionToMnemonic(
2162 MagickGravityOptions,(ssize_t) type));
2167 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2171 % M a g i c k S e t I m a g e A r t i f r c t %
2175 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2177 % MagickSetImageArtifact() associates a artifact with an image.
2179 % The format of the MagickSetImageArtifact method is:
2181 % MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2182 % const char *artifact,const char *value)
2184 % A description of each parameter follows:
2186 % o wand: the magick wand.
2188 % o artifact: the artifact.
2190 % o value: the value.
2193 WandExport MagickBooleanType MagickSetImageArtifact(MagickWand *wand,
2194 const char *artifact,const char *value)
2199 assert(wand != (MagickWand *) NULL);
2200 assert(wand->signature == WandSignature);
2201 if (wand->debug != MagickFalse)
2202 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2203 if (wand->images == (Image *) NULL)
2204 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2205 status=SetImageArtifact(wand->images,artifact,value);
2206 if (status == MagickFalse)
2207 InheritException(wand->exception,&wand->images->exception);
2212 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2216 % M a g i c k S e t P r o f i l e I m a g e %
2220 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2222 % MagickSetImageProfile() adds a named profile to the magick wand. If a
2223 % profile with the same name already exists, it is replaced. This method
2224 % differs from the MagickProfileImage() method in that it does not apply any
2225 % CMS color profiles.
2227 % The format of the MagickSetImageProfile method is:
2229 % MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2230 % const char *name,const void *profile,const size_t length)
2232 % A description of each parameter follows:
2234 % o wand: the magick wand.
2236 % o name: Name of profile to add or remove: ICC, IPTC, or generic profile.
2238 % o profile: the profile.
2240 % o length: the length of the profile.
2243 WandExport MagickBooleanType MagickSetImageProfile(MagickWand *wand,
2244 const char *name,const void *profile,const size_t length)
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 profile_info=AcquireStringInfo((size_t) length);
2259 SetStringInfoDatum(profile_info,(unsigned char *) profile);
2260 status=SetImageProfile(wand->images,name,profile_info);
2261 profile_info=DestroyStringInfo(profile_info);
2262 if (status == MagickFalse)
2263 InheritException(wand->exception,&wand->images->exception);
2268 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2272 % M a g i c k S e t I m a g e P r o p e r t y %
2276 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2278 % MagickSetImageProperty() associates a property with an image.
2280 % The format of the MagickSetImageProperty method is:
2282 % MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2283 % const char *property,const char *value)
2285 % A description of each parameter follows:
2287 % o wand: the magick wand.
2289 % o property: the property.
2291 % o value: the value.
2294 WandExport MagickBooleanType MagickSetImageProperty(MagickWand *wand,
2295 const char *property,const char *value)
2300 assert(wand != (MagickWand *) NULL);
2301 assert(wand->signature == WandSignature);
2302 if (wand->debug != MagickFalse)
2303 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2304 if (wand->images == (Image *) NULL)
2305 ThrowWandException(WandError,"ContainsNoImages",wand->name);
2306 status=SetImageProperty(wand->images,property,value);
2307 if (status == MagickFalse)
2308 InheritException(wand->exception,&wand->images->exception);
2313 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2317 % M a g i c k S e t I n t e r l a c e S c h e m e %
2321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2323 % MagickSetInterlaceScheme() sets the image compression.
2325 % The format of the MagickSetInterlaceScheme method is:
2327 % MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2328 % const InterlaceType interlace_scheme)
2330 % A description of each parameter follows:
2332 % o wand: the magick wand.
2334 % o interlace_scheme: the image interlace scheme: NoInterlace, LineInterlace,
2335 % PlaneInterlace, PartitionInterlace.
2338 WandExport MagickBooleanType MagickSetInterlaceScheme(MagickWand *wand,
2339 const InterlaceType interlace_scheme)
2341 assert(wand != (MagickWand *) NULL);
2342 assert(wand->signature == WandSignature);
2343 if (wand->debug != MagickFalse)
2344 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2345 wand->image_info->interlace=interlace_scheme;
2350 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2354 % 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 %
2358 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2360 % MagickSetInterpolateMethod() sets the interpolate pixel method.
2362 % The format of the MagickSetInterpolateMethod method is:
2364 % MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2365 % const InterpolateMethodPixel method)
2367 % A description of each parameter follows:
2369 % o wand: the magick wand.
2371 % o method: the interpolate pixel method.
2374 WandExport MagickBooleanType MagickSetInterpolateMethod(MagickWand *wand,
2375 const InterpolatePixelMethod method)
2380 assert(wand != (MagickWand *) NULL);
2381 assert(wand->signature == WandSignature);
2382 if (wand->debug != MagickFalse)
2383 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2384 status=SetImageOption(wand->image_info,"interpolate",
2385 MagickOptionToMnemonic(MagickInterpolateOptions,(ssize_t) method));
2390 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2394 % M a g i c k S e t O p t i o n %
2398 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2400 % MagickSetOption() associates one or options with the wand (.e.g
2401 % MagickSetOption(wand,"jpeg:perserve","yes")).
2403 % The format of the MagickSetOption method is:
2405 % MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2406 % const char *value)
2408 % A description of each parameter follows:
2410 % o wand: the magick wand.
2414 % o value: The value.
2417 WandExport MagickBooleanType MagickSetOption(MagickWand *wand,const char *key,
2420 assert(wand != (MagickWand *) NULL);
2421 assert(wand->signature == WandSignature);
2422 if (wand->debug != MagickFalse)
2423 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2424 return(SetImageOption(wand->image_info,key,value));
2428 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2432 % M a g i c k S e t O r i e n t a t i o n %
2436 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2438 % MagickSetOrientation() sets the wand orientation type.
2440 % The format of the MagickSetOrientation method is:
2442 % MagickBooleanType MagickSetOrientation(MagickWand *wand,
2443 % const OrientationType orientation)
2445 % A description of each parameter follows:
2447 % o wand: the magick wand.
2449 % o orientation: the wand orientation.
2452 WandExport MagickBooleanType MagickSetOrientation(MagickWand *wand,
2453 const OrientationType orientation)
2455 assert(wand != (MagickWand *) NULL);
2456 assert(wand->signature == WandSignature);
2457 if (wand->debug != MagickFalse)
2458 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2459 wand->image_info->orientation=orientation;
2464 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2468 % M a g i c k S e t P a g e %
2472 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2474 % MagickSetPage() sets the page geometry of the magick wand.
2476 % The format of the MagickSetPage method is:
2478 % MagickBooleanType MagickSetPage(MagickWand *wand,
2479 % const size_t width,const size_t height,const ssize_t x,
2482 % A description of each parameter follows:
2484 % o wand: the magick wand.
2486 % o width: the page width.
2488 % o height: the page height.
2490 % o x: the page x-offset.
2492 % o y: the page y-offset.
2495 WandExport MagickBooleanType MagickSetPage(MagickWand *wand,
2496 const size_t width,const size_t height,const ssize_t x,
2500 geometry[MaxTextExtent];
2502 assert(wand != (MagickWand *) NULL);
2503 assert(wand->signature == WandSignature);
2504 if (wand->debug != MagickFalse)
2505 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2506 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
2507 (double) width,(double) height,(double) x,(double) y);
2508 (void) CloneString(&wand->image_info->page,geometry);
2513 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2517 % M a g i c k S e t P a s s p h r a s e %
2521 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2523 % MagickSetPassphrase() sets the passphrase.
2525 % The format of the MagickSetPassphrase method is:
2527 % MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2528 % const char *passphrase)
2530 % A description of each parameter follows:
2532 % o wand: the magick wand.
2534 % o passphrase: the passphrase.
2537 WandExport MagickBooleanType MagickSetPassphrase(MagickWand *wand,
2538 const char *passphrase)
2540 assert(wand != (MagickWand *) NULL);
2541 assert(wand->signature == WandSignature);
2542 if (wand->debug != MagickFalse)
2543 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2544 (void) CloneString(&wand->image_info->authenticate,passphrase);
2549 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2553 % M a g i c k S e t P o i n t s i z e %
2557 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2559 % MagickSetPointsize() sets the font pointsize associated with the MagickWand.
2561 % The format of the MagickSetPointsize method is:
2563 % MagickBooleanType MagickSetPointsize(MagickWand *wand,
2564 % const double pointsize)
2566 % A description of each parameter follows:
2568 % o wand: the magick wand.
2570 % o pointsize: the size of the font
2573 WandExport MagickBooleanType MagickSetPointsize(MagickWand *wand,
2574 const double pointsize)
2576 assert(wand != (MagickWand *) NULL);
2577 assert(wand->signature == WandSignature);
2578 if (wand->debug != MagickFalse)
2579 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2580 wand->image_info->pointsize=pointsize;
2585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2589 % M a g i c k S e t P r o g r e s s M o n i t o r %
2593 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2595 % MagickSetProgressMonitor() sets the wand progress monitor to the specified
2596 % method and returns the previous progress monitor if any. The progress
2597 % monitor method looks like this:
2599 % MagickBooleanType MagickProgressMonitor(const char *text,
2600 % const MagickOffsetType offset,const MagickSizeType span,
2601 % void *client_data)
2603 % If the progress monitor returns MagickFalse, the current operation is
2606 % The format of the MagickSetProgressMonitor method is:
2608 % MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand
2609 % const MagickProgressMonitor progress_monitor,void *client_data)
2611 % A description of each parameter follows:
2613 % o wand: the magick wand.
2615 % o progress_monitor: Specifies a pointer to a method to monitor progress
2616 % of an image operation.
2618 % o client_data: Specifies a pointer to any client data.
2621 WandExport MagickProgressMonitor MagickSetProgressMonitor(MagickWand *wand,
2622 const MagickProgressMonitor progress_monitor,void *client_data)
2624 MagickProgressMonitor
2627 assert(wand != (MagickWand *) NULL);
2628 assert(wand->signature == WandSignature);
2629 if (wand->debug != MagickFalse)
2630 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2631 previous_monitor=SetImageInfoProgressMonitor(wand->image_info,
2632 progress_monitor,client_data);
2633 return(previous_monitor);
2637 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2641 % M a g i c k S e t R e s o u r c e L i m i t %
2645 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2647 % MagickSetResourceLimit() sets the limit for a particular resource in
2650 % The format of the MagickSetResourceLimit method is:
2652 % MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2653 % const MagickSizeType limit)
2655 % A description of each parameter follows:
2657 % o type: the type of resource: AreaResource, MemoryResource, MapResource,
2658 % DiskResource, FileResource.
2660 % o The maximum limit for the resource.
2663 WandExport MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2664 const MagickSizeType limit)
2666 return(SetMagickResourceLimit(type,limit));
2670 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2674 % M a g i c k S e t R e s o l u t i o n %
2678 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2680 % MagickSetResolution() sets the image resolution.
2682 % The format of the MagickSetResolution method is:
2684 % MagickBooleanType MagickSetResolution(MagickWand *wand,
2685 % const double x_resolution,const doubtl y_resolution)
2687 % A description of each parameter follows:
2689 % o wand: the magick wand.
2691 % o x_resolution: the image x resolution.
2693 % o y_resolution: the image y resolution.
2696 WandExport MagickBooleanType MagickSetResolution(MagickWand *wand,
2697 const double x_resolution,const double y_resolution)
2700 density[MaxTextExtent];
2702 assert(wand != (MagickWand *) NULL);
2703 assert(wand->signature == WandSignature);
2704 if (wand->debug != MagickFalse)
2705 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2706 (void) FormatMagickString(density,MaxTextExtent,"%gx%g",x_resolution,
2708 (void) CloneString(&wand->image_info->density,density);
2713 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2717 % M a g i c k S e t S a m p l i n g F a c t o r s %
2721 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2723 % MagickSetSamplingFactors() sets the image sampling factors.
2725 % The format of the MagickSetSamplingFactors method is:
2727 % MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2728 % const size_t number_factors,const double *sampling_factors)
2730 % A description of each parameter follows:
2732 % o wand: the magick wand.
2734 % o number_factoes: the number of factors.
2736 % o sampling_factors: An array of doubles representing the sampling factor
2737 % for each color component (in RGB order).
2740 WandExport MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
2741 const size_t number_factors,const double *sampling_factors)
2744 sampling_factor[MaxTextExtent];
2749 assert(wand != (MagickWand *) NULL);
2750 assert(wand->signature == WandSignature);
2751 if (wand->debug != MagickFalse)
2752 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2753 if (wand->image_info->sampling_factor != (char *) NULL)
2754 wand->image_info->sampling_factor=(char *)
2755 RelinquishMagickMemory(wand->image_info->sampling_factor);
2756 if (number_factors == 0)
2758 for (i=0; i < (ssize_t) (number_factors-1); i++)
2760 (void) FormatMagickString(sampling_factor,MaxTextExtent,"%g,",
2761 sampling_factors[i]);
2762 (void) ConcatenateString(&wand->image_info->sampling_factor,
2765 (void) FormatMagickString(sampling_factor,MaxTextExtent,"%g",
2766 sampling_factors[i]);
2767 (void) ConcatenateString(&wand->image_info->sampling_factor,sampling_factor);
2772 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2776 % M a g i c k S e t S i z e %
2780 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2782 % MagickSetSize() sets the size of the magick wand. Set it before you
2783 % read a raw image format such as RGB, GRAY, or CMYK.
2785 % The format of the MagickSetSize method is:
2787 % MagickBooleanType MagickSetSize(MagickWand *wand,
2788 % const size_t columns,const size_t rows)
2790 % A description of each parameter follows:
2792 % o wand: the magick wand.
2794 % o columns: the width in pixels.
2796 % o rows: the rows in pixels.
2799 WandExport MagickBooleanType MagickSetSize(MagickWand *wand,
2800 const size_t columns,const size_t rows)
2803 geometry[MaxTextExtent];
2805 assert(wand != (MagickWand *) NULL);
2806 assert(wand->signature == WandSignature);
2807 if (wand->debug != MagickFalse)
2808 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2809 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g",(double)
2810 columns,(double) rows);
2811 (void) CloneString(&wand->image_info->size,geometry);
2816 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2820 % M a g i c k S e t S i z e O f f s e t %
2824 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2826 % MagickSetSizeOffset() sets the size and offset of the magick wand. Set it
2827 % before you read a raw image format such as RGB, GRAY, or CMYK.
2829 % The format of the MagickSetSizeOffset method is:
2831 % MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2832 % const size_t columns,const size_t rows,
2833 % const ssize_t offset)
2835 % A description of each parameter follows:
2837 % o wand: the magick wand.
2839 % o columns: the image width in pixels.
2841 % o rows: the image rows in pixels.
2843 % o offset: the image offset.
2846 WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2847 const size_t columns,const size_t rows,const ssize_t offset)
2850 geometry[MaxTextExtent];
2852 assert(wand != (MagickWand *) NULL);
2853 assert(wand->signature == WandSignature);
2854 if (wand->debug != MagickFalse)
2855 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2856 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g",
2857 (double) columns,(double) rows,(double) offset);
2858 (void) CloneString(&wand->image_info->size,geometry);
2863 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2867 % M a g i c k S e t T y p e %
2871 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2873 % MagickSetType() sets the image type attribute.
2875 % The format of the MagickSetType method is:
2877 % MagickBooleanType MagickSetType(MagickWand *wand,
2878 % const ImageType image_type)
2880 % A description of each parameter follows:
2882 % o wand: the magick wand.
2884 % o image_type: the image type: UndefinedType, BilevelType, GrayscaleType,
2885 % GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType,
2886 % TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType,
2890 WandExport MagickBooleanType MagickSetType(MagickWand *wand,
2891 const ImageType image_type)
2893 assert(wand != (MagickWand *) NULL);
2894 assert(wand->signature == WandSignature);
2895 if (wand->debug != MagickFalse)
2896 (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2897 wand->image_info->type=image_type;