I have created a small patch for API/Color.h making it possible to interpolate two colors. The patch follows:
Code:
Index: color.h
===================================================================
--- color.h	(revision 630)
+++ color.h	(working copy)
@@ -605,6 +605,23 @@
 			(((unsigned int) (green*255))<<8) |
 			((unsigned int) (blue*255));
 	}
+	
+	//:Interpolate (mix together) two colors. When amount is 0.0 the returned color == color1 and when the amount is 1.0 the returned color == color2
+	static CL_Color interpolate_colors_linear(CL_Color color1, CL_Color color2, float amount)
+	{
+		return CL_Color(
+			max((color1.get_red() 	* (1.0f-amount)) + (color2.get_red() 	* amount), 255),
+			max((color1.get_green() * (1.0f-amount)) + (color2.get_green() * amount), 255),
+			max((color1.get_blue() 	* (1.0f-amount)) + (color2.get_blue() 	* amount), 255),
+			max((color1.get_alpha() * (1.0f-amount)) + (color2.get_alpha() * amount), 255)
+		);
+	}
+	
+	//:Interpolate (mix together) with another color. When amount is 0.0 the returned color == this and when the amount is 1.0 the returned color == other
+	static CL_Color interpolate_linear(CL_Color other, float amount)
+	{
+		return CL_Color::interpolate_colors_linear(this, other, amount);
+	}
 
 	//: Converts the color to a given pixel format.
 	unsigned int to_pixelformat(const CL_PixelFormat &pf) const;
I have not tested it as it's a very small patch, and I didn't want to download and setup a whole developer env just to write this. It should work, and if it doesn't, the error should be as trivial as the patch itself, so it could be fixed at the same time as the merge.

One possible source of error might be that "max" is undefined. I just assumed we had <cmath> included inside a game engine's code.
If it's not, we could solve this with some old fasioned (boolean ? if_true : if_false).

My motivation? This is a very basic color method that could be used to do many things. Gradients for one (I know we got CL_Gradient) and when generating random textures, it's a time saver. There are many other uses, of course. It is a very basic function - and that's exactly why it should be included. It's small, easy, generic and also very usable.

The patch is based off SVN HEAD of 0.9 as of 01/08-2007.