mogrify-private.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2020 ImageMagick Studio LLC, a non-profit organization
00003   dedicated to making software imaging solutions freely available.
00004 
00005   You may not use this file except in compliance with the License.  You may
00006   obtain a copy of the License at
00007 
00008     https://imagemagick.org/script/license.php
00009 
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   MagickWand mogrify command-line private methods.
00017 */
00018 #ifndef MAGICKWAND_MOGRIFY_PRIVATE_H
00019 #define MAGICKWAND_MOGRIFY_PRIVATE_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 #define AppendImageStack(images) \
00026 { \
00027   (void) SyncImagesSettings(image_info,images,exception); \
00028   AppendImageToList(&image_stack[k].image,images); \
00029   image=image_stack[k].image; \
00030 }
00031 #define DestroyImageStack() \
00032 { \
00033   while (k > 0) \
00034     PopImageStack(); \
00035   image_stack[k].image=DestroyImageList(image_stack[k].image); \
00036   image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
00037   image_info=image_stack[MaxImageStackDepth].image_info; \
00038 }
00039 #define FinalizeImageSettings(image_info,image,advance) \
00040 { \
00041   FireImageStack(MagickTrue,advance,MagickTrue); \
00042   if (image != (Image *) NULL) \
00043     (void) SyncImagesSettings(image_info,image,exception); \
00044 }
00045 #define FireImageStack(postfix,advance,fire) \
00046   if ((j <= i) && (i < (ssize_t) argc)) \
00047     { \
00048 DisableMSCWarning(4127) \
00049       if (image_stack[k].image == (Image *) NULL) \
00050         status&=MogrifyImageInfo(image_stack[k].image_info,(int) (i-j+1), \
00051           (const char **) (argv+j),exception); \
00052       else \
00053         if ((fire) != MagickFalse) \
00054           { \
00055             status&=MogrifyImages(image_stack[k].image_info,postfix,(int) \
00056               (i-j+1),(const char **) (argv+j),&image_stack[k].image, \
00057               exception); \
00058             image=image_stack[k].image; \
00059             if ((advance) != MagickFalse) \
00060               j=i+1; \
00061             pend=MagickFalse; \
00062           } \
00063 RestoreMSCWarning \
00064     }
00065 #define MaxImageStackDepth  128
00066 #define NewImageStack() \
00067 { \
00068   image_stack[MaxImageStackDepth].image_info=image_info; \
00069   image_stack[0].image_info=CloneImageInfo(image_info); \
00070   image_stack[0].image=NewImageList(); \
00071   image_info=image_stack[0].image_info; \
00072   image=image_stack[0].image; \
00073 }
00074 #define PushImageStack() \
00075 { \
00076   k++; \
00077   image_stack[k].image_info=CloneImageInfo(image_stack[k-1].image_info); \
00078   image_stack[k].image=NewImageList(); \
00079   image_info=image_stack[k].image_info; \
00080   image=image_stack[k].image; \
00081 }
00082 #define PopImageStack() \
00083 { \
00084   if (respect_parenthesis == MagickFalse) \
00085     { \
00086       image_stack[k-1].image_info=DestroyImageInfo(image_stack[k-1].image_info); \
00087       image_stack[k-1].image_info=CloneImageInfo(image_stack[k].image_info); \
00088     } \
00089   image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
00090   AppendImageToList(&image_stack[k-1].image,image_stack[k].image); \
00091   k--; \
00092   image_info=image_stack[k].image_info; \
00093   image=image_stack[k].image; \
00094 }
00095 #define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \
00096    (((i) & 0xfff) == 0) || \
00097    ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1))))
00098 #define RemoveImageStack(images) \
00099 { \
00100   images=RemoveFirstImageFromList(&image_stack[k].image); \
00101   image=image_stack[k].image; \
00102 }
00103 #define RemoveAllImageStack() \
00104 { \
00105   if (image_stack[k].image != (Image *) NULL) \
00106     image_stack[k].image=DestroyImageList(image_stack[k].image); \
00107 }
00108 #define SetImageStack(image) \
00109 { \
00110   image_stack[k].image=(image); \
00111 }
00112 
00113 typedef struct _ImageStack
00114 {
00115   ImageInfo
00116     *image_info;
00117 
00118   Image
00119     *image;
00120 } ImageStack;
00121 
00122 #if defined(__cplusplus) || defined(c_plusplus)
00123 }
00124 #endif
00125 
00126 #endif

Generated on 8 Jun 2020 for MagickWand by  doxygen 1.6.1