blob: 77d105d06a70c8e38dd5440ac3db0628b85a2f0e [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001/*
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% %
cristy7e41fe82010-12-04 23:12:08 +000026% Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization %
cristy3ed852e2009-09-05 21:47:34 +000027% 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
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"
cristyf2f27272009-12-17 14:48:46 +000053#include "magick/string-private.h"
cristy3ed852e2009-09-05 21:47:34 +000054
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
65/*
66%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67% %
68% %
69% %
cristy6a97fda2009-10-11 20:42:55 +000070% 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*/
90WandExport 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
106/*
107%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108% %
109% %
110% %
cristy3ed852e2009-09-05 21:47:34 +0000111% 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*/
131WandExport 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
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*/
172WandExport 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
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*/
205WandExport 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
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*/
236WandExport 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
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*/
272WandExport 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
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*/
303WandExport 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
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%
cristybb503372010-05-27 20:51:26 +0000327% size_t MagickGetCompressionQuality(MagickWand *wand)
cristy3ed852e2009-09-05 21:47:34 +0000328%
329% A description of each parameter follows:
330%
331% o wand: the magick wand.
332%
333*/
cristybb503372010-05-27 20:51:26 +0000334WandExport size_t MagickGetCompressionQuality(MagickWand *wand)
cristy3ed852e2009-09-05 21:47:34 +0000335{
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
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*/
362WandExport const char *MagickGetCopyright(void)
363{
364 return(GetMagickCopyright());
365}
366
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*/
389WandExport 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
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*/
420WandExport 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
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*/
453WandExport 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
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*/
484WandExport 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);
cristy042ee782011-04-22 18:48:30 +0000499 type=(GravityType) ParseCommandOption(MagickGravityOptions,MagickFalse,option);
cristy3ed852e2009-09-05 21:47:34 +0000500 return(type);
501}
502
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*/
521WandExport char *MagickGetHomeURL(void)
522{
523 return(GetMagickHomeURL());
524}
525
526/*
527%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
528% %
529% %
530% %
cristy6a97fda2009-10-11 20:42:55 +0000531% 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*/
552WandExport 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
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,
cristybb503372010-05-27 20:51:26 +0000592% const char *pattern,size_t *number_artifacts)
cristy6a97fda2009-10-11 20:42:55 +0000593%
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*/
603WandExport char **MagickGetImageArtifacts(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +0000604 const char *pattern,size_t *number_artifacts)
cristy6a97fda2009-10-11 20:42:55 +0000605{
606 char
607 **artifacts;
608
609 const char
610 *artifact;
611
cristybb503372010-05-27 20:51:26 +0000612 register ssize_t
cristy6a97fda2009-10-11 20:42:55 +0000613 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 {
cristybb503372010-05-27 20:51:26 +0000640 if ((i+1) >= (ssize_t) length)
cristy6a97fda2009-10-11 20:42:55 +0000641 {
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;
cristybb503372010-05-27 20:51:26 +0000659 *number_artifacts=(size_t) i;
cristy6a97fda2009-10-11 20:42:55 +0000660 return(artifacts);
661}
662
663/*
664%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
665% %
666% %
667% %
cristy3ed852e2009-09-05 21:47:34 +0000668% 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*/
690WandExport 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));
cristybb503372010-05-27 20:51:26 +0000721 *length=(size_t) GetStringInfoLength(profile);
cristy3ed852e2009-09-05 21:47:34 +0000722 return(datum);
723}
724
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,
cristybb503372010-05-27 20:51:26 +0000744% size_t *number_profiles)
cristy3ed852e2009-09-05 21:47:34 +0000745%
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*/
755WandExport char **MagickGetImageProfiles(MagickWand *wand,const char *pattern,
cristybb503372010-05-27 20:51:26 +0000756 size_t *number_profiles)
cristy3ed852e2009-09-05 21:47:34 +0000757{
758 char
759 **profiles;
760
761 const char
762 *property;
763
cristybb503372010-05-27 20:51:26 +0000764 register ssize_t
cristy3ed852e2009-09-05 21:47:34 +0000765 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 {
cristybb503372010-05-27 20:51:26 +0000792 if ((i+1) >= (ssize_t) length)
cristy3ed852e2009-09-05 21:47:34 +0000793 {
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;
cristybb503372010-05-27 20:51:26 +0000811 *number_profiles=(size_t) i;
cristy3ed852e2009-09-05 21:47:34 +0000812 return(profiles);
813}
814
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*/
841WandExport 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
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,
cristybb503372010-05-27 20:51:26 +0000881% const char *pattern,size_t *number_properties)
cristy3ed852e2009-09-05 21:47:34 +0000882%
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*/
892WandExport char **MagickGetImageProperties(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +0000893 const char *pattern,size_t *number_properties)
cristy3ed852e2009-09-05 21:47:34 +0000894{
895 char
896 **properties;
897
898 const char
899 *property;
900
cristybb503372010-05-27 20:51:26 +0000901 register ssize_t
cristy3ed852e2009-09-05 21:47:34 +0000902 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 {
cristybb503372010-05-27 20:51:26 +0000929 if ((i+1) >= (ssize_t) length)
cristy3ed852e2009-09-05 21:47:34 +0000930 {
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;
cristybb503372010-05-27 20:51:26 +0000948 *number_properties=(size_t) i;
cristy3ed852e2009-09-05 21:47:34 +0000949 return(properties);
950}
951
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*/
974WandExport 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
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*/
1005WandExport 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);
cristy042ee782011-04-22 18:48:30 +00001020 method=(InterpolatePixelMethod) ParseCommandOption(MagickInterpolateOptions,
cristy3ed852e2009-09-05 21:47:34 +00001021 MagickFalse,option);
1022 return(method);
1023}
1024
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*/
1051WandExport 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
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%
cristybb503372010-05-27 20:51:26 +00001082% char *MagickGetOptions(MagickWand *wand,size_t *number_options)
cristy3ed852e2009-09-05 21:47:34 +00001083%
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*/
1093WandExport char **MagickGetOptions(MagickWand *wand,const char *pattern,
cristybb503372010-05-27 20:51:26 +00001094 size_t *number_options)
cristy3ed852e2009-09-05 21:47:34 +00001095{
1096 char
1097 **options;
1098
1099 const char
1100 *option;
1101
cristybb503372010-05-27 20:51:26 +00001102 register ssize_t
cristy3ed852e2009-09-05 21:47:34 +00001103 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 {
cristybb503372010-05-27 20:51:26 +00001129 if ((i+1) >= (ssize_t) length)
cristy3ed852e2009-09-05 21:47:34 +00001130 {
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;
cristybb503372010-05-27 20:51:26 +00001148 *number_options=(size_t) i;
cristy3ed852e2009-09-05 21:47:34 +00001149 return(options);
1150}
1151
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*/
1174WandExport 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
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*/
1203WandExport const char *MagickGetPackageName(void)
1204{
1205 return(GetMagickPackageName());
1206}
1207
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,
cristybb503372010-05-27 20:51:26 +00001224% size_t *width,size_t *height,ssize_t *x,ssize_t *y)
cristy3ed852e2009-09-05 21:47:34 +00001225%
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*/
1239WandExport MagickBooleanType MagickGetPage(const MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00001240 size_t *width,size_t *height,ssize_t *x,ssize_t *y)
cristy3ed852e2009-09-05 21:47:34 +00001241{
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
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*/
1281WandExport 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
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%
cristybb503372010-05-27 20:51:26 +00001306% const char *MagickGetQuantumDepth(size_t *depth)
cristy3ed852e2009-09-05 21:47:34 +00001307%
1308% A description of each parameter follows:
1309%
1310% o depth: the quantum depth is returned as a number.
1311%
1312*/
cristybb503372010-05-27 20:51:26 +00001313WandExport const char *MagickGetQuantumDepth(size_t *depth)
cristy3ed852e2009-09-05 21:47:34 +00001314{
1315 return(GetMagickQuantumDepth(depth));
1316}
1317
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%
cristybb503372010-05-27 20:51:26 +00001334% const char *MagickGetQuantumRange(size_t *range)
cristy3ed852e2009-09-05 21:47:34 +00001335%
1336% A description of each parameter follows:
1337%
1338% o range: the quantum range is returned as a number.
1339%
1340*/
cristybb503372010-05-27 20:51:26 +00001341WandExport const char *MagickGetQuantumRange(size_t *range)
cristy3ed852e2009-09-05 21:47:34 +00001342{
1343 return(GetMagickQuantumRange(range));
1344}
1345
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*/
1365WandExport const char *MagickGetReleaseDate(void)
1366{
1367 return(GetMagickReleaseDate());
1368}
1369
1370/*
1371%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1372% %
1373% %
1374% %
cristy56375382010-11-21 23:49:30 +00001375% 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*/
1397WandExport 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
1423/*
1424%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1425% %
1426% %
1427% %
cristy3ed852e2009-09-05 21:47:34 +00001428% 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*/
1445WandExport MagickSizeType MagickGetResource(const ResourceType type)
1446{
1447 return(GetMagickResource(type));
1448}
1449
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*/
1472WandExport MagickSizeType MagickGetResourceLimit(const ResourceType type)
1473{
1474 return(GetMagickResourceLimit(type));
1475}
1476
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,
cristybb503372010-05-27 20:51:26 +00001493% size_t *number_factors)
cristy3ed852e2009-09-05 21:47:34 +00001494%
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*/
1502WandExport double *MagickGetSamplingFactors(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00001503 size_t *number_factors)
cristy3ed852e2009-09-05 21:47:34 +00001504{
1505 double
1506 *sampling_factors;
1507
1508 register const char
1509 *p;
1510
cristybb503372010-05-27 20:51:26 +00001511 register ssize_t
cristy3ed852e2009-09-05 21:47:34 +00001512 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++;
cristyf2f27272009-12-17 14:48:46 +00001541 sampling_factors[i]=StringToDouble(p);
cristy3ed852e2009-09-05 21:47:34 +00001542 i++;
1543 }
cristybb503372010-05-27 20:51:26 +00001544 *number_factors=(size_t) i;
cristy3ed852e2009-09-05 21:47:34 +00001545 return(sampling_factors);
1546}
1547
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,
cristybb503372010-05-27 20:51:26 +00001564% size_t *columns,size_t *rows)
cristy3ed852e2009-09-05 21:47:34 +00001565%
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*/
1575WandExport MagickBooleanType MagickGetSize(const MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00001576 size_t *columns,size_t *rows)
cristy3ed852e2009-09-05 21:47:34 +00001577{
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
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,
cristybb503372010-05-27 20:51:26 +00001609% ssize_t *offset)
cristy3ed852e2009-09-05 21:47:34 +00001610%
1611% A description of each parameter follows:
1612%
1613% o wand: the magick wand.
1614%
1615% o offset: the image offset.
1616%
1617*/
1618WandExport MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00001619 ssize_t *offset)
cristy3ed852e2009-09-05 21:47:34 +00001620{
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
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*/
1656WandExport 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
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%
cristybb503372010-05-27 20:51:26 +00001681% const char *MagickGetVersion(size_t *version)
cristy3ed852e2009-09-05 21:47:34 +00001682%
1683% A description of each parameter follows:
1684%
1685% o version: the ImageMagick version is returned as a number.
1686%
1687*/
cristybb503372010-05-27 20:51:26 +00001688WandExport const char *MagickGetVersion(size_t *version)
cristy3ed852e2009-09-05 21:47:34 +00001689{
1690 return(GetMagickVersion(version));
1691}
1692
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*/
1725WandExport 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
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*/
1770WandExport 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
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*/
1829WandExport 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
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*/
1865WandExport 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
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*/
1901WandExport 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
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*/
1937WandExport 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
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,
cristybb503372010-05-27 20:51:26 +00001964% const size_t quality)
cristy3ed852e2009-09-05 21:47:34 +00001965%
1966% A description of each parameter follows:
1967%
1968% o wand: the magick wand.
1969%
1970% o quality: the wand compression quality.
1971%
1972*/
1973WandExport MagickBooleanType MagickSetCompressionQuality(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00001974 const size_t quality)
cristy3ed852e2009-09-05 21:47:34 +00001975{
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
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,
cristybb503372010-05-27 20:51:26 +00002000% const size_t depth)
cristy3ed852e2009-09-05 21:47:34 +00002001%
2002% A description of each parameter follows:
2003%
2004% o wand: the magick wand.
2005%
2006% o depth: the wand pixel depth.
2007%
2008*/
2009WandExport MagickBooleanType MagickSetDepth(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00002010 const size_t depth)
cristy3ed852e2009-09-05 21:47:34 +00002011{
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
2020/*
2021%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2022% %
2023% %
2024% %
cristy6a0fa192009-10-08 19:54:53 +00002025% 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*/
2047WandExport 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
2059/*
2060%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2061% %
2062% %
2063% %
cristy3ed852e2009-09-05 21:47:34 +00002064% 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*/
2084WandExport 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
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*/
2120WandExport 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
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*/
2156WandExport 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
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*/
2204WandExport 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);
cristy042ee782011-04-22 18:48:30 +00002214 status=SetImageOption(wand->image_info,"gravity",CommandOptionToMnemonic(
cristybb503372010-05-27 20:51:26 +00002215 MagickGravityOptions,(ssize_t) type));
cristy3ed852e2009-09-05 21:47:34 +00002216 return(status);
2217}
2218
2219/*
2220%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2221% %
2222% %
2223% %
cristy6a97fda2009-10-11 20:42:55 +00002224% 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*/
2246WandExport 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
2264/*
2265%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2266% %
2267% %
2268% %
cristy3ed852e2009-09-05 21:47:34 +00002269% 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*/
2296WandExport 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
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*/
2347WandExport 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
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*/
2391WandExport 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
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*/
2427WandExport 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",
cristy042ee782011-04-22 18:48:30 +00002438 CommandOptionToMnemonic(MagickInterpolateOptions,(ssize_t) method));
cristy3ed852e2009-09-05 21:47:34 +00002439 return(status);
2440}
2441
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*/
2470WandExport 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
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*/
2505WandExport 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
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,
cristybb503372010-05-27 20:51:26 +00002532% const size_t width,const size_t height,const ssize_t x,
2533% const ssize_t y)
cristy3ed852e2009-09-05 21:47:34 +00002534%
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*/
2548WandExport MagickBooleanType MagickSetPage(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00002549 const size_t width,const size_t height,const ssize_t x,
2550 const ssize_t y)
cristy3ed852e2009-09-05 21:47:34 +00002551{
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);
cristy6d8abba2010-06-03 01:10:47 +00002559 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g%+.20g",
cristye8c25f92010-06-03 00:53:06 +00002560 (double) width,(double) height,(double) x,(double) y);
cristy3ed852e2009-09-05 21:47:34 +00002561 (void) CloneString(&wand->image_info->page,geometry);
2562 return(MagickTrue);
2563}
2564
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*/
2590WandExport 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
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*/
2626WandExport 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
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*/
2674WandExport 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
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*/
2716WandExport MagickBooleanType MagickSetResourceLimit(const ResourceType type,
2717 const MagickSizeType limit)
2718{
2719 return(SetMagickResourceLimit(type,limit));
2720}
2721
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*/
2749WandExport 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);
cristye7f51092010-01-17 00:39:37 +00002759 (void) FormatMagickString(density,MaxTextExtent,"%gx%g",x_resolution,
cristy3ed852e2009-09-05 21:47:34 +00002760 y_resolution);
2761 (void) CloneString(&wand->image_info->density,density);
2762 return(MagickTrue);
2763}
2764
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,
cristybb503372010-05-27 20:51:26 +00002781% const size_t number_factors,const double *sampling_factors)
cristy3ed852e2009-09-05 21:47:34 +00002782%
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*/
2793WandExport MagickBooleanType MagickSetSamplingFactors(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00002794 const size_t number_factors,const double *sampling_factors)
cristy3ed852e2009-09-05 21:47:34 +00002795{
2796 char
2797 sampling_factor[MaxTextExtent];
2798
cristybb503372010-05-27 20:51:26 +00002799 register ssize_t
cristy3ed852e2009-09-05 21:47:34 +00002800 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);
cristybb503372010-05-27 20:51:26 +00002811 for (i=0; i < (ssize_t) (number_factors-1); i++)
cristy3ed852e2009-09-05 21:47:34 +00002812 {
cristye7f51092010-01-17 00:39:37 +00002813 (void) FormatMagickString(sampling_factor,MaxTextExtent,"%g,",
cristy3ed852e2009-09-05 21:47:34 +00002814 sampling_factors[i]);
2815 (void) ConcatenateString(&wand->image_info->sampling_factor,
2816 sampling_factor);
2817 }
cristye7f51092010-01-17 00:39:37 +00002818 (void) FormatMagickString(sampling_factor,MaxTextExtent,"%g",
cristy3ed852e2009-09-05 21:47:34 +00002819 sampling_factors[i]);
2820 (void) ConcatenateString(&wand->image_info->sampling_factor,sampling_factor);
2821 return(MagickTrue);
2822}
2823
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,
cristybb503372010-05-27 20:51:26 +00002841% const size_t columns,const size_t rows)
cristy3ed852e2009-09-05 21:47:34 +00002842%
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*/
2852WandExport MagickBooleanType MagickSetSize(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00002853 const size_t columns,const size_t rows)
cristy3ed852e2009-09-05 21:47:34 +00002854{
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);
cristye8c25f92010-06-03 00:53:06 +00002862 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g",(double)
2863 columns,(double) rows);
cristy3ed852e2009-09-05 21:47:34 +00002864 (void) CloneString(&wand->image_info->size,geometry);
2865 return(MagickTrue);
2866}
2867
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,
cristybb503372010-05-27 20:51:26 +00002885% const size_t columns,const size_t rows,
2886% const ssize_t offset)
cristy3ed852e2009-09-05 21:47:34 +00002887%
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*/
2899WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
cristybb503372010-05-27 20:51:26 +00002900 const size_t columns,const size_t rows,const ssize_t offset)
cristy3ed852e2009-09-05 21:47:34 +00002901{
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);
cristye8c25f92010-06-03 00:53:06 +00002909 (void) FormatMagickString(geometry,MaxTextExtent,"%.20gx%.20g%+.20g",
2910 (double) columns,(double) rows,(double) offset);
cristy3ed852e2009-09-05 21:47:34 +00002911 (void) CloneString(&wand->image_info->size,geometry);
2912 return(MagickTrue);
2913}
2914
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%
cristy5f1c1ff2010-12-23 21:38:06 +00002937% o image_type: the image type: UndefinedType, BilevelType, GrayscaleType,
cristy3ed852e2009-09-05 21:47:34 +00002938% GrayscaleMatteType, PaletteType, PaletteMatteType, TrueColorType,
2939% TrueColorMatteType, ColorSeparationType, ColorSeparationMatteType,
2940% or OptimizeType.
2941%
2942*/
2943WandExport 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}