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); \
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     { \
00044       InheritException(exception,&(image)->exception); \
00045       (void) SyncImagesSettings(image_info,image); \
00046     } \
00047 }
00048 #define FireImageStack(postfix,advance,fire) \
00049   if ((j <= i) && (i < (ssize_t) argc)) \
00050     { \
00051 DisableMSCWarning(4127) \
00052       if (image_stack[k].image == (Image *) NULL) \
00053         status&=MogrifyImageInfo(image_stack[k].image_info,(int) (i-j+1), \
00054           (const char **) (argv+j),exception); \
00055       else \
00056         if ((fire) != MagickFalse) \
00057           { \
00058             status&=MogrifyImages(image_stack[k].image_info,postfix,(int) \
00059               (i-j+1),(const char **) (argv+j),&image_stack[k].image, \
00060               exception); \
00061             image=image_stack[k].image; \
00062             if ((advance) != MagickFalse) \
00063               j=i+1; \
00064             pend=MagickFalse; \
00065           } \
00066 RestoreMSCWarning \
00067     }
00068 #define MaxImageStackDepth  128
00069 #define NewImageStack() \
00070 { \
00071   image_stack[MaxImageStackDepth].image_info=image_info; \
00072   image_stack[0].image_info=CloneImageInfo(image_info); \
00073   image_stack[0].image=NewImageList(); \
00074   image_info=image_stack[0].image_info; \
00075   image=image_stack[0].image; \
00076 }
00077 #define PushImageStack() \
00078 { \
00079   k++; \
00080   image_stack[k].image_info=CloneImageInfo(image_stack[k-1].image_info); \
00081   image_stack[k].image=NewImageList(); \
00082   image_info=image_stack[k].image_info; \
00083   image=image_stack[k].image; \
00084 }
00085 #define PopImageStack() \
00086 { \
00087   if (respect_parenthesis == MagickFalse) \
00088     { \
00089       image_stack[k-1].image_info=DestroyImageInfo(image_stack[k-1].image_info); \
00090       image_stack[k-1].image_info=CloneImageInfo(image_stack[k].image_info); \
00091     } \
00092   image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
00093   AppendImageToList(&image_stack[k-1].image,image_stack[k].image); \
00094   k--; \
00095   image_info=image_stack[k].image_info; \
00096   image=image_stack[k].image; \
00097 }
00098 #define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \
00099    (((i) & 0xfff) == 0) || \
00100    ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1))))
00101 #define RemoveImageStack(images) \
00102 { \
00103   images=RemoveFirstImageFromList(&image_stack[k].image); \
00104   image=image_stack[k].image; \
00105 }
00106 #define RemoveAllImageStack() \
00107 { \
00108   if (image_stack[k].image != (Image *) NULL) \
00109     image_stack[k].image=DestroyImageList(image_stack[k].image); \
00110 }
00111 #define SetImageStack(image) \
00112 { \
00113   image_stack[k].image=(image); \
00114 }
00115 
00116 typedef struct _ImageStack
00117 {
00118   ImageInfo
00119     *image_info;
00120 
00121   Image
00122     *image;
00123 } ImageStack;
00124 
00125 #if defined(__cplusplus) || defined(c_plusplus)
00126 }
00127 #endif
00128 
00129 #endif

Generated on 24 Nov 2020 for MagickWand by  doxygen 1.6.1