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