public static RGBAW GetRGBAW(Color inp)
{
var result = new RGBAW();
result.W = (byte)(Math.Min(Math.Min(inp.R, inp.G), inp.B));
int amber = inp.R - result.W;
int a2 = (inp.G - result.W) * 2;
if (amber > a2)
result.A = (byte)a2;
else
result.A = (byte)amber;
result.R = (byte)(inp.R - result.W - result.A);
result.G = (byte)(inp.G - result.W - (result.A / 2));
result.B = (byte)(inp.B - result.W);
return result;
}