[gimp] Bug 793392 - Issue when painting with some layer modes ...



commit 1be002254deeeda6b0f4c982b321ca2ab6503422
Author: Ell <ell_se yahoo com>
Date:   Mon Feb 12 13:38:19 2018 -0500

    Bug 793392 - Issue when painting with some layer modes ...
    
    ... on perceptual gamma image
    
    When constructing the paint core's paint buffer, in GimpBrushCore
    and GimpInk, use the drawable's format as the preferred format in
    the call to gimp_layer_mode_get_format(), instead of NULL.
    
    Subsequently, use the paint buffer's format, instead of the source
    buffer's format, as the preferred iterator format in
    do_layer_blend(), since the iterator format must match the paint
    buffer format.

 app/paint/gimpbrushcore.c       |    4 ++--
 app/paint/gimpink.c             |    2 +-
 app/paint/gimppaintcore-loops.c |    2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/app/paint/gimpbrushcore.c b/app/paint/gimpbrushcore.c
index 1eecd0c..7af1002 100644
--- a/app/paint/gimpbrushcore.c
+++ b/app/paint/gimpbrushcore.c
@@ -850,12 +850,12 @@ gimp_brush_core_get_paint_buffer (GimpPaintCore    *paint_core,
       format = gimp_layer_mode_get_format (paint_mode,
                                            GIMP_LAYER_COLOR_SPACE_AUTO,
                                            GIMP_LAYER_COLOR_SPACE_AUTO,
-                                           NULL);
+                                           gimp_drawable_get_format (drawable));
 
       if (paint_core->paint_buffer                                       &&
           gegl_buffer_get_width  (paint_core->paint_buffer) == (x2 - x1) &&
           gegl_buffer_get_height (paint_core->paint_buffer) == (y2 - y1) &&
-          gegl_buffer_get_format (paint_core->paint_buffer) == format )
+          gegl_buffer_get_format (paint_core->paint_buffer) == format)
         {
           *paint_buffer_x = x1;
           *paint_buffer_y = y1;
diff --git a/app/paint/gimpink.c b/app/paint/gimpink.c
index 80bceea..3a3e6d8 100644
--- a/app/paint/gimpink.c
+++ b/app/paint/gimpink.c
@@ -262,7 +262,7 @@ gimp_ink_get_paint_buffer (GimpPaintCore    *paint_core,
       format = gimp_layer_mode_get_format (paint_mode,
                                            GIMP_LAYER_COLOR_SPACE_AUTO,
                                            GIMP_LAYER_COLOR_SPACE_AUTO,
-                                           NULL);
+                                           gimp_drawable_get_format (drawable));
 
       temp_buf = gimp_temp_buf_new ((x2 - x1), (y2 - y1),
                                     format);
diff --git a/app/paint/gimppaintcore-loops.c b/app/paint/gimppaintcore-loops.c
index 9551b97..a58b3f3 100644
--- a/app/paint/gimppaintcore-loops.c
+++ b/app/paint/gimppaintcore-loops.c
@@ -322,7 +322,7 @@ do_layer_blend (GeglBuffer    *src_buffer,
   iterator_format = gimp_layer_mode_get_format (paint_mode,
                                                 layer_mode.composite_space,
                                                 layer_mode.blend_space,
-                                                gegl_buffer_get_format (src_buffer));
+                                                gimp_temp_buf_get_format (paint_buf));
 
   roi.x = x_offset;
   roi.y = y_offset;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]