[gegl] opacity: use inlinable fabsf
- From: Øyvind "pippin" Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] opacity: use inlinable fabsf
- Date: Wed, 13 May 2020 01:13:47 +0000 (UTC)
commit 2a734c1750199742a3dac02d7593e74e4bd995f8
Author: Øyvind Kolås <pippin gimp org>
Date: Wed May 13 03:12:48 2020 +0200
opacity: use inlinable fabsf
operations/common/opacity.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
---
diff --git a/operations/common/opacity.c b/operations/common/opacity.c
index c89e6c491..d8a5c6acf 100644
--- a/operations/common/opacity.c
+++ b/operations/common/opacity.c
@@ -55,6 +55,13 @@ prepare (GeglOperation *self)
return;
}
+static inline gfloat int_fabsf (const gfloat x)
+{
+ union {gfloat f; guint32 i;} u = {x};
+ u.i &= 0x7fffffff;
+ return u.f;
+}
+
static void
process_premultiplied_float (GeglOperation *op,
void *in_buf,
@@ -81,7 +88,7 @@ process_premultiplied_float (GeglOperation *op,
out += components;
}
}
- else if (fabsf (value - 1.0f) <= EPSILON)
+ else if (int_fabsf (value - 1.0f) <= EPSILON)
while (samples--)
{
gint j;
@@ -132,7 +139,7 @@ process_with_alpha_float (GeglOperation *op,
out += components;
}
}
- else if (fabsf (value - 1.0f) <= EPSILON)
+ else if (int_fabsf (value - 1.0f) <= EPSILON)
while (samples--)
{
gint j;
@@ -247,7 +254,7 @@ static gboolean operation_process (GeglOperation *operation,
in = gegl_operation_context_get_object (context, "input");
aux = gegl_operation_context_get_object (context, "aux");
- if (in && !aux && fabsf (value - 1.0f) <= EPSILON)
+ if (in && !aux && int_fabsf (value - 1.0f) <= EPSILON)
{
gegl_operation_context_take_object (context, "output",
g_object_ref (G_OBJECT (in)));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]