public static sColorGradient GetCyanRedGradient()
        {
            sColorGradient cg = new sColorGradient();

            cg.colors.Add(new sColor(180.0, 0.4, 1.0));
            cg.colors.Add(new sColor(0.0, 0.0, 0.45));
            cg.colors.Add(new sColor(0.0, 0.6, 1.0));

            cg.parameters.Add(0.0);
            cg.parameters.Add(0.5);
            cg.parameters.Add(1.0);

            return(cg);
        }
        public static sColorGradient GetRainbowLikeGradient()
        {
            sColorGradient cg = new sColorGradient();

            cg.colors.Add(new sColor(220.0, 0.55, 1.0));
            cg.colors.Add(new sColor(185.0, 0.55, 1.0));
            cg.colors.Add(new sColor(150.0, 0.55, 1.0));
            cg.colors.Add(new sColor(0.0, 0.75, 1.0));

            cg.parameters.Add(0.0);
            cg.parameters.Add(0.25);
            cg.parameters.Add(0.75);
            cg.parameters.Add(1.0);

            return(cg);
        }
        public static sColorGradient GetCyanRedGradient(sRange dataRange, sRange threshold = null)
        {
            sColorGradient cg = new sColorGradient();


            if (dataRange.length < 0.0)
            {
                cg.colors.Add(new sColor(0.0, 0.0, 0.5));
                cg.colors.Add(new sColor(0.0, 0.0, 0.5));
                cg.colors.Add(new sColor(0.0, 0.0, 0.5));
            }
            else
            {
                cg.colors.Add(new sColor(180.0, 0.4, 1.0));
                cg.colors.Add(new sColor(0.0, 0.0, 0.5));
                cg.colors.Add(new sColor(0.0, 0.6, 1.0));
            }

            if (threshold == null)
            {
                cg.parameters.Add(0.0);
                cg.parameters.Add(0.5);
                cg.parameters.Add(1.0);
            }
            else
            {
                double midHi_param = dataRange.GetNormalizedAt(threshold.max);
                if (midHi_param < 0.505)
                {
                    midHi_param = 0.505;
                }
                double mid3         = 0.5;
                double midLow_param = (1.0 - midHi_param);

                cg.parameters.Add(midLow_param);
                cg.parameters.Add(mid3);
                cg.parameters.Add(midHi_param);
            }
            return(cg);
        }
        public static sColorGradient GetRainbowLikeGradient(sRange dataRange, sRange threshold = null)
        {
            sColorGradient cg = new sColorGradient();

            if (dataRange.length < 0.0)
            {
                cg.colors.Add(new sColor(220.0, 0.55, 1.0));
                cg.colors.Add(new sColor(220.0, 0.55, 1.0));
                cg.colors.Add(new sColor(220.0, 0.55, 1.0));
                cg.colors.Add(new sColor(220.0, 0.55, 1.0));
            }
            else
            {
                cg.colors.Add(new sColor(220.0, 0.55, 1.0));
                cg.colors.Add(new sColor(185.0, 0.55, 1.0));
                cg.colors.Add(new sColor(150.0, 0.55, 1.0));
                cg.colors.Add(new sColor(0.0, 0.75, 1.0));
            }


            if (threshold == null)
            {
                cg.parameters.Add(0.0);
                cg.parameters.Add(0.25);
                cg.parameters.Add(0.75);
                cg.parameters.Add(1.0);
            }
            else
            {
                double midHi_param  = dataRange.GetNormalizedAt(threshold.max);
                double midLow_param = (midHi_param / 3.0);
                double midMid_param = ((2 * midHi_param) / 3.0);

                cg.parameters.Add(0.0);
                cg.parameters.Add(midLow_param);
                cg.parameters.Add(midMid_param);
                cg.parameters.Add(midHi_param);
            }
            return(cg);
        }