color-private.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2010 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   MagickCore image color methods.
00017 */
00018 #ifndef _MAGICKCORE_COLOR_PRIVATE_H
00019 #define _MAGICKCORE_COLOR_PRIVATE_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 #include <magick/image.h>
00026 #include <magick/color.h>
00027 #include <magick/exception-private.h>
00028 
00029 static inline MagickBooleanType IsColorEqual(const PixelPacket *p,
00030   const PixelPacket *q)
00031 {
00032   if (p->red != q->red)
00033     return(MagickFalse);
00034   if (p->green != q->green)
00035     return(MagickFalse);
00036   if (p->blue != q->blue)
00037     return(MagickFalse);
00038   if (p->opacity != q->opacity)
00039     return(MagickFalse);
00040   return(MagickTrue);
00041 }
00042 
00043 static inline IndexPacket ConstrainColormapIndex(Image *image,
00044   const unsigned long index)
00045 {
00046   if (index >= image->colors)
00047     {
00048       (void) ThrowMagickException(&image->exception,GetMagickModule(),
00049         CorruptImageError,"InvalidColormapIndex","`%s'",image->filename);
00050       return((IndexPacket) 0);
00051     }
00052   return((IndexPacket) index);
00053 }
00054 
00055 static inline MagickBooleanType IsGray(const PixelPacket *pixel)
00056 {
00057   if (pixel->red != pixel->green)
00058     return(MagickFalse);
00059   if (pixel->green != pixel->blue)
00060     return(MagickFalse);
00061   return(MagickTrue);
00062 }
00063 
00064 static inline MagickBooleanType IsMagickColorEqual(const MagickPixelPacket *p,
00065   const MagickPixelPacket *q)
00066 {
00067   if ((p->matte != MagickFalse) && (q->matte == MagickFalse) &&
00068       (p->opacity != OpaqueOpacity))
00069     return(MagickFalse);
00070   if ((q->matte != MagickFalse) && (p->matte == MagickFalse) &&
00071       (q->opacity != OpaqueOpacity))
00072     return(MagickFalse);
00073   if ((p->matte != MagickFalse) && (q->matte != MagickFalse))
00074     {
00075       if (p->opacity != q->opacity)
00076         return(MagickFalse);
00077       if (p->opacity == TransparentOpacity)
00078         return(MagickTrue);
00079     }
00080   if (p->red != q->red)
00081     return(MagickFalse);
00082   if (p->green != q->green)
00083     return(MagickFalse);
00084   if (p->blue != q->blue)
00085     return(MagickFalse);
00086   if ((p->colorspace == CMYKColorspace) && (p->index != q->index))
00087     return(MagickFalse);
00088   return(MagickTrue);
00089 }
00090 
00091 static inline MagickBooleanType IsMagickGray(const MagickPixelPacket *pixel)
00092 {
00093   if (pixel->colorspace != RGBColorspace)
00094     return(MagickFalse);
00095   if (pixel->red != pixel->green)
00096     return(MagickFalse);
00097   if (pixel->green != pixel->blue)
00098     return(MagickFalse);
00099   return(MagickTrue);
00100 }
00101 
00102 static inline MagickRealType MagickPixelIntensity(
00103   const MagickPixelPacket *pixel)
00104 {
00105   MagickRealType
00106     intensity;
00107 
00108   intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
00109   return(intensity);
00110 }
00111 
00112 static inline Quantum MagickPixelIntensityToQuantum(
00113   const MagickPixelPacket *pixel)
00114 {
00115 #if !defined(MAGICKCORE_HDRI_SUPPORT)
00116   return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue+0.5));
00117 #else
00118   return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue));
00119 #endif
00120 }
00121 
00122 static inline MagickRealType MagickPixelLuminance(
00123   const MagickPixelPacket *pixel)
00124 {
00125   MagickRealType
00126     luminance;
00127 
00128   luminance=0.21267*pixel->red+0.71516*pixel->green+0.07217*pixel->blue;
00129   return(luminance);
00130 }
00131 
00132 static inline MagickRealType PixelIntensity(const PixelPacket *pixel)
00133 {
00134   MagickRealType
00135     intensity;
00136 
00137   intensity=(MagickRealType) (0.299*pixel->red+0.587*pixel->green+0.114*
00138     pixel->blue);
00139   return(intensity);
00140 }
00141 
00142 static inline Quantum PixelIntensityToQuantum(const PixelPacket *pixel)
00143 {
00144 #if !defined(MAGICKCORE_HDRI_SUPPORT)
00145   return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue+0.5));
00146 #else
00147   return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue));
00148 #endif
00149 }
00150 
00151 #if defined(__cplusplus) || defined(c_plusplus)
00152 }
00153 #endif
00154 
00155 #endif

Generated on Sat Jan 26 14:50:29 2008 for MagickCore by  doxygen 1.5.4