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