add new comparison method rgb_difference that resembles arithmetical difference per...
[imager.git] / color.c
diff --git a/color.c b/color.c
index ab33bfc..634a6c8 100644 (file)
--- a/color.c
+++ b/color.c
@@ -1,4 +1,4 @@
-#include "image.h"
+#include "imager.h"
 #include <math.h>
 
 /*
@@ -16,6 +16,9 @@ color.c - color manipulation functions
 
 A collection of utility functions for converting between color spaces.
 
+=over
+
+=cut
 */
 
 #define EPSILON (1e-8)
@@ -33,7 +36,7 @@ Each value is scaled into the range 0 to 1.0.
 =cut
 */
 void i_rgb_to_hsvf(i_fcolor *color) {
-  double h, s, v;
+  double h = 0, s, v;
   double temp;
   double Cr, Cg, Cb;
 
@@ -74,7 +77,7 @@ Each value is scaled into the range 0 to 255.
 =cut
 */
 void i_rgb_to_hsv(i_color *color) {
-  double h, s, v;
+  double h = 0, s, v;
   double temp;
   double Cr, Cg, Cb;
 
@@ -173,13 +176,14 @@ void i_hsv_to_rgb(i_color *color) {
   }
   else {
     int i;
-    double f, m, n, k;
+    double f;
+    int m, n, k;
     h = h / 255.0 * 6;
     i = h;
     f = h - i;
-    m = v * (255 - s) / 255;
-    n = v * (255 - s * f) / 255;
-    k = v * (255 - s * (1 - f)) / 255;
+    m = 0.5 + v * (255 - s) / 255;
+    n = 0.5 + v * (255 - s * f) / 255;
+    k = 0.5 + v * (255 - s * (1 - f)) / 255;
     switch (i) {
     case 0:
       color->rgb.r = v; color->rgb.g = k; color->rgb.b = m;