You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
73 lines
1.8 KiB
4 months ago
|
#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,
|
||
|
*input,
|
||
|
*output;
|
||
|
|
||
|
MagickBooleanType
|
||
|
status;
|
||
|
|
||
|
printf("Check prepend when using 'FirstIterator' on empty wand\n");
|
||
|
printf("Result shoud be: 3210\n");
|
||
|
|
||
|
MagickWandGenesis();
|
||
|
|
||
|
wand = NewMagickWand();
|
||
|
|
||
|
MagickSetFirstIterator(wand); /* set first iterator 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();
|
||
|
}
|
||
|
|