18#ifndef MAGICKWAND_MOGRIFY_PRIVATE_H
19#define MAGICKWAND_MOGRIFY_PRIVATE_H
21#if defined(__cplusplus) || defined(c_plusplus)
25#define AppendImageStack(images) \
27 (void) SyncImagesSettings(image_info,images); \
28 AppendImageToList(&image_stack[k].image,images); \
29 image=image_stack[k].image; \
31#define DestroyImageStack() \
35 image_stack[k].image=DestroyImageList(image_stack[k].image); \
36 image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
37 image_info=image_stack[MaxImageStackDepth].image_info; \
39#define FinalizeImageSettings(image_info,image,advance) \
41 FireImageStack(MagickTrue,advance,MagickTrue); \
42 if (image != (Image *) NULL) \
44 InheritException(exception,&(image)->exception); \
45 (void) SyncImagesSettings(image_info,image); \
48#define FireImageStack(postfix,advance,fire) \
49 if ((j <= i) && (i < (ssize_t) argc)) \
51DisableMSCWarning(4127) \
52 if (image_stack[k].image == (Image *) NULL) \
53 status&=MogrifyImageInfo(image_stack[k].image_info,(int) (i-j+1), \
54 (const char **) (argv+j),exception); \
56 if ((fire) != MagickFalse) \
58 status&=MogrifyImages(image_stack[k].image_info,postfix,(int) \
59 (i-j+1),(const char **) (argv+j),&image_stack[k].image, \
61 image=image_stack[k].image; \
62 if ((advance) != MagickFalse) \
68#define MaxImageStackDepth 128
69#define NewImageStack() \
71 image_stack[MaxImageStackDepth].image_info=image_info; \
72 image_stack[0].image_info=CloneImageInfo(image_info); \
73 image_stack[0].image=NewImageList(); \
74 image_info=image_stack[0].image_info; \
75 image=image_stack[0].image; \
77#define PushImageStack() \
80 image_stack[k].image_info=CloneImageInfo(image_stack[k-1].image_info); \
81 image_stack[k].image=NewImageList(); \
82 image_info=image_stack[k].image_info; \
83 image=image_stack[k].image; \
85#define PopImageStack() \
87 if (respect_parenthesis == MagickFalse) \
89 image_stack[k-1].image_info=DestroyImageInfo(image_stack[k-1].image_info); \
90 image_stack[k-1].image_info=CloneImageInfo(image_stack[k].image_info); \
92 image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
93 AppendImageToList(&image_stack[k-1].image,image_stack[k].image); \
95 image_info=image_stack[k].image_info; \
96 image=image_stack[k].image; \
98#define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \
99 (((i) & 0xfff) == 0) || \
100 ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1))))
101#define RemoveImageStack(images) \
103 images=RemoveFirstImageFromList(&image_stack[k].image); \
104 image=image_stack[k].image; \
106#define RemoveAllImageStack() \
108 if (image_stack[k].image != (Image *) NULL) \
109 image_stack[k].image=DestroyImageList(image_stack[k].image); \
111#define SetImageStack(image) \
113 image_stack[k].image=(image); \
125#if defined(__cplusplus) || defined(c_plusplus)
struct _ImageStack ImageStack
Definition: mogrify-private.h:117
Image * image
Definition: mogrify-private.h:122
ImageInfo * image_info
Definition: mogrify-private.h:119