From f9dfd7811c5fa1f819ed2959ae596b651ed79ab3 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald <daniel@danielgrunwald.de> Date: Sat, 20 Aug 2011 22:39:36 +0200 Subject: [PATCH] Fix RGB <-> HSV conversion. --- .../ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs index 6df1e66c4d..a78e86adc7 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Widgets/Project/ColorHelper.cs @@ -61,6 +61,8 @@ namespace ICSharpCode.SharpDevelop.Widgets else { h = 60 * (r - g) / (max - min) + 240; } + + if (h < 0) h += 360; // C# '%' can return negative values, use real modulus instead if (max == 0) { s = 0; @@ -76,6 +78,7 @@ namespace ICSharpCode.SharpDevelop.Widgets public static void RgbFromHsv(double h, double s, double v, out double r, out double g, out double b) { h = h % 360; + if (h < 0) h += 360; // C# '%' can return negative values, use real modulus instead int hi = (int)(h / 60) % 6; var f = h / 60 - (int)(h / 60); var p = v * (1 - s);