1 #include <stdio.h>
2 #include <MagickWand/MagickWand.h>
3
4 /* Simplify the exception handling
5 * technically we should abort the program if
6 * severity >= ErrorException
7 */
ThrowWandException(MagickWand * wand)8 void ThrowWandException(MagickWand *wand)
9 { char
10 *description;
11
12 ExceptionType
13 severity;
14
15 description=MagickGetException(wand,&severity);
16 (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description);
17 description=(char *) MagickRelinquishMemory(description);
18 }
19
20 /* useful function especially after appending two wands together */
21 #define SwapWands(a,b) { MagickWand *tmp=a; a=b; b=tmp; }
22
main(int argc,char * argv[])23 int main(int argc, char *argv[])
24 {
25 MagickWand
26 *wand, /* red image wand */
27 *output;
28
29 MagickBooleanType
30 status;
31
32 printf("Read 3 sets of 3 Images, each set with settings: none, first, last\n");
33 printf("Result shoud be: 543 012 678\n");
34
35 MagickWandGenesis();
36
37 /* read in the red image */
38 wand = NewMagickWand();
39
40 /* add test from empty wand */
41 status = MagickReadImage(wand, "font_0.gif" );
42 if (status == MagickFalse)
43 ThrowWandException(wand);
44
45 status = MagickReadImage(wand, "font_1.gif" );
46 if (status == MagickFalse)
47 ThrowWandException(wand);
48
49 status = MagickReadImage(wand, "font_2.gif" );
50 if (status == MagickFalse)
51 ThrowWandException(wand);
52
53 /* add test to start */
54 MagickSetFirstIterator(wand);
55 status = MagickReadImage(wand, "font_3.gif" );
56 if (status == MagickFalse)
57 ThrowWandException(wand);
58
59 status = MagickReadImage(wand, "font_4.gif" );
60 if (status == MagickFalse)
61 ThrowWandException(wand);
62
63 status = MagickReadImage(wand, "font_5.gif" );
64 if (status == MagickFalse)
65 ThrowWandException(wand);
66
67 /* add test to end */
68 MagickSetLastIterator(wand);
69 status = MagickReadImage(wand, "font_6.gif" );
70 if (status == MagickFalse)
71 ThrowWandException(wand);
72
73 status = MagickReadImage(wand, "font_7.gif" );
74 if (status == MagickFalse)
75 ThrowWandException(wand);
76
77 status = MagickReadImage(wand, "font_8.gif" );
78 if (status == MagickFalse)
79 ThrowWandException(wand);
80
81 /* append all images together to create the output wand */
82 MagickResetIterator(wand); /* append all images */
83 output = MagickAppendImages(wand,MagickFalse);
84 wand = DestroyMagickWand(wand); /* finished - could swap here */
85
86 /* Final output */
87 status = MagickWriteImage(output,"show:");
88 if (status == MagickFalse)
89 ThrowWandException(output);
90
91 output = DestroyMagickWand(output);
92
93 MagickWandTerminus();
94 }
95
96