X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcolor.h;h=4624341159bcb42cb39ee61edc5bfa8d0d910300;hb=710af67b5341a2be2c920ce04d16e8c598fb43b7;hp=01fc720ab5a5c68eb76566ced5a86d500ec99c5f;hpb=e1225f281625a058a1fc032dde0c8908553e3192;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/color.h b/synfig-core/trunk/src/synfig/color.h index 01fc720..4624341 100644 --- a/synfig-core/trunk/src/synfig/color.h +++ b/synfig-core/trunk/src/synfig/color.h @@ -2,7 +2,7 @@ /*! \file color.h ** \brief Color Class Implementation ** -** $Id: color.h,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -32,7 +32,7 @@ #include #include #include "gamma.h" -#include +#include #ifdef USE_HALF_TYPE #include @@ -107,6 +107,7 @@ public: private: value_type a_, r_, g_, b_; + static String hex_; public: @@ -263,6 +264,18 @@ public: //! Synonym for get_a(). \see get_a() const value_type& get_alpha()const { return get_a(); } + //! Converts a 2 character hex string \a s (00-ff) into a ColorReal (0.0-1.0) + static ColorReal hex2real(String s); + + //! Converts a ColorReal \a c (0.0-1.0) into a 2 character hex string (00-ff) + static const String real2hex(ColorReal c); + + //! Returns the color as a 6 character hex sting + const String& get_hex()const { return hex_ = real2hex(r_)+real2hex(g_)+real2hex(b_); } + + //! Sets the color's R, G, and B from a 3 or 6 character hex string + void set_hex(String& hex); + //! Sets the RED component to \a x Color& set_r(const value_type& x) { r_ = x; return *this; } @@ -450,32 +463,31 @@ public: //! \writeme enum BlendMethod { - BLEND_COMPOSITE=0, //!< Color A is composited onto B (Taking into about A's alpha) - BLEND_STRAIGHT=1, //!< Straight linear interpolation from A->B (Alpha ignored) - BLEND_BRIGHTEN=2, //!< If composite is brighter than B, use composite. B otherwise. - BLEND_DARKEN=3, //!< If composite is brighter than B, use composite. B otherwise. - BLEND_ADD=4, //!< Simple A+B. - BLEND_SUBTRACT=5, //!< Simple A-B. - BLEND_MULTIPLY=6, //!< Simple A*B. - BLEND_DIVIDE=7, //!< Simple B/A - BLEND_COLOR=8, //!< Preserves the U and V channels of color A - BLEND_HUE=9, //!< Preserves the angle of the UV vector of color A - BLEND_SATURATION=10,//!< Preserves the magnitude of the UV Vector of color A - BLEND_LUMINANCE=11, //!< Preserves the Y channel of color A - BLEND_BEHIND=12, //!< Similar to BLEND_COMPOSITE, except that B is composited onto A. - BLEND_ONTO=13, //!< Similar to BLEND_COMPOSITE, except that B's alpha is maintained - BLEND_SCREEN=16, //!< \writeme - BLEND_OVERLAY=20, //!< \writeme - BLEND_DIFFERENCE=18, //!< \writeme + 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, //!< \writeme + BLEND_BEHIND=12, //!< Similar to BLEND_COMPOSITE, except that B is composited onto A. + BLEND_SCREEN=16, //!< \writeme + BLEND_OVERLAY=20, //!< \writeme BLEND_HARD_LIGHT=17, //!< \writeme - - //! Deprecated - BLEND_ALPHA_BRIGHTEN=14, //!< If A is less opaque than B, use A - BLEND_ALPHA_DARKEN=15, //!< If A is more opaque than B, use B - BLEND_ALPHA_OVER=19,//!< multiply alphas and then straight blends that using the amount - BLEND_STRAIGHT_ONTO=21,//!< \writeme - - BLEND_END=22 //!< \internal + BLEND_MULTIPLY=6, //!< Simple A*B. + BLEND_DIVIDE=7, //!< Simple B/A + BLEND_ADD=4, //!< Simple A+B. + BLEND_SUBTRACT=5, //!< Simple A-B. + BLEND_DIFFERENCE=18, //!< Simple |A-B|. + BLEND_BRIGHTEN=2, //!< If composite is brighter than B, use composite. B otherwise. + BLEND_DARKEN=3, //!< If composite is darker than B, use composite. B otherwise. + BLEND_COLOR=8, //!< Preserves the U and V channels of color A + BLEND_HUE=9, //!< Preserves the angle of the UV vector of color A + 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, //!< If A is less opaque than B, use A + BLEND_ALPHA_DARKEN=15, //!< If A is more opaque than B, use B + BLEND_ALPHA_OVER=19, //!< multiply alphas and then straight blends using the amount + + BLEND_END=22 //!< \internal }; /* Other */