| #include <stdio.h> |
| #include <MagickWand/MagickWand.h> |
| |
| /* Simplify the exception handling |
| * technically we should abort the program if |
| * severity >= ErrorException |
| */ |
| void ThrowWandException(MagickWand *wand) |
| { char |
| *description; |
| |
| ExceptionType |
| severity; |
| |
| description=MagickGetException(wand,&severity); |
| (void) fprintf(stderr,"%s %s %lu %s\n",GetMagickModule(),description); |
| description=(char *) MagickRelinquishMemory(description); |
| } |
| |
| /* useful function especially after appending two wands together */ |
| #define SwapWands(a,b) { MagickWand *tmp=a; a=b; b=tmp; } |
| |
| int main(int argc, char *argv[]) |
| { |
| MagickWand |
| *wand, |
| *output; |
| |
| MagickBooleanType |
| status; |
| |
| printf("Check append when using 'LastIterator' on empty wand\n"); |
| printf("Result shoud be: 0123\n"); |
| |
| MagickWandGenesis(); |
| |
| wand = NewMagickWand(); |
| |
| MagickSetLastIterator(wand); /* to empty wand */ |
| |
| status = MagickReadImage(wand, "font_0.gif" ); |
| if (status == MagickFalse) |
| ThrowWandException(wand); |
| |
| status = MagickReadImage(wand, "font_1.gif" ); |
| if (status == MagickFalse) |
| ThrowWandException(wand); |
| |
| status = MagickReadImage(wand, "font_2.gif" ); |
| if (status == MagickFalse) |
| ThrowWandException(wand); |
| |
| status = MagickReadImage(wand, "font_3.gif" ); |
| if (status == MagickFalse) |
| ThrowWandException(wand); |
| |
| /* append all images together to create the output wand */ |
| MagickResetIterator(wand); /* append all images */ |
| output = MagickAppendImages(wand,MagickFalse); |
| wand = DestroyMagickWand(wand); /* finished - could swap here */ |
| |
| /* Final output */ |
| status = MagickWriteImage(output,"show:"); |
| if (status == MagickFalse) |
| ThrowWandException(output); |
| |
| output = DestroyMagickWand(output); |
| |
| MagickWandTerminus(); |
| } |
| |