app: use gimp_drawable_set_buffer() in a few places

This commit is contained in:
Michael Natterer 2012-03-21 10:10:20 +01:00
parent f8b1372038
commit b89a912cc7
5 changed files with 85 additions and 100 deletions

View File

@ -459,32 +459,32 @@ gimp_channel_convert (GimpItem *item,
if (gimp_drawable_has_alpha (drawable)) if (gimp_drawable_has_alpha (drawable))
{ {
GeglNode *flatten; GeglBuffer *new_buffer;
TileManager *new_tiles; GeglNode *flatten;
GeglBuffer *buffer; const Babl *format;
GimpRGB background; GimpRGB background;
new_tiles = tile_manager_new (gimp_item_get_width (item), format = gimp_drawable_get_format_without_alpha (drawable);
gimp_item_get_height (item),
GIMP_IMAGE_TYPE_BYTES (GIMP_GRAY_IMAGE)); new_buffer =
gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
gimp_item_get_width (item),
gimp_item_get_height (item)),
format);
gimp_rgba_set (&background, 0.0, 0.0, 0.0, 0.0); gimp_rgba_set (&background, 0.0, 0.0, 0.0, 0.0);
flatten = gimp_gegl_create_flatten_node (&background); flatten = gimp_gegl_create_flatten_node (&background);
buffer = gimp_tile_manager_create_buffer (new_tiles,
gimp_drawable_get_format_without_alpha (drawable));
gimp_drawable_apply_operation_to_buffer (drawable, NULL, NULL, gimp_drawable_apply_operation_to_buffer (drawable, NULL, NULL,
flatten, TRUE, buffer); flatten, TRUE, new_buffer);
g_object_unref (flatten); g_object_unref (flatten);
g_object_unref (buffer);
gimp_drawable_set_tiles_full (drawable, FALSE, NULL, gimp_drawable_set_buffer_full (drawable, FALSE, NULL,
new_tiles, GIMP_GRAY_IMAGE, new_buffer, GIMP_GRAY_IMAGE,
gimp_item_get_offset_x (item), gimp_item_get_offset_x (item),
gimp_item_get_offset_y (item)); gimp_item_get_offset_y (item));
tile_manager_unref (new_tiles); g_object_unref (new_buffer);
} }
if (G_TYPE_FROM_INSTANCE (channel) == GIMP_TYPE_CHANNEL) if (G_TYPE_FROM_INSTANCE (channel) == GIMP_TYPE_CHANNEL)
@ -613,16 +613,17 @@ gimp_channel_scale (GimpItem *item,
if (channel->bounds_known && channel->empty) if (channel->bounds_known && channel->empty)
{ {
GimpDrawable *drawable = GIMP_DRAWABLE (item); GimpDrawable *drawable = GIMP_DRAWABLE (item);
TileManager *new_tiles; GeglBuffer *new_buffer;
new_tiles = tile_manager_new (new_width, new_height, new_buffer =
gimp_drawable_bytes (drawable)); gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0, new_width, new_height),
gimp_drawable_get_format (drawable));
gimp_drawable_set_tiles_full (drawable, gimp_drawable_set_buffer_full (drawable,
gimp_item_is_attached (item), NULL, gimp_item_is_attached (item), NULL,
new_tiles, gimp_drawable_type (drawable), new_buffer, gimp_drawable_type (drawable),
new_offset_x, new_offset_y); new_offset_x, new_offset_y);
tile_manager_unref (new_tiles); g_object_unref (new_buffer);
gimp_channel_clear (GIMP_CHANNEL (item), NULL, FALSE); gimp_channel_clear (GIMP_CHANNEL (item), NULL, FALSE);
} }

View File

