/// <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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }