From 715bd7cfbbd2b0941569c52bafa02d0d25e22ac7 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Wed, 21 Mar 2012 21:36:50 +0100 Subject: [PATCH] app: port GimpDrawableModUndo to storing pixels as GeglBuffers --- app/core/gimpdrawablemodundo.c | 49 +++++++++++++++++----------------- app/core/gimpdrawablemodundo.h | 4 +-- app/core/gimpimage-undo-push.c | 6 ++--- app/core/gimpimage-undo-push.h | 2 +- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/app/core/gimpdrawablemodundo.c b/app/core/gimpdrawablemodundo.c index f1b68f00b2..3992e74443 100644 --- a/app/core/gimpdrawablemodundo.c +++ b/app/core/gimpdrawablemodundo.c @@ -21,7 +21,7 @@ #include "core-types.h" -#include "base/tile-manager.h" +#include "gegl/gimp-gegl-utils.h" #include "gimpimage.h" #include "gimpdrawable.h" @@ -31,7 +31,7 @@ enum { PROP_0, - PROP_COPY_TILES + PROP_COPY_BUFFER }; @@ -76,8 +76,9 @@ gimp_drawable_mod_undo_class_init (GimpDrawableModUndoClass *klass) undo_class->pop = gimp_drawable_mod_undo_pop; undo_class->free = gimp_drawable_mod_undo_free; - g_object_class_install_property (object_class, PROP_COPY_TILES, - g_param_spec_boolean ("copy-tiles", NULL, NULL, + g_object_class_install_property (object_class, PROP_COPY_BUFFER, + g_param_spec_boolean ("copy-buffer", + NULL, NULL, FALSE, GIMP_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); @@ -103,15 +104,15 @@ gimp_drawable_mod_undo_constructed (GObject *object) item = GIMP_ITEM_UNDO (object)->item; drawable = GIMP_DRAWABLE (item); - if (drawable_mod_undo->copy_tiles) + if (drawable_mod_undo->copy_buffer) { - drawable_mod_undo->tiles = - tile_manager_duplicate (gimp_drawable_get_tiles (drawable)); + drawable_mod_undo->buffer = + gimp_gegl_buffer_dup (gimp_drawable_get_buffer (drawable)); } else { - drawable_mod_undo->tiles = - tile_manager_ref (gimp_drawable_get_tiles (drawable)); + drawable_mod_undo->buffer = + g_object_ref (gimp_drawable_get_buffer (drawable)); } drawable_mod_undo->type = gimp_drawable_type (drawable); @@ -131,8 +132,8 @@ gimp_drawable_mod_undo_set_property (GObject *object, switch (property_id) { - case PROP_COPY_TILES: - drawable_mod_undo->copy_tiles = g_value_get_boolean (value); + case PROP_COPY_BUFFER: + drawable_mod_undo->copy_buffer = g_value_get_boolean (value); break; default: @@ -151,8 +152,8 @@ gimp_drawable_mod_undo_get_property (GObject *object, switch (property_id) { - case PROP_COPY_TILES: - g_value_set_boolean (value, drawable_mod_undo->copy_tiles); + case PROP_COPY_BUFFER: + g_value_set_boolean (value, drawable_mod_undo->copy_buffer); break; default: @@ -168,7 +169,7 @@ gimp_drawable_mod_undo_get_memsize (GimpObject *object, GimpDrawableModUndo *drawable_mod_undo = GIMP_DRAWABLE_MOD_UNDO (object); gint64 memsize = 0; - memsize += tile_manager_get_memsize (drawable_mod_undo->tiles, FALSE); + /* FIXME memsize += gimp_gegl_buffer_get_memsize (drawable_mod_undo->buffer, FALSE); */ return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object, gui_size); @@ -181,28 +182,28 @@ gimp_drawable_mod_undo_pop (GimpUndo *undo, { GimpDrawableModUndo *drawable_mod_undo = GIMP_DRAWABLE_MOD_UNDO (undo); GimpDrawable *drawable = GIMP_DRAWABLE (GIMP_ITEM_UNDO (undo)->item); - TileManager *tiles; + GeglBuffer *buffer; GimpImageType type; gint offset_x; gint offset_y; GIMP_UNDO_CLASS (parent_class)->pop (undo, undo_mode, accum); - tiles = drawable_mod_undo->tiles; + buffer = drawable_mod_undo->buffer; type = drawable_mod_undo->type; offset_x = drawable_mod_undo->offset_x; offset_y = drawable_mod_undo->offset_y; - drawable_mod_undo->tiles = tile_manager_ref (gimp_drawable_get_tiles (drawable)); - drawable_mod_undo->type = gimp_drawable_type (drawable); + drawable_mod_undo->buffer = g_object_ref (gimp_drawable_get_buffer (drawable)); + drawable_mod_undo->type = gimp_drawable_type (drawable); gimp_item_get_offset (GIMP_ITEM (drawable), &drawable_mod_undo->offset_x, &drawable_mod_undo->offset_y); - gimp_drawable_set_tiles_full (drawable, FALSE, NULL, - tiles, type, offset_x, offset_y); - tile_manager_unref (tiles); + gimp_drawable_set_buffer_full (drawable, FALSE, NULL, + buffer, type, offset_x, offset_y); + g_object_unref (buffer); } static void @@ -211,10 +212,10 @@ gimp_drawable_mod_undo_free (GimpUndo *undo, { GimpDrawableModUndo *drawable_mod_undo = GIMP_DRAWABLE_MOD_UNDO (undo); - if (drawable_mod_undo->tiles) + if (drawable_mod_undo->buffer) { - tile_manager_unref (drawable_mod_undo->tiles); - drawable_mod_undo->tiles = NULL; + g_object_unref (drawable_mod_undo->buffer); + drawable_mod_undo->buffer = NULL; } GIMP_UNDO_CLASS (parent_class)->free (undo, undo_mode); diff --git a/app/core/gimpdrawablemodundo.h b/app/core/gimpdrawablemodundo.h index 1a9ed27a76..61e5a3d59a 100644 --- a/app/core/gimpdrawablemodundo.h +++ b/app/core/gimpdrawablemodundo.h @@ -36,8 +36,8 @@ struct _GimpDrawableModUndo { GimpItemUndo parent_instance; - TileManager *tiles; - gboolean copy_tiles; + GeglBuffer *buffer; + gboolean copy_buffer; GimpImageType type; gint offset_x; gint offset_y; diff --git a/app/core/gimpimage-undo-push.c b/app/core/gimpimage-undo-push.c index 33b70e596b..4d8ba4f53d 100644 --- a/app/core/gimpimage-undo-push.c +++ b/app/core/gimpimage-undo-push.c @@ -255,7 +255,7 @@ GimpUndo * gimp_image_undo_push_drawable_mod (GimpImage *image, const gchar *undo_desc, GimpDrawable *drawable, - gboolean copy_tiles) + gboolean copy_buffer) { g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL); g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL); @@ -264,8 +264,8 @@ gimp_image_undo_push_drawable_mod (GimpImage *image, return gimp_image_undo_push (image, GIMP_TYPE_DRAWABLE_MOD_UNDO, GIMP_UNDO_DRAWABLE_MOD, undo_desc, GIMP_DIRTY_ITEM | GIMP_DIRTY_DRAWABLE, - "item", drawable, - "copy-tiles", copy_tiles, + "item", drawable, + "copy-buffer", copy_buffer, NULL); } diff --git a/app/core/gimpimage-undo-push.h b/app/core/gimpimage-undo-push.h index 82b1ee3160..90b4b3bcf5 100644 --- a/app/core/gimpimage-undo-push.h +++ b/app/core/gimpimage-undo-push.h @@ -68,7 +68,7 @@ GimpUndo * gimp_image_undo_push_drawable (GimpImage *image, GimpUndo * gimp_image_undo_push_drawable_mod (GimpImage *image, const gchar *undo_desc, GimpDrawable *drawable, - gboolean copy_tiles); + gboolean copy_buffer); /* mask undo */