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