X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Frasterize;a=blobdiff_plain;f=color.h;fp=color.h;h=32765e0901ac2e9902041d431fc55eded1de4aee;hp=2c5bf8040cc2ee0ff7cbd9ecf7665902a930fdb0;hb=95850b98f73ad7033af60a30e324e9c3cda55389;hpb=a0e6abd72f045a741fb1ecdd1c2d11281f2840b9 diff --git a/color.h b/color.h index 2c5bf80..32765e0 100644 --- a/color.h +++ b/color.h @@ -85,7 +85,7 @@ void color_print(color_t c) INLINE_MAYBE color_t color_add(color_t c1, color_t c2) { - return color_new(c1.r + c2.r, c1.g + c2.g, c1.b + c2.b, c1.a + c2.a); + return color_new(c1.r + c2.r, c1.g + c2.g, c1.b + c2.b, c1.a); } /* @@ -106,7 +106,6 @@ color_t color_mult(color_t c1, color_t c2) c1.r *= c2.r; c1.g *= c2.g; c1.b *= c2.b; - c1.a *= c2.a; return c1; } @@ -119,7 +118,6 @@ color_t color_scale(color_t c, scal_t k) c.r *= k; c.g *= k; c.b *= k; - c.a *= k; return c; } @@ -132,6 +130,15 @@ color_t color_scale2(color_t c1, color_t c2, scal_t k) return color_scale(color_mult(c1, c2), k); } +INLINE_MAYBE +color_t color_blend(color_t d, color_t s) +{ + d.r = (S(1.0) - s.a) * d.r + s.a * s.r; + d.g = (S(1.0) - s.a) * d.g + s.a * s.g; + d.b = (S(1.0) - s.a) * d.b + s.a * s.b; + return d; +} + /* * Clamp a color's channels to the normal range of 0.0 to 1.0. */ @@ -154,8 +161,7 @@ color_t color_interp(color_t c1, color_t c2, scal_t a) { return color_new(c1.r * (S(1.0) - a) + c2.r * a, c1.g * (S(1.0) - a) + c2.g * a, - c1.b * (S(1.0) - a) + c2.b * a, - c1.a * (S(1.0) - a) + c2.a * a); + c1.b * (S(1.0) - a) + c2.b * a, c1.a); } /* @@ -166,8 +172,7 @@ color_t color_interp2(color_t c1, color_t c2, color_t c3, scal_t b[3]) { return color_new(c1.r * b[0] + c2.r * b[1] + c3.r * b[2], c1.g * b[0] + c2.g * b[1] + c3.g * b[2], - c1.b * b[0] + c2.b * b[1] + c3.b * b[2], - S(1.0)); + c1.b * b[0] + c2.b * b[1] + c3.b * b[2], c1.a); }