[gimp] app: clamp blended results for some compositing ops
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: clamp blended results for some compositing ops
- Date: Wed, 14 Oct 2015 22:25:54 +0000 (UTC)
commit 23f118632c76dc720489f68dba2e0b90f9ec1388
Author: Øyvind Kolås <pippin gimp org>
Date: Thu Oct 15 00:22:53 2015 +0200
app: clamp blended results for some compositing ops
Quite probably we shouldn't even clamp at the end, not doing that would speed
up compositing. See bug 744265.
app/operations/gimpoperationburnmode.c | 2 +-
app/operations/gimpoperationdividemode.c | 2 +-
app/operations/gimpoperationgrainextractmode.c | 2 +-
app/operations/gimpoperationgrainmergemode.c | 2 +-
app/operations/gimpoperationmultiplymode.c | 3 +--
app/operations/gimpoperationsubtractmode.c | 3 +--
6 files changed, 6 insertions(+), 8 deletions(-)
---
diff --git a/app/operations/gimpoperationburnmode.c b/app/operations/gimpoperationburnmode.c
index 4cebfdf..e3bcab5 100644
--- a/app/operations/gimpoperationburnmode.c
+++ b/app/operations/gimpoperationburnmode.c
@@ -109,9 +109,9 @@ gimp_operation_burn_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = (1.0 - in[b]) / layer[b];
- comp = CLAMP (1.0 - comp, 0.0, 1.0);
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP (1.0 - out[b], 0.0, 1.0);
}
}
else
diff --git a/app/operations/gimpoperationdividemode.c b/app/operations/gimpoperationdividemode.c
index 70dbf64..5f93d30 100644
--- a/app/operations/gimpoperationdividemode.c
+++ b/app/operations/gimpoperationdividemode.c
@@ -109,9 +109,9 @@ gimp_operation_divide_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = (4294967296.0 / 4294967295.0 * in[b]) / (1.0 / 4294967295.0 + layer[b]);
- comp = CLAMP (comp, 0.0, 1.0);
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP (out[b], 0.0, 1.0);
}
}
else
diff --git a/app/operations/gimpoperationgrainextractmode.c b/app/operations/gimpoperationgrainextractmode.c
index 79ee12f..9c4041d 100644
--- a/app/operations/gimpoperationgrainextractmode.c
+++ b/app/operations/gimpoperationgrainextractmode.c
@@ -109,9 +109,9 @@ gimp_operation_grain_extract_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = in[b] - layer[b] + 0.5;
- comp = CLAMP (comp, 0.0, 1.0);
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP (out[b], 0.0, 1.0);
}
}
else
diff --git a/app/operations/gimpoperationgrainmergemode.c b/app/operations/gimpoperationgrainmergemode.c
index f4d7eca..e3feade 100644
--- a/app/operations/gimpoperationgrainmergemode.c
+++ b/app/operations/gimpoperationgrainmergemode.c
@@ -109,9 +109,9 @@ gimp_operation_grain_merge_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = in[b] + layer[b] - 0.5;
- comp = CLAMP (comp, 0.0, 1.0);
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP (out[b], 0.0, 1.0);
}
}
else
diff --git a/app/operations/gimpoperationmultiplymode.c b/app/operations/gimpoperationmultiplymode.c
index a3907ea..992a907 100644
--- a/app/operations/gimpoperationmultiplymode.c
+++ b/app/operations/gimpoperationmultiplymode.c
@@ -109,9 +109,8 @@ gimp_operation_multiply_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = layer[b] * in[b];
- comp = CLAMP (comp, 0.0, 1.0);
-
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP (out[b], 0.0, 1.0);
}
}
else
diff --git a/app/operations/gimpoperationsubtractmode.c b/app/operations/gimpoperationsubtractmode.c
index bb9f10e..0d86bf8 100644
--- a/app/operations/gimpoperationsubtractmode.c
+++ b/app/operations/gimpoperationsubtractmode.c
@@ -109,9 +109,8 @@ gimp_operation_subtract_mode_process_pixels (gfloat *in,
for (b = RED; b < ALPHA; b++)
{
gfloat comp = in[b] - layer[b];
- comp = (comp < 0) ? 0 : comp;
-
out[b] = comp * ratio + in[b] * (1.0 - ratio);
+ out[b] = CLAMP(out[b], 0.0, 1.0);
}
}
else
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]