]> O.S.I.I.S - jp/crow.git/commitdiff
Use Dictionary to store color names
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 1 Nov 2017 10:30:21 +0000 (11:30 +0100)
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 1 Nov 2017 10:30:21 +0000 (11:30 +0100)
Tests/BasicTests.cs
Tests/Showcase.cs
src/Colors.cs

index 9340fe8810af2af9786ec1ffae71039dd06e68b5..8d0a802621bababd2d7f5b5994a0122039013ac4 100644 (file)
@@ -98,7 +98,7 @@ namespace Tests
                        }
                        get { return List2; }
                }
-               IList<Color> testList = Color.ColorDic.ToList();
+               IList<Color> testList = Color.ColorDic.Values.ToList();
                public IList<Color> TestList {
                        set{
                                testList = value;
@@ -131,7 +131,7 @@ namespace Tests
 
                void OnClear (object sender, MouseButtonEventArgs e) => TestList = null;
 
-               void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.ToList();
+               void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.Values.ToList();
 
                protected override void OnLoad (EventArgs e)
                {
index 0d68d3836dc1429195761eef4d97a2b08b622a4f..2639b0f70bce3716e7d419dd35c5cd7a7ae59275 100644 (file)
@@ -160,7 +160,7 @@ namespace Tests
                        }
                        get { return List2; }
                }
-               IList<Color> testList = Color.ColorDic.ToList();
+               IList<Color> testList = Color.ColorDic.Values.ToList();
                public IList<Color> TestList {
                        set{
                                testList = value;
@@ -193,7 +193,7 @@ namespace Tests
 
                void OnClear (object sender, MouseButtonEventArgs e) => TestList = null;
 
-               void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.ToList();
+               void OnLoadList (object sender, MouseButtonEventArgs e) => TestList = Color.ColorDic.Values.ToList();
 
        }
 
index 3f200829a038bae9b04bed9cf5bd60f98f8f82a0..7317516dc79f849070c91587c436223597ba8e0a 100644 (file)
@@ -59,11 +59,11 @@ namespace Crow
                        G = _G;
                        B = _B;
                        Name = _name;
-                       ColorDic.Add(this);
+                       ColorDic.Add(_name,this);
                }
                #endregion
 
-               public static List<Color> ColorDic = new List<Color>();
+               public static Dictionary<string, Color> ColorDic = new Dictionary<string, Color>();
 
                internal string Name;
 
@@ -88,11 +88,9 @@ namespace Crow
 
                        if (c.Length == 1)
                        {
-                               foreach (Color cr in ColorDic)
-                               {
-                                       if (string.Equals(cr.Name,s,StringComparison.Ordinal))
-                                               return cr;
-                               }
+                               if (ColorDic.ContainsKey (s))
+                                       return ColorDic[s];
+                               throw new Exception ("Unknown color name: " + s);
                        }
                        return new Color(
                                double.Parse(c[0]),
@@ -1126,15 +1124,9 @@ namespace Crow
                {
                        if (!string.IsNullOrEmpty(Name))
                                return Name;
-
-                       foreach (Color cr in ColorDic)
-                       {
-                               if (cr == this)
-                               {
-                                       Name = cr.Name;
-                                       return cr.Name;
-                               }
-                       }
+                       Color tc = this;
+                       if (ColorDic.ContainsValue (this))
+                               return ColorDic.FirstOrDefault (c => c.Value == tc).Key;
 
                        return string.Format("{0},{1},{2},{3}", R, G, B, A);
                }