diff options
Diffstat (limited to 'libdimension/color.c')
-rw-r--r-- | libdimension/color.c | 16 |
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)); +} |