@ -27,8 +27,6 @@
#include "core-types.h" #include "core-types.h"
#include "base/tile-manager.h"
#include "gegl/gimp-gegl-utils.h" #include "gegl/gimp-gegl-utils.h"
#include "gimp.h" #include "gimp.h"
@ -49,9 +47,8 @@ gimp_drawable_offset (GimpDrawable *drawable,
gint offset_y) gint offset_y)
{ {
GimpItem *item; GimpItem *item;
TileManager *new_tiles;
GeglBuffer *src_buffer; GeglBuffer *src_buffer;
GeglBuffer *dest_buffer; GeglBuffer *new_buffer;
GeglRectangle src_rect; GeglRectangle src_rect;
GeglRectangle dest_rect; GeglRectangle dest_rect;
gint width, height; gint width, height;
@ -86,11 +83,10 @@ gimp_drawable_offset (GimpDrawable *drawable,
if (offset_x == 0 && offset_y == 0) if (offset_x == 0 && offset_y == 0)
return; return;
new_tiles = tile_manager_new (width, height, gimp_drawable_bytes (drawable)); src_buffer = gimp_drawable_get_buffer (drawable);
src_buffer = gimp_drawable_get_buffer (drawable); new_buffer = gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0, width, height),
dest_buffer = gimp_tile_manager_create_buffer (new_tiles, gimp_drawable_get_format (drawable));
gimp_drawable_get_format (drawable));
if (! wrap_around) if (! wrap_around)
{ {
@ -102,12 +98,12 @@ gimp_drawable_offset (GimpDrawable *drawable,
gimp_context_get_background (context, &bg); gimp_context_get_background (context, &bg);
color = gimp_gegl_color_new (&bg); color = gimp_gegl_color_new (&bg);
gegl_buffer_set_color (dest_buffer, NULL, color); gegl_buffer_set_color (new_buffer, NULL, color);
g_object_unref (color); g_object_unref (color);
} }
else else
{ {
gegl_buffer_clear (dest_buffer, NULL); gegl_buffer_clear (new_buffer, NULL);
} }
} }
@ -142,7 +138,7 @@ gimp_drawable_offset (GimpDrawable *drawable,
{ {
gegl_buffer_copy (src_buffer, gegl_buffer_copy (src_buffer,
GIMP_GEGL_RECT (src_x, src_y, width, height), GIMP_GEGL_RECT (src_x, src_y, width, height),
dest_buffer, new_buffer,
GIMP_GEGL_RECT (dest_x,dest_y, width, height)); GIMP_GEGL_RECT (dest_x,dest_y, width, height));
} }
@ -183,9 +179,10 @@ gimp_drawable_offset (GimpDrawable *drawable,
if (offset_x != 0 && offset_y != 0) if (offset_x != 0 && offset_y != 0)
{ {
gegl_buffer_copy (src_buffer, gegl_buffer_copy (src_buffer,
GIMP_GEGL_RECT (src_x, src_y, ABS(offset_x), ABS(offset_y)), GIMP_GEGL_RECT (src_x, src_y,
dest_buffer, ABS (offset_x), ABS (offset_y)),
GIMP_GEGL_RECT (dest_x, dest_y, 0, 0)); new_buffer,
GIMP_GEGL_RECT (dest_x, dest_y, 0, 0));
} }
/* X offset */ /* X offset */
@ -212,7 +209,7 @@ gimp_drawable_offset (GimpDrawable *drawable,
dest_rect.y = 0; dest_rect.y = 0;
} }
gegl_buffer_copy (src_buffer, &src_rect, dest_buffer, &dest_rect); gegl_buffer_copy (src_buffer, &src_rect, new_buffer, &dest_rect);
} }
/* X offset */ /* X offset */
@ -239,14 +236,12 @@ gimp_drawable_offset (GimpDrawable *drawable,
dest_rect.y = dest_y; dest_rect.y = dest_y;
} }
gegl_buffer_copy (src_buffer, &src_rect, dest_buffer, &dest_rect); gegl_buffer_copy (src_buffer, &src_rect, new_buffer, &dest_rect);
} }
} }
g_object_unref (dest_buffer); gimp_drawable_set_buffer (drawable, gimp_item_is_attached (item),
C_("undo-type", "Offset Drawable"), new_buffer,
gimp_drawable_set_tiles (drawable, gimp_item_is_attached (item), gimp_drawable_type (drawable));
C_("undo-type", "Offset Drawable"), new_tiles, g_object_unref (new_buffer);
gimp_drawable_type (drawable));
tile_manager_unref (new_tiles);
} }

View File

