]> granicus.if.org Git - imagemagick/blobdiff - magick/color-private.h
(no commit message)
[imagemagick] / magick / color-private.h
index e0a115882a8bfc3db20fbe60852dde1e3f84e769..93b7292bdc740b27f1e3dc041dfb0a016adf42c8 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
+  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization
   dedicated to making software imaging solutions freely available.
 
   You may not use this file except in compliance with the License.
@@ -29,14 +29,17 @@ extern "C" {
 static inline MagickBooleanType IsColorEqual(const PixelPacket *p,
   const PixelPacket *q)
 {
-  if ((p->red == q->red) && (p->green == q->green) && (p->blue == q->blue))
+  if ((GetRedPixelComponent(p) == GetRedPixelComponent(q)) &&
+      (GetGreenPixelComponent(p) == GetGreenPixelComponent(q)) &&
+      (GetBluePixelComponent(p) == GetBluePixelComponent(q)))
     return(MagickTrue);
   return(MagickFalse);
 }
 
 static inline MagickBooleanType IsGray(const PixelPacket *pixel)
 {
-  if ((pixel->red == pixel->green) && (pixel->green == pixel->blue))
+  if ((GetRedPixelComponent(pixel) == GetGreenPixelComponent(pixel)) &&
+      (GetGreenPixelComponent(pixel) == GetBluePixelComponent(pixel)))
     return(MagickTrue);
   return(MagickFalse);
 }
@@ -104,11 +107,7 @@ static inline MagickBooleanType IsMagickGray(const MagickPixelPacket *pixel)
 static inline MagickRealType MagickPixelIntensity(
   const MagickPixelPacket *pixel)
 {
-  MagickRealType
-    intensity;
-
-  intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
-  return(intensity);
+  return((MagickRealType) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue));
 }
 
 static inline Quantum MagickPixelIntensityToQuantum(
@@ -136,24 +135,35 @@ static inline MagickRealType PixelIntensity(const PixelPacket *pixel)
   MagickRealType
     intensity;
 
-  if ((pixel->red == pixel->green) && (pixel->green == pixel->blue))
+  if ((GetRedPixelComponent(pixel) == GetGreenPixelComponent(pixel)) &&
+      (GetGreenPixelComponent(pixel) == GetBluePixelComponent(pixel)))
     return((MagickRealType) pixel->red);
-  intensity=(MagickRealType) (0.299*pixel->red+0.587*pixel->green+0.114*
-    pixel->blue);
+  intensity=(MagickRealType) (0.299*GetRedPixelComponent(pixel)+0.587*
+    GetGreenPixelComponent(pixel)+0.114*GetBluePixelComponent(pixel));
   return(intensity);
 }
 
 static inline Quantum PixelIntensityToQuantum(const PixelPacket *pixel)
 {
 #if !defined(MAGICKCORE_HDRI_SUPPORT)
-  if ((pixel->red == pixel->green) && (pixel->green == pixel->blue))
-    return(pixel->red);
-  return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue+0.5));
+  if ((GetRedPixelComponent(pixel) == GetGreenPixelComponent(pixel)) &&
+      (GetGreenPixelComponent(pixel) == GetBluePixelComponent(pixel)))
+    return(GetRedPixelComponent(pixel));
+  return((Quantum) (0.299*GetRedPixelComponent(pixel)+0.587*
+    GetGreenPixelComponent(pixel)+0.114*GetBluePixelComponent(pixel)+0.5));
 #else
-  if ((fabs(pixel->red-pixel->green) <= MagickEpsilon) &&
-      (fabs(pixel->green-pixel->blue) <= MagickEpsilon))
-    return((Quantum) pixel->red);
-  return((Quantum) (0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue));
+  {
+    double
+      alpha,
+      beta;
+
+    alpha=GetRedPixelComponent(pixel)-GetGreenPixelComponent(pixel);
+    beta=GetGreenPixelComponent(pixel)-GetBluePixelComponent(pixel);
+    if ((fabs(alpha) <= MagickEpsilon) && (fabs(beta) <= MagickEpsilon))
+      return(GetRedPixelComponent(pixel));
+    return((Quantum) (0.299*GetRedPixelComponent(pixel)+0.587*
+      GetGreenPixelComponent(pixel)+0.114*GetBluePixelComponent(pixel)));
+  }
 #endif
 }