/*
- * Add two colors together. Color may need to be clamped afterward.
+ * Add two colors together.
*/
INLINE_MAYBE
color_t color_add(color_t c1, color_t c2)
}
/*
- * Add three colors together. Color may need to be clamped afterward.
+ * Add three colors together.
*/
INLINE_MAYBE
color_t color_add2(color_t c1, color_t c2, color_t c3)
return color_add(color_add(c1, c2), c3);
}
+/*
+ * Multiply two colors together.
+ */
+INLINE_MAYBE
+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;
+}
+
+/*
+ * Scale a color by some scalar coefficient.
+ */
+INLINE_MAYBE
+color_t color_scale(color_t c, scal_t k)
+{
+ c.r *= k;
+ c.g *= k;
+ c.b *= k;
+ c.a *= k;
+ return c;
+}
+
+/*
+ * Scale a color by another color and some scalar coefficient.
+ */
+INLINE_MAYBE
+color_t color_scale2(color_t c1, color_t c2, scal_t k)
+{
+ return color_scale(color_mult(c1, c2), k);
+}
+
/*
* Clamp a color's channels to the normal range of 0.0 to 1.0.
*/