**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 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
public:
// ETL/trunk/ETL/_gaussian.h does:
// SR1=SR2=SR3=typename T::value_type();
- // and expects that to give it initialised colors
+ // and expects that to give it initialized colors
// Otherwise the 'gaussian' blur type is random.
- Color() :r_(0), g_(0), b_(0), a_(0) { }
+ 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) { }
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
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
};
|| 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)
** 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)
*/
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)