[gimp/gimp-2-10] app: handle buffers with arbitrary origin in gimp_layer_new_from_gegl_buffer()



commit 7132dd035597137e9f185074050c73ffc1ade9cd
Author: Ell <ell_se yahoo com>
Date:   Thu Sep 19 19:39:29 2019 +0300

    app: handle buffers with arbitrary origin in gimp_layer_new_from_gegl_buffer()
    
    ... by translating the layer according to the buffer's origin.
    
    (cherry picked from commit 6ef21ed1f0fb9dabb1398ca401249e7551cab112)

 app/core/gimplayer-new.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/app/core/gimplayer-new.c b/app/core/gimplayer-new.c
index ee031b37e2..7ea2450608 100644
--- a/app/core/gimplayer-new.c
+++ b/app/core/gimplayer-new.c
@@ -130,7 +130,8 @@ gimp_layer_new_from_gegl_buffer (GeglBuffer       *buffer,
                                  GimpLayerMode     mode,
                                  GimpColorProfile *buffer_profile)
 {
-  GimpLayer *layer;
+  GimpLayer           *layer;
+  const GeglRectangle *extent;
 
   g_return_val_if_fail (GEGL_IS_BUFFER (buffer), NULL);
   g_return_val_if_fail (GIMP_IS_IMAGE (dest_image), NULL);
@@ -138,15 +139,19 @@ gimp_layer_new_from_gegl_buffer (GeglBuffer       *buffer,
   g_return_val_if_fail (buffer_profile == NULL ||
                         GIMP_IS_COLOR_PROFILE (buffer_profile), NULL);
 
+  extent = gegl_buffer_get_extent (buffer);
+
   /*  do *not* use the buffer's format because this function gets
    *  buffers of any format passed, and converts them
    */
   layer = gimp_layer_new (dest_image,
-                          gegl_buffer_get_width  (buffer),
-                          gegl_buffer_get_height (buffer),
+                          extent->width, extent->height,
                           format,
                           name, opacity, mode);
 
+  if (extent->x != 0 || extent->y != 0)
+    gimp_item_translate (GIMP_ITEM (layer), extent->x, extent->y, FALSE);
+
   gimp_layer_new_convert_buffer (layer, buffer, buffer_profile, NULL);
 
   return layer;


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