/// <summary> /// Gets a color for given 0 to 1 ratio (i.e. position in range) /// </summary> /// <param name="ratio">The ratio - position in range from 0 to 1.</param> /// <returns></returns> public ColorHSVPoint GetHSVColor(Double ratio) { if (!IsReady) { Prepare(); } ColorHSVPoint output = BaseColor.Clone(); if (gradient.HasFlag(ColorGradientFunction.Hue)) { output.H = Convert.ToInt32(RangeH.GetValueForRangePosition(ratio)); } if (gradient.HasFlag(ColorGradientFunction.Value)) { output.V = Convert.ToSingle(RangeV.GetValueForRangePosition(ratio)); } if (gradient.HasFlag(ColorGradientFunction.Saturation)) { output.S = Convert.ToSingle(RangeS.GetValueForRangePosition(ratio)); // output.S + r.S; } if (gradient.HasFlag(ColorGradientFunction.Alpha)) { output.A = Convert.ToSingle(RangeA.GetValueForRangePosition(ratio)); } output.DeployValues(); return(output); }
public static ColorHSVPoint operator -(ColorHSVPoint a, ColorHSVPoint b) { ColorHSVPoint output = new ColorHSVPoint(); output.H = a.H - b.H; output.S -= a.S; output.V -= a.V; output.A -= a.A; output.DeployValues(); return(output); }
public static ColorHSVPoint operator +(ColorHSVPoint a, ColorHSVPoint b) { ColorHSVPoint output = new ColorHSVPoint(); output.H = (a.H + b.H); output.S += a.S; output.V += a.V; output.A += a.A; output.DeployValues(); return(output); }
public static ColorHSVPoint operator *(ColorHSVPoint a, Double b) { ColorHSVPoint output = new ColorHSVPoint(); output.H = Convert.ToInt32(a.H * b); // % 360; output.S = a.S * (float)b; output.V = a.V * (float)b; output.A = a.A * (float)b; output.DeployValues(); return(output); }