summaryrefslogtreecommitdiffstats
path: root/libdimension/color.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdimension/color.c')
-rw-r--r--libdimension/color.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/libdimension/color.c b/libdimension/color.c
index 4caf53b..e2a4df9 100644
--- a/libdimension/color.c
+++ b/libdimension/color.c
@@ -19,7 +19,7 @@
*************************************************************************/
#include "dimension.h"
-#include <math.h> /* For pow() */
+#include <math.h> /* For pow(), sqrt() */
/* sRGB white point (D50) */
const dmnsn_CIE_XYZ dmnsn_whitepoint = { .X = 0.9504060171449392,
@@ -253,3 +253,17 @@ dmnsn_color_add(dmnsn_color color1, dmnsn_color color2)
return ret;
}
+
+double
+dmnsn_color_difference(dmnsn_color color1, dmnsn_color color2)
+{
+ dmnsn_CIE_Lab Lab, Lab1, Lab2;
+ dmnsn_color ret;
+
+ Lab1 = dmnsn_Lab_from_color(color1, dmnsn_whitepoint);
+ Lab2 = dmnsn_Lab_from_color(color2, dmnsn_whitepoint);
+
+ return sqrt((Lab1.L - Lab2.L)*(Lab1.L - Lab2.L)
+ + (Lab1.a - Lab2.a)*(Lab1.a - Lab2.a)
+ + (Lab1.b - Lab2.b)*(Lab1.b - Lab2.b));
+}