@ -542,8 +542,7 @@ gimp_drawable_resize (GimpItem *item,
gint offset_y) gint offset_y)
{ {
GimpDrawable *drawable = GIMP_DRAWABLE (item); GimpDrawable *drawable = GIMP_DRAWABLE (item);
GeglBuffer *dest_buffer; GeglBuffer *new_buffer;
TileManager *new_tiles;
gint new_offset_x; gint new_offset_x;
gint new_offset_y; gint new_offset_y;
gint copy_x, copy_y; gint copy_x, copy_y;
@ -572,11 +571,9 @@ gimp_drawable_resize (GimpItem *item,
&copy_width, &copy_width,
&copy_height); &copy_height);
new_tiles = tile_manager_new (new_width, new_height, new_buffer = gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
gimp_drawable_bytes (drawable)); new_width, new_height),
gimp_drawable_get_format (drawable));
dest_buffer = gimp_tile_manager_create_buffer (new_tiles,
gimp_drawable_get_format (drawable));
if (copy_width != new_width || if (copy_width != new_width ||
copy_height != new_height) copy_height != new_height)
@ -593,7 +590,7 @@ gimp_drawable_resize (GimpItem *item,
col = gimp_gegl_color_new (&bg); col = gimp_gegl_color_new (&bg);
gegl_buffer_set_color (dest_buffer, NULL, col); gegl_buffer_set_color (new_buffer, NULL, col);
g_object_unref (col); g_object_unref (col);
} }
@ -605,17 +602,15 @@ gimp_drawable_resize (GimpItem *item,
copy_y - gimp_item_get_offset_y (item), copy_y - gimp_item_get_offset_y (item),
copy_width, copy_width,
copy_height), copy_height),
dest_buffer, new_buffer,
GIMP_GEGL_RECT (copy_x - new_offset_x, GIMP_GEGL_RECT (copy_x - new_offset_x,
copy_y - new_offset_y, 0, 0)); copy_y - new_offset_y, 0, 0));
} }
g_object_unref (dest_buffer); gimp_drawable_set_buffer_full (drawable, gimp_item_is_attached (item), NULL,
new_buffer, gimp_drawable_type (drawable),
gimp_drawable_set_tiles_full (drawable, gimp_item_is_attached (item), NULL, new_offset_x, new_offset_y);
new_tiles, gimp_drawable_type (drawable), g_object_unref (new_buffer);
new_offset_x, new_offset_y);
tile_manager_unref (new_tiles);
} }
static void static void
@ -908,7 +903,7 @@ gimp_drawable_real_push_undo (GimpDrawable *drawable,
if (! tiles) if (! tiles)
{ {
GeglBuffer *dest_buffer; GeglBuffer *dest_buffer;
tiles = tile_manager_new (width, height, gimp_drawable_bytes (drawable)); tiles = tile_manager_new (width, height, gimp_drawable_bytes (drawable));

View File

@ -1798,8 +1798,7 @@ gimp_layer_add_alpha (GimpLayer *layer)
{ {
GimpItem *item; GimpItem *item;
GimpDrawable *drawable; GimpDrawable *drawable;
TileManager *new_tiles; GeglBuffer *new_buffer;
GeglBuffer *dest_buffer;
GimpImageType new_type; GimpImageType new_type;
g_return_if_fail (GIMP_IS_LAYER (layer)); g_return_if_fail (GIMP_IS_LAYER (layer));
@ -1812,23 +1811,20 @@ gimp_layer_add_alpha (GimpLayer *layer)
new_type = gimp_drawable_type_with_alpha (drawable); new_type = gimp_drawable_type_with_alpha (drawable);
new_tiles = tile_manager_new (gimp_item_get_width (item), new_buffer =
gimp_item_get_height (item), gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
GIMP_IMAGE_TYPE_BYTES (new_type)); gimp_item_get_width (item),
gimp_item_get_height (item)),
dest_buffer = gimp_tile_manager_create_buffer (new_tiles, gimp_drawable_get_format_with_alpha (drawable));
gimp_drawable_get_format_with_alpha (GIMP_DRAWABLE (layer)));
gegl_buffer_copy (gimp_drawable_get_buffer (drawable), NULL, gegl_buffer_copy (gimp_drawable_get_buffer (drawable), NULL,
dest_buffer, NULL); new_buffer, NULL);
g_object_unref (dest_buffer); gimp_drawable_set_buffer (GIMP_DRAWABLE (layer),
gimp_item_is_attached (GIMP_ITEM (layer)),
gimp_drawable_set_tiles (GIMP_DRAWABLE (layer), C_("undo-type", "Add Alpha Channel"),
gimp_item_is_attached (GIMP_ITEM (layer)), new_buffer, new_type);
C_("undo-type", "Add Alpha Channel"), g_object_unref (new_buffer);
new_tiles, new_type);
tile_manager_unref (new_tiles);
} }
void void
@ -1836,8 +1832,7 @@ gimp_layer_flatten (GimpLayer *layer,
GimpContext *context) GimpContext *context)
{ {
GeglNode *flatten; GeglNode *flatten;
TileManager *new_tiles; GeglBuffer *new_buffer;
GeglBuffer *dest_buffer;
GimpImageType new_type; GimpImageType new_type;
GimpRGB background; GimpRGB background;
@ -1849,27 +1844,25 @@ gimp_layer_flatten (GimpLayer *layer,
new_type = gimp_drawable_type_without_alpha (GIMP_DRAWABLE (layer)); new_type = gimp_drawable_type_without_alpha (GIMP_DRAWABLE (layer));
new_tiles = tile_manager_new (gimp_item_get_width (GIMP_ITEM (layer)), new_buffer =
gimp_item_get_height (GIMP_ITEM (layer)), gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
GIMP_IMAGE_TYPE_BYTES (new_type)); gimp_item_get_width (GIMP_ITEM (layer)),
gimp_item_get_height (GIMP_ITEM (layer))),
dest_buffer = gimp_tile_manager_create_buffer (new_tiles, gimp_drawable_get_format_without_alpha (GIMP_DRAWABLE (layer)));
gimp_drawable_get_format_without_alpha (GIMP_DRAWABLE (layer)));
gimp_context_get_background (context, &background); gimp_context_get_background (context, &background);
flatten = gimp_gegl_create_flatten_node (&background); flatten = gimp_gegl_create_flatten_node (&background);
gimp_drawable_apply_operation_to_buffer (GIMP_DRAWABLE (layer), NULL, NULL, gimp_drawable_apply_operation_to_buffer (GIMP_DRAWABLE (layer), NULL, NULL,
flatten, TRUE, dest_buffer); flatten, TRUE, new_buffer);
g_object_unref (flatten); g_object_unref (flatten);
g_object_unref (dest_buffer);
gimp_drawable_set_tiles (GIMP_DRAWABLE (layer), gimp_drawable_set_buffer (GIMP_DRAWABLE (layer),
gimp_item_is_attached (GIMP_ITEM (layer)), gimp_item_is_attached (GIMP_ITEM (layer)),
C_("undo-type", "Remove Alpha Channel"), C_("undo-type", "Remove Alpha Channel"),
new_tiles, new_type); new_buffer, new_type);
tile_manager_unref (new_tiles); g_object_unref (new_buffer);
} }
void void

View File

@ -33,7 +33,7 @@
#include "text-types.h" #include "text-types.h"
#include "base/tile-manager.h" #include "gegl/gimp-gegl-utils.h"
#include "core/gimp.h" #include "core/gimp.h"
#include "core/gimp-utils.h" #include "core/gimp-utils.h"
@ -590,13 +590,14 @@ gimp_text_layer_render (GimpTextLayer *layer)
(width != gimp_item_get_width (item) || (width != gimp_item_get_width (item) ||
height != gimp_item_get_height (item))) height != gimp_item_get_height (item)))
{ {
TileManager *new_tiles = tile_manager_new (width, height, GeglBuffer *new_buffer =
gimp_drawable_bytes (drawable)); gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0, width, height),
gimp_drawable_get_format (drawable));
gimp_drawable_set_tiles (drawable, FALSE, NULL, new_tiles, gimp_drawable_set_buffer (drawable, FALSE, NULL, new_buffer,
gimp_drawable_type (drawable)); gimp_drawable_type (drawable));
tile_manager_unref (new_tiles); g_object_unref (new_buffer);
if (gimp_layer_get_mask (GIMP_LAYER (layer))) if (gimp_layer_get_mask (GIMP_LAYER (layer)))
{ {