|
MagickWand
6.7.5
|
00001 /* 00002 Copyright 1999-2012 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. 00006 obtain a copy of the License at 00007 00008 http://www.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 DegreesToRadians(x) (MagickPI*(x)/180.0) 00032 #define DestroyImageStack() \ 00033 { \ 00034 while (k > 0) \ 00035 PopImageStack(); \ 00036 image_stack[k].image=DestroyImageList(image_stack[k].image); \ 00037 image_stack[k].image_info=DestroyImageInfo(image_stack[k].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 if (image_stack[k].image == (Image *) NULL) \ 00049 status&=MogrifyImageInfo(image_stack[k].image_info,(int) (i-j+1), \ 00050 (const char **) (argv+j),exception); \ 00051 else \ 00052 if ((fire) != MagickFalse) \ 00053 { \ 00054 status&=MogrifyImages(image_stack[k].image_info,postfix,(int) \ 00055 (i-j+1),(const char **) (argv+j),&image_stack[k].image, \ 00056 exception); \ 00057 image=image_stack[k].image; \ 00058 if ((advance) != MagickFalse) \ 00059 j=i+1; \ 00060 pend=MagickFalse; \ 00061 } \ 00062 } 00063 #define MaxImageStackDepth 32 00064 #define NewImageStack() \ 00065 { \ 00066 image_stack[0].image_info=CloneImageInfo(image_info); \ 00067 image_stack[0].image=NewImageList(); \ 00068 image_info=image_stack[0].image_info; \ 00069 image=image_stack[0].image; \ 00070 } 00071 #define PushImageStack() \ 00072 { \ 00073 k++; \ 00074 image_stack[k].image_info=CloneImageInfo(image_stack[k-1].image_info); \ 00075 image_stack[k].image=NewImageList(); \ 00076 image_info=image_stack[k].image_info; \ 00077 image=image_stack[k].image; \ 00078 } 00079 #define PopImageStack() \ 00080 { \ 00081 if (respect_parenthesis == MagickFalse) \ 00082 { \ 00083 image_stack[k-1].image_info=DestroyImageInfo(image_stack[k-1].image_info); \ 00084 image_stack[k-1].image_info=CloneImageInfo(image_stack[k].image_info); \ 00085 } \ 00086 image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \ 00087 AppendImageToList(&image_stack[k-1].image,image_stack[k].image); \ 00088 k--; \ 00089 image_info=image_stack[k].image_info; \ 00090 image=image_stack[k].image; \ 00091 } 00092 #define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \ 00093 (((i) & 0xfff) == 0) || \ 00094 ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1)))) 00095 #define RadiansToDegrees(x) (180.0*(x)/MagickPI) 00096 #define RemoveImageStack(images) \ 00097 { \ 00098 images=RemoveFirstImageFromList(&image_stack[k].image); \ 00099 image=image_stack[k].image; \ 00100 } 00101 #define RemoveAllImageStack() \ 00102 { \ 00103 if (image_stack[k].image != (Image *) NULL) \ 00104 image_stack[k].image=DestroyImageList(image_stack[k].image); \ 00105 } 00106 #define SetImageStack(image) \ 00107 { \ 00108 image_stack[k].image=(image); \ 00109 } 00110 00111 typedef struct _ImageStack 00112 { 00113 ImageInfo 00114 *image_info; 00115 00116 Image 00117 *image; 00118 } ImageStack; 00119 00120 #if defined(__cplusplus) || defined(c_plusplus) 00121 } 00122 #endif 00123 00124 #endif