diff --git a/app/gegl/gimp-gegl-utils.c b/app/gegl/gimp-gegl-utils.c index 6c993b7993..9889524f4b 100644 --- a/app/gegl/gimp-gegl-utils.c +++ b/app/gegl/gimp-gegl-utils.c @@ -218,6 +218,25 @@ gimp_gegl_buffer_new (const GeglRectangle *rect, return buffer; } +GeglBuffer * +gimp_gegl_buffer_dup (GeglBuffer *buffer) +{ + const Babl *format = gegl_buffer_get_format (buffer); + TileManager *tiles; + GeglBuffer *dup; + + tiles = tile_manager_new (gegl_buffer_get_width (buffer), + gegl_buffer_get_height (buffer), + babl_format_get_bytes_per_pixel (format)); + + dup = gimp_tile_manager_create_buffer (tiles, format); + tile_manager_unref (tiles); + + gegl_buffer_copy (buffer, NULL, dup, NULL); + + return dup; +} + GeglBuffer * gimp_tile_manager_create_buffer (TileManager *tm, const Babl *format) diff --git a/app/gegl/gimp-gegl-utils.h b/app/gegl/gimp-gegl-utils.h index 70034fa2fb..a61235c834 100644 --- a/app/gegl/gimp-gegl-utils.h +++ b/app/gegl/gimp-gegl-utils.h @@ -35,6 +35,8 @@ const gchar * gimp_interpolation_to_gegl_filter (GimpInterpolationType interpo GeglBuffer * gimp_gegl_buffer_new (const GeglRectangle *rect, const Babl *format); +GeglBuffer * gimp_gegl_buffer_dup (GeglBuffer *buffer); + GeglBuffer * gimp_tile_manager_create_buffer (TileManager *tm, const Babl *format); TileManager * gimp_gegl_buffer_get_tiles (GeglBuffer *buffer);