10 #ifndef MI_MATH_COLOR_H
11 #define MI_MATH_COLOR_H
121 #if defined(DEBUG) || (defined(_MSC_VER) && _MSC_VER <= 1310)
129 Float32 v = (Traits::has_signaling_NaN)
177 template <
typename T>
208 Color_struct::operator=( c);
255 return (
r == 0.0f) && (
g == 0.0f) && (
b == 0.0f);
270 return r * 0.299f +
g * 0.587f +
b * 0.114f;
279 return r * 0.212671f +
g * 0.715160f +
b * 0.072169f;
306 return (lhs.
r == rhs.
r) && (lhs.
g == rhs.
g) && (lhs.
b == rhs.
b) && (lhs.
a == rhs.
a);
312 return (lhs.
r != rhs.
r) || (lhs.
g != rhs.
g) || (lhs.
b != rhs.
b) || (lhs.
a != rhs.
a);
321 return lhs.
r < rhs.
r;
323 return lhs.
g < rhs.
g;
325 return lhs.
b < rhs.
b;
326 return lhs.
a < rhs.
a;
334 return ! (rhs < lhs);
350 return ! (lhs < rhs);
400 return Color( lhs.
r + rhs.
r, lhs.
g + rhs.
g, lhs.
b + rhs.
b, lhs.
a + rhs.
a);
406 return Color( lhs.
r - rhs.
r, lhs.
g - rhs.
g, lhs.
b - rhs.
b, lhs.
a - rhs.
a);
412 return Color( lhs.
r * rhs.
r, lhs.
g * rhs.
g, lhs.
b * rhs.
b, lhs.
a * rhs.
a);
418 return Color( lhs.
r / rhs.
r, lhs.
g / rhs.
g, lhs.
b / rhs.
b, lhs.
a / rhs.
a);
455 return Color( c.
r * s, c.
g * s, c.
b * s, c.
a * s);
462 return Color( s * c.
r, s * c.
g, s* c.
b, s * c.
a);
469 return Color( c.
r * f, c.
g * f, c.
b * f, c.
a * f);
491 return (c.
r != 0.0f) && (c.
g != 0.0f) && (c.
b != 0.0f) && (c.
a != 0.0f);
497 return (c.
r != 0.0f) || (c.
g != 0.0f) || (c.
b != 0.0f) || (c.
a != 0.0f);
890 #ifndef MI_FOR_DOXYGEN_ONLY
894 bool desaturate)
const
901 if( col.
a < col.
r) col.
a = col.
r;
902 if( col.
a < col.
g) col.
a = col.
g;
903 if( col.
a < col.
b) col.
a = col.
b;
930 return Color( 0, 0, 0,
a);
932 return Color( maxval, maxval, maxval,
a);
943 t = (maxval - axis) / drds;
944 if( t < sat) sat = t;
948 if( t < sat) sat = t;
952 t = (maxval - axis) / dgds;
953 if( t < sat) sat = t;
957 if( t < sat) sat = t;
961 t = (maxval - axis) / dbds;
962 if( t < sat) sat = t;
966 if( t < sat) sat = t;
983 #endif // MI_FOR_DOXYGEN_ONLY
991 #endif // MI_MATH_COLOR_H