diff options
author | Mike Krüger <mkrueger@novell.com> | 2009-10-13 15:47:24 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@novell.com> | 2009-10-13 15:47:24 +0400 |
commit | 7a599f9c89dc3ae9b6f8ae69e59db19b88a8d0bc (patch) | |
tree | f25f9c42f584cc7d18b2e33464f961536a000172 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles | |
parent | aa1f36e34edc43eceeaaf3f9130ba17cba7b1481 (diff) |
* Makefile.am:
* MonoDevelop.Ide.csproj:
* MonoDevelop.Ide.FindInFiles/HslColor.cs:
* MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs: Moved hsl color &
brightness into the text edior. (removed brightness * 1e-3, it
correctly ranges now 0.0-1.0);
svn path=/trunk/monodevelop/; revision=144006
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/HslColor.cs | 137 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs | 26 |
2 files changed, 9 insertions, 154 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/HslColor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/HslColor.cs deleted file mode 100644 index 8164c73607..0000000000 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/HslColor.cs +++ /dev/null @@ -1,137 +0,0 @@ -// -// Hsl.cs -// -// Author: -// Mike Krüger <mkrueger@novell.com> -// -// Copyright (c) 2009 Novell, Inc (http://www.novell.com) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -using System; -using Gdk; - -namespace MonoDevelop.Ide.FindInFiles -{ - public struct HslColor - { - public double H { - get; - set; - } - - public double S { - get; - set; - } - - public double L { - get; - set; - } - - static Gdk.Color black = new Gdk.Color (0, 0, 0); - public static implicit operator Color (HslColor hsl) - { - double r = 0, g = 0, b = 0; - - if (hsl.L == 0) - return black; - - if (hsl.S == 0) { - r = g = b = hsl.L; - } else { - double temp2 = hsl.L <= 0.5 ? hsl.L * (1.0 + hsl.S) : hsl.L + hsl.S -(hsl.L * hsl.S); - double temp1 = 2.0 * hsl.L - temp2; - - double[] t3 = new double[] { hsl.H + 1.0 / 3.0, hsl.H, hsl.H - 1.0 / 3.0}; - double[] clr= new double[] { 0, 0, 0}; - for (int i = 0; i < 3; i++) { - if (t3[i] < 0) - t3[i] += 1.0; - if (t3[i] > 1) - t3[i]-=1.0; - if (6.0 * t3[i] < 1.0) - clr[i] = temp1 + (temp2 - temp1) * t3[i] * 6.0; - else if (2.0 * t3[i] < 1.0) - clr[i] = temp2; - else if (3.0 * t3[i] < 2.0) - clr[i] = (temp1 + (temp2 - temp1) * ((2.0 / 3.0) - t3[i]) * 6.0); - else - clr[i] = temp1; - } - - r = clr[0]; - g = clr[1]; - b = clr[2]; - } - return new Color ((byte)(255 * r), - (byte)(255 * g), - (byte)(255 * b)); - } - - public static implicit operator HslColor (Color color) - { - return new HslColor (color); - } - - public HslColor (Color color) : this () - { - double r = color.Red / (double)ushort.MaxValue; - double g = color.Green / (double)ushort.MaxValue; - double b = color.Blue / (double)ushort.MaxValue; - - double v = Math.Max (r, g); - v = Math.Max (v, b); - - double m = Math.Min (r, g); - m = Math.Min (m, b); - - this.L = (m + v) / 2.0; - if (this.L <= 0.0) - return; - double vm = v - m; - this.S = vm; - - if (this.S > 0.0) { - this.S /= (this.L <= 0.5) ? (v + m) : (2.0 - v - m); - } else { - return; - } - - double r2 = (v - r) / vm; - double g2 = (v - g) / vm; - double b2 = (v - b) / vm; - - if (r == v) { - this.H = (g == m ? 5.0 + b2 : 1.0 - g2); - } else if (g == v) { - this.H = (b == m ? 1.0 + r2 : 3.0 - b2); - } else { - this.H = (r == m ? 3.0 + g2 : 5.0 - r2); - } - this.H /= 6.0; - } - - public override string ToString () - { - return string.Format ("[HslColor: H={0}, S={1}, L={2}]", H, S, L); - } - } -} diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs index af7158ee38..2b591697e9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/SearchResultWidget.cs @@ -220,23 +220,15 @@ namespace MonoDevelop.Ide.FindInFiles } } - static double Brightness (Gdk.Color c) + Gdk.Color AdjustColor (Gdk.Color baseColor, Gdk.Color color) { - double r = c.Red / (double)ushort.MaxValue; - double g = c.Green / (double)ushort.MaxValue; - double b = c.Blue / (double)ushort.MaxValue; - return Math.Sqrt (r * .241 + g * .691 + b * .068) / 1000.0; - } - - Gdk.Color AdjustColor (Gdk.Color color) - { - double b1 = Brightness (color); - double b2 = Brightness (Style.Base (StateType.Normal)); + double b1 = HslColor.Brightness (color); + double b2 = HslColor.Brightness (baseColor); double delta = Math.Abs (b1 - b2); - if (delta < 1e-4) { + if (delta < 0.1) { HslColor color1 = color; color1.L -= 0.5; - if (Math.Abs (Brightness (color1) - b2) < delta) { + if (Math.Abs (HslColor.Brightness (color1) - b2) < delta) { color1 = color; color1.L += 0.5; } @@ -262,7 +254,7 @@ namespace MonoDevelop.Ide.FindInFiles Gdk.Color color = Gdk.Color.Zero; if (Gdk.Color.Parse (colorStr, ref color)) { - colorStr = SyntaxMode.ColorToPangoMarkup (AdjustColor (color)); + colorStr = SyntaxMode.ColorToPangoMarkup (AdjustColor (Style.Base (StateType.Normal), color)); } result.Append (colorStr); idx = markup.IndexOf ("foreground=\"", idx); @@ -384,10 +376,10 @@ namespace MonoDevelop.Ide.FindInFiles markup = markup.Insert (pos2, "</span>"); } Gdk.Color searchColor = style.SearchTextBg; - double b1 = Brightness (searchColor); - double b2 = Brightness (AdjustColor (style.Default.Color)); + double b1 = HslColor.Brightness (searchColor); + double b2 = HslColor.Brightness (AdjustColor (Style.Base (StateType.Normal), style.Default.Color)); double delta = Math.Abs (b1 - b2); - if (delta < 0.0001) { + if (delta < 0.1) { HslColor color1 = style.SearchTextBg; if (color1.L + 0.5 > 1.0) { color1.L -= 0.5; |