[gimp/blend-tool-fun: 128/163] app: clamp blended results for some compositing ops



commit 75add34b5fbd3c31018c533f95ed8eb69cf49623
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]