X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcolor.h;h=f21a396fd827f7aa81a6bf85d06d110fbd5475fe;hb=37600b4b217caa5e316984ec0b035c5e8f9698af;hp=d3ae54d43b6f56302bb387980b011a78fac9cdf0;hpb=e9904990d49499270dfe26a9ae85178a456b30aa;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/color.h b/synfig-core/trunk/src/synfig/color.h index d3ae54d..f21a396 100644 --- a/synfig-core/trunk/src/synfig/color.h +++ b/synfig-core/trunk/src/synfig/color.h @@ -6,6 +6,7 @@ ** ** \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 @@ -44,6 +45,11 @@ /* === M A C R O S ========================================================= */ +#define use_colorspace_gamma() App::use_colorspace_gamma +#define colorspace_gamma() (2.2f) +#define gamma_in(x) ((x>=0) ? pow((float)x,1.0f/colorspace_gamma()) : -pow((float)-x,1.0f/colorspace_gamma())) +#define gamma_out(x) ((x>=0) ? pow((float)x, colorspace_gamma()) : -pow((float)-x, colorspace_gamma())) + #ifdef WIN32 #include #ifndef isnan @@ -107,10 +113,11 @@ public: private: value_type a_, r_, g_, b_; - static String hex_; public: + const String get_string(void)const; + Color & operator+=(const Color &rhs) { @@ -203,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 initialised 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) { } @@ -271,7 +282,7 @@ public: 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_); } + const String get_hex()const { return String(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); @@ -463,32 +474,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 */