public RGBA_Bytes gradient(RGBA_Bytes c, double k)
{
RGBA_Bytes ret = new RGBA_Bytes();
int ik = agg_basics.uround(k * base_scale);
ret.R_Byte = (byte)((int)(R_Byte) + ((((int)(c.R_Byte) - R_Byte) * ik) >> base_shift));
ret.G_Byte = (byte)((int)(G_Byte) + ((((int)(c.G_Byte) - G_Byte) * ik) >> base_shift));
ret.B_Byte = (byte)((int)(B_Byte) + ((((int)(c.B_Byte) - B_Byte) * ik) >> base_shift));
ret.A_Byte = (byte)((int)(A_Byte) + ((((int)(c.A_Byte) - A_Byte) * ik) >> base_shift));
return ret;
}