Added copyright lines for files I've edited this year.
[synfig.git] / synfig-core / trunk / src / synfig / color.h
index ad6a81c..d54b0e9 100644 (file)
@@ -6,6 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007, 2008 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -209,7 +210,11 @@ public:
        }
 
 public:
-       Color() /*:r_(0), g_(0), b_(0), a_(0)*/ { }
+       // ETL/trunk/ETL/_gaussian.h does:
+       //   SR1=SR2=SR3=typename T::value_type();
+       // and expects that to give it initialized colors
+       // Otherwise the 'gaussian' blur type is random.
+       Color() :a_(0), r_(0), g_(0), b_(0) { }
        Color(const value_type &f) :a_(f),r_(f), g_(f), b_(f) { }
        Color(int f) :a_(f),r_(f), g_(f), b_(f) { }
 
@@ -472,7 +477,7 @@ public:
                BLEND_COMPOSITE=0,                      //!< Color A is composited onto B (Taking A's alpha into account)
                BLEND_STRAIGHT=1,                       //!< Straight linear interpolation from A->B (Alpha ignored)
                BLEND_ONTO=13,                          //!< Similar to BLEND_COMPOSITE, except that B's alpha is maintained
-               BLEND_STRAIGHT_ONTO=21,         //!< <deprecated> \writeme
+               BLEND_STRAIGHT_ONTO=21,         //!< \deprecated \writeme
                BLEND_BEHIND=12,                        //!< Similar to BLEND_COMPOSITE, except that B is composited onto A.
                BLEND_SCREEN=16,                        //!< \writeme
                BLEND_OVERLAY=20,                       //!< \writeme
@@ -489,9 +494,9 @@ public:
                BLEND_SATURATION=10,            //!< Preserves the magnitude of the UV Vector of color A
                BLEND_LUMINANCE=11,                     //!< Preserves the Y channel of color A
 
-               BLEND_ALPHA_BRIGHTEN=14,        //!< <deprecated> If A is less opaque than B, use A
-               BLEND_ALPHA_DARKEN=15,          //!< <deprecated> If A is more opaque than B, use B
-               BLEND_ALPHA_OVER=19,            //!< <deprecated> multiply alphas and then straight blends using the amount
+               BLEND_ALPHA_BRIGHTEN=14,        //!< \deprecated If A is less opaque than B, use A
+               BLEND_ALPHA_DARKEN=15,          //!< \deprecated If A is more opaque than B, use B
+               BLEND_ALPHA_OVER=19,            //!< \deprecated multiply alphas and then straight blends using the amount
 
                BLEND_END=22                            //!< \internal
        };
@@ -519,6 +524,15 @@ public:
                        || x==BLEND_HARD_LIGHT
                ;
        }
+
+       //! a blending method is considered 'straight' if transparent pixels in the upper layer can affect the result of the blend
+       static bool is_straight(BlendMethod x)
+       {
+               return x==BLEND_STRAIGHT
+                       || x==BLEND_STRAIGHT_ONTO
+                       || x==BLEND_ALPHA_BRIGHTEN
+               ;
+       }
 /*protected:
 
        value_type& operator[](const int i)
@@ -707,7 +721,7 @@ enum PixelFormat
 ** 3   Endian (BGR/RGB)
 ** 4   Alpha Location (Start/End)
 ** 5   ZDepth Location (Start/End)
-** 6   Alpha/ZDepth Arangement (ZA,AZ)
+** 6   Alpha/ZDepth Arrangement (ZA,AZ)
 ** 7   Alpha Range (Inverted,Normal)
 ** 8   Z Range (Inverted,Normal)
 */
@@ -718,11 +732,11 @@ enum PixelFormat
        PF_BGR=(1<<3),                  //!< If set, reverse the order of the RGB channels
        PF_A_START=(1<<4),              //!< If set, alpha channel is before the color data. If clear, it is after.
        PF_Z_START=(1<<5),              //!< If set, ZDepth channel is before the color data. If clear, it is after.
-       PF_ZA=(1<<6),                   //!< If set, the ZDepth channel will be infront of the alpha channel. If clear, they are reversed.
+       PF_ZA=(1<<6),                   //!< If set, the ZDepth channel will be in front of the alpha channel. If clear, they are reversed.
 
        PF_A_INV=(1<<7),                //!< If set, the alpha channel is stored as 1.0-a
        PF_Z_INV=(1<<8),                //!< If set, the ZDepth channel is stored as 1.0-z
-       PF_RAW_COLOR=(1<<9)+(1<<1)      //!< If set, the data represents a raw Color datastructure, and all other bits are ignored.
+       PF_RAW_COLOR=(1<<9)+(1<<1)      //!< If set, the data represents a raw Color data structure, and all other bits are ignored.
 };
 
 inline PixelFormat operator|(PixelFormat lhs, PixelFormat rhs)