コード例 #1
0
        public static Color GenerateHSLuvColor(bool back = true)
        {
            List <double> list = new List <double>();
            double        h;
            double        s;
            double        l;



            if (back)
            {
                l = rnd.NextDouble() * (90.0 - 55.5) + 55.5;
                s = rnd.NextDouble() * (67.0 - 40.0) + 40.0;
            }
            else
            {
                l = rnd.NextDouble() * (55.5 - 10.0) + 10.0;
                s = rnd.NextDouble() * (99.0 - 30.0) + 30.0;
            }

            h = rnd.NextDouble() * (359.0 - 1.0) + 1.0;
            list.Add(h);
            list.Add(s);
            list.Add(l);

            var col = HsluvConverter.HsluvToRgb(list);
            var r   = Convert.ToByte(col[0] * 255);
            var g   = Convert.ToByte(col[1] * 255);
            var b   = Convert.ToByte(col[2] * 255);


            return(Color.FromArgb(r, g, b));
        }
コード例 #2
0
        /// <summary>/// Uses the HSLuv color space (via a package) to create maximally perceptually-distinct colors for use in legends.</summary>
        private static GH_Colour GetPerceptualColorForTreeItem(double treeCount, double itemPosition)
        {
            var HsluvValues = new double[] {
                (itemPosition / treeCount * 360.0),                       // Hue, from 0-360
                100.0,                                                    // Maximimise saturation
                50.0                                                      // Halfway brightness
            };
            var RGBRaw    = HsluvConverter.HsluvToRgb(HsluvValues);       // Values are 0-1
            var RGBValues = RGBRaw.Select(value => value * 255).ToList(); // Values now 0-2
            var RGBColor  = Color.FromArgb((int)RGBValues[0], (int)RGBValues[1], (int)RGBValues[2]);

            return(new GH_Colour(RGBColor));
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var assembly     = Assembly.GetExecutingAssembly();
            var resourceName = "JsonSnapshotRev3";

            using (Stream stream = assembly.GetManifestResourceStream(resourceName))
                using (StreamReader reader = new StreamReader(stream))
                {
                    var data = Json.Deserialize(reader.ReadToEnd()) as Dictionary <string, object>;
                    foreach (KeyValuePair <string, object> pair in data)
                    {
                        var expected = pair.Value as Dictionary <string, object>;

                        // test forward functions
                        var test_rgb = HsluvConverter.HexToRgb(pair.Key);
                        AssertTuplesClose(test_rgb, Cast(expected["rgb"]));
                        var test_xyz = HsluvConverter.RgbToXyz(test_rgb);
                        AssertTuplesClose(test_xyz, Cast(expected["xyz"]));
                        var test_luv = HsluvConverter.XyzToLuv(test_xyz);
                        AssertTuplesClose(test_luv, Cast(expected["luv"]));
                        var test_lch = HsluvConverter.LuvToLch(test_luv);
                        AssertTuplesClose(test_lch, Cast(expected["lch"]));
                        var test_hsluv = HsluvConverter.LchToHsluv(test_lch);
                        AssertTuplesClose(test_hsluv, Cast(expected["hsluv"]));
                        var test_hpluv = HsluvConverter.LchToHpluv(test_lch);
                        AssertTuplesClose(test_hpluv, Cast(expected["hpluv"]));

                        // test backward functions
                        test_lch = HsluvConverter.HsluvToLch(Cast(expected["hsluv"]));
                        AssertTuplesClose(test_lch, Cast(expected["lch"]));
                        test_lch = HsluvConverter.HpluvToLch(Cast(expected["hpluv"]));
                        AssertTuplesClose(test_lch, Cast(expected["lch"]));
                        test_luv = HsluvConverter.LchToLuv(test_lch);
                        AssertTuplesClose(test_luv, Cast(expected["luv"]));
                        test_xyz = HsluvConverter.LuvToXyz(Cast(expected["luv"]));
                        AssertTuplesClose(test_xyz, Cast(expected["xyz"]));
                        test_rgb = HsluvConverter.XyzToRgb(Cast(expected["xyz"]));
                        AssertTuplesClose(test_rgb, Cast(expected["rgb"]));
                        AssertAreEqual(HsluvConverter.RgbToHex(test_rgb), pair.Key);

                        // full test
                        AssertAreEqual(HsluvConverter.HsluvToHex(Cast(expected["hsluv"])), pair.Key);
                        AssertAreEqual(HsluvConverter.HpluvToHex(Cast(expected["hpluv"])), pair.Key);
                        AssertTuplesClose(Cast(expected["hsluv"]), HsluvConverter.HexToHsluv(pair.Key));
                        AssertTuplesClose(Cast(expected["hpluv"]), HsluvConverter.HexToHpluv(pair.Key));
                    }
                }

            Console.WriteLine("Success!");
        }