Avoid division by zero
[kaka/cakelight.git] / src / kaka / cakelight / Color.java
index fe010c7..5ea98cd 100644 (file)
@@ -1,6 +1,8 @@
 package kaka.cakelight;
 
 public class Color {
+    public static final Color BLACK = Color.rgb(0, 0, 0);
+
     private static int[] gammaCorrection = new int[256];
 
     public static void calculateGammaCorrection(double gamma) {
@@ -71,12 +73,16 @@ public class Color {
         s = delta / max;
 
         // Hue
-        if (r == max) {
-            h = (g - b) / delta; // between yellow & magenta
-        } else if (g == max) {
-            h = 2 + (b - r) / delta; // between cyan & yellow
+        if (delta > 0) {
+            if (r == max) {
+                h = (g - b) / delta; // between yellow & magenta
+            } else if (g == max) {
+                h = 2 + (b - r) / delta; // between cyan & yellow
+            } else {
+                h = 4 + (r - g) / delta; // between magenta & cyan
+            }
         } else {
-            h = 4 + (r - g) / delta; // between magenta & cyan
+            h = 0;
         }
 
         h /= 6.0;
@@ -106,4 +112,9 @@ public class Color {
                 (int)(b * invertedValue + other.b * value)
         );
     }
+
+    @Override
+    public String toString() {
+        return "Color{r=" + r + ", g=" + g + ", b=" + b + "}";
+    }
 }