From cab21271fa53b9a87f5d36ebba192894dc18d7f4 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 21 Mar 2012 18:58:17 +0100 Subject: [PATCH] app: add gimp_gegl_buffer_dup() which creates a TileManager backed dup --- app/gegl/gimp-gegl-utils.c | 19 +++++++++++++++++++ app/gegl/gimp-gegl-utils.h | 2 ++ 2 files changed, 21 insertions(+) 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);