• Home
  • History
  • Annotate
  • 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-2016 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  %    http://www.imagemagick.org/script/license.php                            %
33  %                                                                             %
34  %  Unless required by applicable law or agreed to in writing, software        %
35  %  distributed under the License is distributed on an "AS IS" BASIS,          %
36  %  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
37  %  See the License for the specific language governing permissions and        %
38  %  limitations under the License.                                             %
39  %                                                                             %
40  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41  %
42  %
43  %
44  */
45  
46  /*
47    Include declarations.
48  */
49  #include "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) CopyMagickMemory(datum,GetStringInfoDatum(profile),
725      GetStringInfoLength(profile));
726    *length=(size_t) GetStringInfoLength(profile);
727    return(datum);
728  }
729  
730  /*
731  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
732  %                                                                             %
733  %                                                                             %
734  %                                                                             %
735  %   M a g i c k G e t I m a g e P r o f i l e s                               %
736  %                                                                             %
737  %                                                                             %
738  %                                                                             %
739  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
740  %
741  %  MagickGetImageProfiles() returns all the profile names that match the
742  %  specified pattern associated with a wand.  Use MagickGetImageProfile() to
743  %  return the value of a particular property.  Use MagickRelinquishMemory() to
744  %  free the value when you are finished with it.
745  %
746  %  The format of the MagickGetImageProfiles method is:
747  %
748  %      char *MagickGetImageProfiles(MagickWand *wand,const char *pattern,
749  %        size_t *number_profiles)
750  %
751  %  A description of each parameter follows:
752  %
753  %    o wand: the magick wand.
754  %
755  %    o pattern: Specifies a pointer to a text string containing a pattern.
756  %
757  %    o number_profiles: the number profiles associated with this wand.
758  %
759  */
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) ResetMagickMemory(&geometry,0,sizeof(geometry));
1265    (void) ParseAbsoluteGeometry(wand->image_info->page,&geometry);
1266    *width=geometry.width;
1267    *height=geometry.height;
1268    *x=geometry.x;
1269    *y=geometry.y;
1270    return(MagickTrue);
1271  }
1272  
1273  /*
1274  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1275  %                                                                             %
1276  %                                                                             %
1277  %                                                                             %
1278  %   M a g i c k G e t P o i n t s i z e                                       %
1279  %                                                                             %
1280  %                                                                             %
1281  %                                                                             %
1282  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1283  %
1284  %  MagickGetPointsize() returns the font pointsize associated with the
1285  %  MagickWand.
1286  %
1287  %  The format of the MagickGetPointsize method is:
1288  %
1289  %      double MagickGetPointsize(MagickWand *wand)
1290  %
1291  %  A description of each parameter follows:
1292  %
1293  %    o wand: the magick wand.
1294  %
1295  */
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) ResetMagickMemory(&geometry,0,sizeof(geometry));
1605    (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1606    *columns=geometry.width;
1607    *rows=geometry.height;
1608    return(MagickTrue);
1609  }
1610  
1611  /*
1612  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1613  %                                                                             %
1614  %                                                                             %
1615  %                                                                             %
1616  %   M a g i c k G e t S i z e O f f s e t                                     %
1617  %                                                                             %
1618  %                                                                             %
1619  %                                                                             %
1620  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1621  %
1622  %  MagickGetSizeOffset() returns the size offset associated with the magick
1623  %  wand.
1624  %
1625  %  The format of the MagickGetSizeOffset method is:
1626  %
1627  %      MagickBooleanType MagickGetSizeOffset(const MagickWand *wand,
1628  %        ssize_t *offset)
1629  %
1630  %  A description of each parameter follows:
1631  %
1632  %    o wand: the magick wand.
1633  %
1634  %    o offset: the image offset.
1635  %
1636  */
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) ResetMagickMemory(&geometry,0,sizeof(geometry));
1649    (void) ParseAbsoluteGeometry(wand->image_info->size,&geometry);
1650    *offset=geometry.x;
1651    return(MagickTrue);
1652  }
1653  
1654  /*
1655  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1656  %                                                                             %
1657  %                                                                             %
1658  %                                                                             %
1659  %   M a g i c k G e t T y p e                                                 %
1660  %                                                                             %
1661  %                                                                             %
1662  %                                                                             %
1663  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1664  %
1665  %  MagickGetType() returns the wand type.
1666  %
1667  %  The format of the MagickGetType method is:
1668  %
1669  %      ImageType MagickGetType(MagickWand *wand)
1670  %
1671  %  A description of each parameter follows:
1672  %
1673  %    o wand: the magick wand.
1674  %
1675  */
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) CopyMagickMemory(datum,GetStringInfoDatum(profile),
1815      GetStringInfoLength(profile));
1816    *length=GetStringInfoLength(profile);
1817    profile=DestroyStringInfo(profile);
1818    return(datum);
1819  }
1820  
1821  /*
1822  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1823  %                                                                             %
1824  %                                                                             %
1825  %                                                                             %
1826  %   M a g i c k S e t A n t i a l i a s                                       %
1827  %                                                                             %
1828  %                                                                             %
1829  %                                                                             %
1830  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1831  %
1832  %  MagickSetAntialias() sets the antialias propery of the wand.
1833  %
1834  %  The format of the MagickSetAntialias method is:
1835  %
1836  %      MagickBooleanType MagickSetAntialias(MagickWand *wand,
1837  %        const MagickBooleanType antialias)
1838  %
1839  %  A description of each parameter follows:
1840  %
1841  %    o wand: the magick wand.
1842  %
1843  %    o antialias: the antialias property.
1844  %
1845  */
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 i z e                                                 %
2862  %                                                                             %
2863  %                                                                             %
2864  %                                                                             %
2865  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2866  %
2867  %  MagickSetSize() sets the size of the magick wand.  Set it before you
2868  %  read a raw image format such as RGB, GRAY, or CMYK.
2869  %
2870  %  The format of the MagickSetSize method is:
2871  %
2872  %      MagickBooleanType MagickSetSize(MagickWand *wand,
2873  %        const size_t columns,const size_t rows)
2874  %
2875  %  A description of each parameter follows:
2876  %
2877  %    o wand: the magick wand.
2878  %
2879  %    o columns: the width in pixels.
2880  %
2881  %    o rows: the rows in pixels.
2882  %
2883  */
MagickSetSize(MagickWand * wand,const size_t columns,const size_t rows)2884  WandExport MagickBooleanType MagickSetSize(MagickWand *wand,
2885    const size_t columns,const size_t rows)
2886  {
2887    char
2888      geometry[MagickPathExtent];
2889  
2890    assert(wand != (MagickWand *) NULL);
2891    assert(wand->signature == MagickWandSignature);
2892    if (wand->debug != MagickFalse)
2893      (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2894  
2895    (void) FormatLocaleString(geometry,MagickPathExtent,"%.20gx%.20g",(double)
2896      columns,(double) rows);
2897    (void) CloneString(&wand->image_info->size,geometry);
2898    return(MagickTrue);
2899  }
2900  
2901  /*
2902  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2903  %                                                                             %
2904  %                                                                             %
2905  %                                                                             %
2906  %   M a g i c k S e t S i z e O f f s e t                                     %
2907  %                                                                             %
2908  %                                                                             %
2909  %                                                                             %
2910  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2911  %
2912  %  MagickSetSizeOffset() sets the size and offset of the magick wand.  Set it
2913  %  before you read a raw image format such as RGB, GRAY, or CMYK.
2914  %
2915  %  The format of the MagickSetSizeOffset method is:
2916  %
2917  %      MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2918  %        const size_t columns,const size_t rows,
2919  %        const ssize_t offset)
2920  %
2921  %  A description of each parameter follows:
2922  %
2923  %    o wand: the magick wand.
2924  %
2925  %    o columns: the image width in pixels.
2926  %
2927  %    o rows: the image rows in pixels.
2928  %
2929  %    o offset: the image offset.
2930  %
2931  */
MagickSetSizeOffset(MagickWand * wand,const size_t columns,const size_t rows,const ssize_t offset)2932  WandExport MagickBooleanType MagickSetSizeOffset(MagickWand *wand,
2933    const size_t columns,const size_t rows,const ssize_t offset)
2934  {
2935    char
2936      geometry[MagickPathExtent];
2937  
2938    assert(wand != (MagickWand *) NULL);
2939    assert(wand->signature == MagickWandSignature);
2940    if (wand->debug != MagickFalse)
2941      (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2942  
2943    (void) FormatLocaleString(geometry,MagickPathExtent,"%.20gx%.20g%+.20g",
2944      (double) columns,(double) rows,(double) offset);
2945    (void) CloneString(&wand->image_info->size,geometry);
2946    return(MagickTrue);
2947  }
2948  
2949  /*
2950  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2951  %                                                                             %
2952  %                                                                             %
2953  %                                                                             %
2954  %   M a g i c k S e t T y p e                                                 %
2955  %                                                                             %
2956  %                                                                             %
2957  %                                                                             %
2958  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2959  %
2960  %  MagickSetType() sets the image type attribute.
2961  %
2962  %  The format of the MagickSetType method is:
2963  %
2964  %      MagickBooleanType MagickSetType(MagickWand *wand,
2965  %        const ImageType image_type)
2966  %
2967  %  A description of each parameter follows:
2968  %
2969  %    o wand: the magick wand.
2970  %
2971  %    o image_type: the image type:   UndefinedType, BilevelType, GrayscaleType,
2972  %      GrayscaleAlphaType, PaletteType, PaletteAlphaType, TrueColorType,
2973  %      TrueColorAlphaType, ColorSeparationType, ColorSeparationAlphaType,
2974  %      or OptimizeType.
2975  %
2976  */
MagickSetType(MagickWand * wand,const ImageType image_type)2977  WandExport MagickBooleanType MagickSetType(MagickWand *wand,
2978    const ImageType image_type)
2979  {
2980    assert(wand != (MagickWand *) NULL);
2981    assert(wand->signature == MagickWandSignature);
2982    if (wand->debug != MagickFalse)
2983      (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",wand->name);
2984  
2985    wand->image_info->type=image_type;
2986    return(MagickTrue);
2987  }
2988