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