mogrify-private.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2009 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); \
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   ResetImageOptions(image_info); \
00042   FireImageStack(MagickTrue,advance,MagickTrue); \
00043   if (image != (Image *) NULL) \
00044     { \
00045       InheritException(exception,&(image)->exception); \
00046       (void) SyncImagesSettings(image_info,image); \
00047     } \
00048 }
00049 #define FireImageStack(postfix,advance,fire) \
00050   if ((j <= i) && (i < argc)) \
00051     { \
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     }
00067 #define MagickPI  3.14159265358979323846264338327950288419716939937510
00068 #define MaxImageStackDepth  32
00069 #define NewImageStack() \
00070 { \
00071   image_stack[0].image_info=CloneImageInfo(image_info); \
00072   image_stack[0].image=NewImageList(); \
00073   image_info=image_stack[0].image_info; \
00074   image=image_stack[0].image; \
00075 }
00076 #define PushImageStack() \
00077 { \
00078   k++; \
00079   image_stack[k].image_info=CloneImageInfo(image_stack[k-1].image_info); \
00080   image_stack[k].image=NewImageList(); \
00081   image_info=image_stack[k].image_info; \
00082   image=image_stack[k].image; \
00083 }
00084 #define PopImageStack() \
00085 { \
00086   if (respect_parenthesis == MagickFalse) \
00087     { \
00088       image_stack[k-1].image_info=DestroyImageInfo(image_stack[k-1].image_info); \
00089       image_stack[k-1].image_info=CloneImageInfo(image_stack[k].image_info); \
00090     } \
00091   image_stack[k].image_info=DestroyImageInfo(image_stack[k].image_info); \
00092   AppendImageToList(&image_stack[k-1].image,image_stack[k].image); \
00093   k--; \
00094   image_info=image_stack[k].image_info; \
00095   image=image_stack[k].image; \
00096 }
00097 #define QuantumScale  ((MagickRealType) 1.0/(MagickRealType) QuantumRange)
00098 #define QuantumTick(i,span) ((MagickBooleanType) ((((i) & ((i)-1)) == 0) || \
00099    (((i) & 0xfff) == 0) || \
00100    ((MagickOffsetType) (i) == ((MagickOffsetType) (span)-1))))
00101 #define RadiansToDegrees(x) (180.0*(x)/MagickPI)
00102 #define RemoveImageStack(images) \
00103 { \
00104   images=RemoveFirstImageFromList(&image_stack[k].image); \
00105   image=image_stack[k].image; \
00106 }
00107 #define RemoveAllImageStack() \
00108 { \
00109   if (image_stack[k].image != (Image *) NULL) \
00110     image_stack[k].image=DestroyImageList(image_stack[k].image); \
00111 }
00112 #define SetImageStack(image) \
00113 { \
00114   image_stack[k].image=(image); \
00115 }
00116 
00117 typedef struct _ImageStack
00118 {
00119   ImageInfo
00120     *image_info;
00121 
00122   Image
00123     *image;
00124 } ImageStack;
00125 
00126 static MagickBooleanType
00127   respect_parenthesis = MagickFalse;
00128 
00129 static inline MagickRealType MagickPixelIntensity(
00130   const MagickPixelPacket *pixel)
00131 {
00132   MagickRealType
00133     intensity;
00134 
00135   intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
00136   return(intensity);
00137 }
00138 
00139 static inline Quantum MagickPixelIntensityToQuantum(
00140   const MagickPixelPacket *pixel)
00141 {
00142   MagickRealType
00143     intensity;
00144 
00145   intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
00146   return((Quantum) (intensity+0.5));
00147 }
00148 
00149 static inline MagickRealType PixelIntensity(const PixelPacket *pixel)
00150 {
00151   MagickRealType
00152     intensity;
00153 
00154   intensity=(MagickRealType) (0.299*pixel->red+0.587*pixel->green+
00155     0.114*pixel->blue);
00156   return(intensity);
00157 }
00158 
00159 static inline Quantum PixelIntensityToQuantum(const PixelPacket *pixel)
00160 {
00161   MagickRealType
00162     intensity;
00163 
00164   intensity=(MagickRealType) (0.299*pixel->red+0.587*pixel->green+
00165     0.114*pixel->blue);
00166 #if !defined(MAGICKCORE_HDRI_SUPPORT)
00167   return((Quantum) (intensity+0.5));
00168 #else
00169   return((Quantum) intensity);
00170 #endif
00171 }
00172 
00173 static inline void SetMagickPixelPacket(const Image *image,
00174   const PixelPacket *color,const IndexPacket *index,MagickPixelPacket *pixel)
00175 {
00176   pixel->red=(MagickRealType) color->red;
00177   pixel->green=(MagickRealType) color->green;
00178   pixel->blue=(MagickRealType) color->blue;
00179   if (image->matte != MagickFalse)
00180     pixel->opacity=(MagickRealType) color->opacity;
00181   if (((image->colorspace == CMYKColorspace) ||
00182        (image->storage_class == PseudoClass)) &&
00183       (index != (const IndexPacket *) NULL))
00184     pixel->index=(MagickRealType) *index;
00185 }
00186 
00187 #if defined(__cplusplus) || defined(c_plusplus)
00188 }
00189 #endif
00190 
00191 #endif

Generated on 19 Nov 2009 for MagickWand by  doxygen 1.6.1