/// <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 int Validate(int val) { if (RangeA.Incl(val) || RangeB.Incl(val)) { return(0); } return(val); }
protected void Prepare() { var pointA = new ColorHSVPoint(HexColorA); var pointB = new ColorHSVPoint(HexColorB); RangeA.Learn(pointA.A); RangeA.Learn(pointB.A); RangeS.Learn(pointA.S); RangeS.Learn(pointB.S); RangeV.Learn(pointA.V); RangeV.Learn(pointB.V); RangeH.Learn(pointA.H); RangeH.Learn(pointB.H); BaseColor = pointA; }
public bool InRange(int i) { return(RangeA.InRange(i) || RangeB.InRange(i)); }