summaryrefslogtreecommitdiff
path: root/src/generic
diff options
context:
space:
mode:
authorCedric BAIL <cedric@osg.samsung.com>2016-12-19 12:11:37 -0800
committerCedric BAIL <cedric@osg.samsung.com>2016-12-19 16:33:46 -0800
commit3751e29a9b8127a2730b1d54a1268eac0ed9be10 (patch)
treee724fca3fca8d87f43fb35a021680f31abf0195e /src/generic
parent3d0c4ac0f61e6032cf197946b3f0f6b1e4f3284f (diff)
downloadefl-3751e29a9b8127a2730b1d54a1268eac0ed9be10.tar.gz
xcf: fix float comparison in xcf generic loader.
Diffstat (limited to 'src/generic')
-rw-r--r--src/generic/evas/xcf/pixelfuncs.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/generic/evas/xcf/pixelfuncs.c b/src/generic/evas/xcf/pixelfuncs.c
index 67d66d8129..a243c79b55 100644
--- a/src/generic/evas/xcf/pixelfuncs.c
+++ b/src/generic/evas/xcf/pixelfuncs.c
@@ -20,6 +20,10 @@
#include "common.h"
+#include <float.h>
+
+#define EINA_FLT_CMP(a, b) (fabsf((float)a - (float)b) <= FLT_EPSILON)
+
#define RS R_VAL(src + s_idx)
#define GS G_VAL(src + s_idx)
#define BS B_VAL(src + s_idx)
@@ -128,7 +132,7 @@ hls_to_rgb (DATA8 *hue, DATA8 *lightness, DATA8 *saturation)
l = *lightness;
s = *saturation;
- if (s == 0)
+ if (EINA_FLT_CMP(s, 0))
{
/* achromatic case */
*hue = l;
@@ -138,9 +142,9 @@ hls_to_rgb (DATA8 *hue, DATA8 *lightness, DATA8 *saturation)
else
{
if (l < 128)
- m2 = (l * (255 + s)) / 65025.0;
+ m2 = (l * (255 + s)) / 65025.0;
else
- m2 = (l + s - (l * s) / 255.0) / 255.0;
+ m2 = (l + s - (l * s) / 255.0) / 255.0;
m1 = (l / 127.5) - m2;
@@ -184,23 +188,23 @@ rgb_to_hsv (DATA8 *red, DATA8 *green, DATA8 *blue)
else
s = 0;
- if (s == 0)
+ if (EINA_FLT_CMP(s, 0))
h = 0;
else
{
delta = max - min;
if (r == max)
- h = (g - b) / (double) delta;
+ h = (g - b) / (double) delta;
else if (g == max)
- h = 2 + (b - r) / (double) delta;
+ h = 2 + (b - r) / (double) delta;
else if (b == max)
- h = 4 + (r - g) / (double) delta;
+ h = 4 + (r - g) / (double) delta;
h *= 42.5;
if (h < 0)
- h += 255;
+ h += 255;
if (h > 255)
- h -= 255;
+ h -= 255;
}
*red = h;