mirror of https://github.com/GNOME/gimp.git
app: use gimp_drawable_set_buffer() in a few places
This commit is contained in:
parent
f8b1372038
commit
b89a912cc7
|
@ -459,32 +459,32 @@ gimp_channel_convert (GimpItem *item,
|
|||
|
||||
if (gimp_drawable_has_alpha (drawable))
|
||||
{
|
||||
GeglNode *flatten;
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *buffer;
|
||||
GimpRGB background;
|
||||
GeglBuffer *new_buffer;
|
||||
GeglNode *flatten;
|
||||
const Babl *format;
|
||||
GimpRGB background;
|
||||
|
||||
new_tiles = tile_manager_new (gimp_item_get_width (item),
|
||||
gimp_item_get_height (item),
|
||||
GIMP_IMAGE_TYPE_BYTES (GIMP_GRAY_IMAGE));
|
||||
format = gimp_drawable_get_format_without_alpha (drawable);
|
||||
|
||||
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);
|
||||
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,
|
||||
flatten, TRUE, buffer);
|
||||
flatten, TRUE, new_buffer);
|
||||
|
||||
g_object_unref (flatten);
|
||||
g_object_unref (buffer);
|
||||
|
||||
gimp_drawable_set_tiles_full (drawable, FALSE, NULL,
|
||||
new_tiles, GIMP_GRAY_IMAGE,
|
||||
gimp_item_get_offset_x (item),
|
||||
gimp_item_get_offset_y (item));
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer_full (drawable, FALSE, NULL,
|
||||
new_buffer, GIMP_GRAY_IMAGE,
|
||||
gimp_item_get_offset_x (item),
|
||||
gimp_item_get_offset_y (item));
|
||||
g_object_unref (new_buffer);
|
||||
}
|
||||
|
||||
if (G_TYPE_FROM_INSTANCE (channel) == GIMP_TYPE_CHANNEL)
|
||||
|
@ -613,16 +613,17 @@ gimp_channel_scale (GimpItem *item,
|
|||
if (channel->bounds_known && channel->empty)
|
||||
{
|
||||
GimpDrawable *drawable = GIMP_DRAWABLE (item);
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *new_buffer;
|
||||
|
||||
new_tiles = tile_manager_new (new_width, new_height,
|
||||
gimp_drawable_bytes (drawable));
|
||||
new_buffer =
|
||||
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_item_is_attached (item), NULL,
|
||||
new_tiles, gimp_drawable_type (drawable),
|
||||
new_offset_x, new_offset_y);
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer_full (drawable,
|
||||
gimp_item_is_attached (item), NULL,
|
||||
new_buffer, gimp_drawable_type (drawable),
|
||||
new_offset_x, new_offset_y);
|
||||
g_object_unref (new_buffer);
|
||||
|
||||
gimp_channel_clear (GIMP_CHANNEL (item), NULL, FALSE);
|
||||
}
|
||||
|
|
|
@ -27,8 +27,6 @@
|
|||
|
||||
#include "core-types.h"
|
||||
|
||||
#include "base/tile-manager.h"
|
||||
|
||||
#include "gegl/gimp-gegl-utils.h"
|
||||
|
||||
#include "gimp.h"
|
||||
|
@ -49,9 +47,8 @@ gimp_drawable_offset (GimpDrawable *drawable,
|
|||
gint offset_y)
|
||||
{
|
||||
GimpItem *item;
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *src_buffer;
|
||||
GeglBuffer *dest_buffer;
|
||||
GeglBuffer *new_buffer;
|
||||
GeglRectangle src_rect;
|
||||
GeglRectangle dest_rect;
|
||||
gint width, height;
|
||||
|
@ -86,11 +83,10 @@ gimp_drawable_offset (GimpDrawable *drawable,
|
|||
if (offset_x == 0 && offset_y == 0)
|
||||
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);
|
||||
dest_buffer = gimp_tile_manager_create_buffer (new_tiles,
|
||||
gimp_drawable_get_format (drawable));
|
||||
new_buffer = gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0, width, height),
|
||||
gimp_drawable_get_format (drawable));
|
||||
|
||||
if (! wrap_around)
|
||||
{
|
||||
|
@ -102,12 +98,12 @@ gimp_drawable_offset (GimpDrawable *drawable,
|
|||
gimp_context_get_background (context, &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);
|
||||
}
|
||||
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,
|
||||
GIMP_GEGL_RECT (src_x, src_y, width, height),
|
||||
dest_buffer,
|
||||
new_buffer,
|
||||
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)
|
||||
{
|
||||
gegl_buffer_copy (src_buffer,
|
||||
GIMP_GEGL_RECT (src_x, src_y, ABS(offset_x), ABS(offset_y)),
|
||||
dest_buffer,
|
||||
GIMP_GEGL_RECT (dest_x, dest_y, 0, 0));
|
||||
GIMP_GEGL_RECT (src_x, src_y,
|
||||
ABS (offset_x), ABS (offset_y)),
|
||||
new_buffer,
|
||||
GIMP_GEGL_RECT (dest_x, dest_y, 0, 0));
|
||||
}
|
||||
|
||||
/* X offset */
|
||||
|
@ -212,7 +209,7 @@ gimp_drawable_offset (GimpDrawable *drawable,
|
|||
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 */
|
||||
|
@ -239,14 +236,12 @@ gimp_drawable_offset (GimpDrawable *drawable,
|
|||
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_tiles (drawable, gimp_item_is_attached (item),
|
||||
C_("undo-type", "Offset Drawable"), new_tiles,
|
||||
gimp_drawable_type (drawable));
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer (drawable, gimp_item_is_attached (item),
|
||||
C_("undo-type", "Offset Drawable"), new_buffer,
|
||||
gimp_drawable_type (drawable));
|
||||
g_object_unref (new_buffer);
|
||||
}
|
||||
|
|
|
@ -542,8 +542,7 @@ gimp_drawable_resize (GimpItem *item,
|
|||
gint offset_y)
|
||||
{
|
||||
GimpDrawable *drawable = GIMP_DRAWABLE (item);
|
||||
GeglBuffer *dest_buffer;
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *new_buffer;
|
||||
gint new_offset_x;
|
||||
gint new_offset_y;
|
||||
gint copy_x, copy_y;
|
||||
|
@ -572,11 +571,9 @@ gimp_drawable_resize (GimpItem *item,
|
|||
©_width,
|
||||
©_height);
|
||||
|
||||
new_tiles = tile_manager_new (new_width, new_height,
|
||||
gimp_drawable_bytes (drawable));
|
||||
|
||||
dest_buffer = gimp_tile_manager_create_buffer (new_tiles,
|
||||
gimp_drawable_get_format (drawable));
|
||||
new_buffer = gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
|
||||
new_width, new_height),
|
||||
gimp_drawable_get_format (drawable));
|
||||
|
||||
if (copy_width != new_width ||
|
||||
copy_height != new_height)
|
||||
|
@ -593,7 +590,7 @@ gimp_drawable_resize (GimpItem *item,
|
|||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -605,17 +602,15 @@ gimp_drawable_resize (GimpItem *item,
|
|||
copy_y - gimp_item_get_offset_y (item),
|
||||
copy_width,
|
||||
copy_height),
|
||||
dest_buffer,
|
||||
new_buffer,
|
||||
GIMP_GEGL_RECT (copy_x - new_offset_x,
|
||||
copy_y - new_offset_y, 0, 0));
|
||||
}
|
||||
|
||||
g_object_unref (dest_buffer);
|
||||
|
||||
gimp_drawable_set_tiles_full (drawable, gimp_item_is_attached (item), NULL,
|
||||
new_tiles, gimp_drawable_type (drawable),
|
||||
new_offset_x, new_offset_y);
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer_full (drawable, gimp_item_is_attached (item), NULL,
|
||||
new_buffer, gimp_drawable_type (drawable),
|
||||
new_offset_x, new_offset_y);
|
||||
g_object_unref (new_buffer);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -908,7 +903,7 @@ gimp_drawable_real_push_undo (GimpDrawable *drawable,
|
|||
|
||||
if (! tiles)
|
||||
{
|
||||
GeglBuffer *dest_buffer;
|
||||
GeglBuffer *dest_buffer;
|
||||
|
||||
tiles = tile_manager_new (width, height, gimp_drawable_bytes (drawable));
|
||||
|
||||
|
|
|
@ -1798,8 +1798,7 @@ gimp_layer_add_alpha (GimpLayer *layer)
|
|||
{
|
||||
GimpItem *item;
|
||||
GimpDrawable *drawable;
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *dest_buffer;
|
||||
GeglBuffer *new_buffer;
|
||||
GimpImageType new_type;
|
||||
|
||||
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_tiles = tile_manager_new (gimp_item_get_width (item),
|
||||
gimp_item_get_height (item),
|
||||
GIMP_IMAGE_TYPE_BYTES (new_type));
|
||||
|
||||
dest_buffer = gimp_tile_manager_create_buffer (new_tiles,
|
||||
gimp_drawable_get_format_with_alpha (GIMP_DRAWABLE (layer)));
|
||||
new_buffer =
|
||||
gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
|
||||
gimp_item_get_width (item),
|
||||
gimp_item_get_height (item)),
|
||||
gimp_drawable_get_format_with_alpha (drawable));
|
||||
|
||||
gegl_buffer_copy (gimp_drawable_get_buffer (drawable), NULL,
|
||||
dest_buffer, NULL);
|
||||
new_buffer, NULL);
|
||||
|
||||
g_object_unref (dest_buffer);
|
||||
|
||||
gimp_drawable_set_tiles (GIMP_DRAWABLE (layer),
|
||||
gimp_item_is_attached (GIMP_ITEM (layer)),
|
||||
C_("undo-type", "Add Alpha Channel"),
|
||||
new_tiles, new_type);
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer (GIMP_DRAWABLE (layer),
|
||||
gimp_item_is_attached (GIMP_ITEM (layer)),
|
||||
C_("undo-type", "Add Alpha Channel"),
|
||||
new_buffer, new_type);
|
||||
g_object_unref (new_buffer);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1836,8 +1832,7 @@ gimp_layer_flatten (GimpLayer *layer,
|
|||
GimpContext *context)
|
||||
{
|
||||
GeglNode *flatten;
|
||||
TileManager *new_tiles;
|
||||
GeglBuffer *dest_buffer;
|
||||
GeglBuffer *new_buffer;
|
||||
GimpImageType new_type;
|
||||
GimpRGB background;
|
||||
|
||||
|
@ -1849,27 +1844,25 @@ gimp_layer_flatten (GimpLayer *layer,
|
|||
|
||||
new_type = gimp_drawable_type_without_alpha (GIMP_DRAWABLE (layer));
|
||||
|
||||
new_tiles = tile_manager_new (gimp_item_get_width (GIMP_ITEM (layer)),
|
||||
gimp_item_get_height (GIMP_ITEM (layer)),
|
||||
GIMP_IMAGE_TYPE_BYTES (new_type));
|
||||
|
||||
dest_buffer = gimp_tile_manager_create_buffer (new_tiles,
|
||||
gimp_drawable_get_format_without_alpha (GIMP_DRAWABLE (layer)));
|
||||
new_buffer =
|
||||
gimp_gegl_buffer_new (GIMP_GEGL_RECT (0, 0,
|
||||
gimp_item_get_width (GIMP_ITEM (layer)),
|
||||
gimp_item_get_height (GIMP_ITEM (layer))),
|
||||
gimp_drawable_get_format_without_alpha (GIMP_DRAWABLE (layer)));
|
||||
|
||||
gimp_context_get_background (context, &background);
|
||||
flatten = gimp_gegl_create_flatten_node (&background);
|
||||
|
||||
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 (dest_buffer);
|
||||
|
||||
gimp_drawable_set_tiles (GIMP_DRAWABLE (layer),
|
||||
gimp_item_is_attached (GIMP_ITEM (layer)),
|
||||
C_("undo-type", "Remove Alpha Channel"),
|
||||
new_tiles, new_type);
|
||||
tile_manager_unref (new_tiles);
|
||||
gimp_drawable_set_buffer (GIMP_DRAWABLE (layer),
|
||||
gimp_item_is_attached (GIMP_ITEM (layer)),
|
||||
C_("undo-type", "Remove Alpha Channel"),
|
||||
new_buffer, new_type);
|
||||
g_object_unref (new_buffer);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
#include "text-types.h"
|
||||
|
||||
#include "base/tile-manager.h"
|
||||
#include "gegl/gimp-gegl-utils.h"
|
||||
|
||||
#include "core/gimp.h"
|
||||
#include "core/gimp-utils.h"
|
||||
|
@ -590,13 +590,14 @@ gimp_text_layer_render (GimpTextLayer *layer)
|
|||
(width != gimp_item_get_width (item) ||
|
||||
height != gimp_item_get_height (item)))
|
||||
{
|
||||
TileManager *new_tiles = tile_manager_new (width, height,
|
||||
gimp_drawable_bytes (drawable));
|
||||
GeglBuffer *new_buffer =
|
||||
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_type (drawable));
|
||||
gimp_drawable_set_buffer (drawable, FALSE, NULL, new_buffer,
|
||||
gimp_drawable_type (drawable));
|
||||
|
||||
tile_manager_unref (new_tiles);
|
||||
g_object_unref (new_buffer);
|
||||
|
||||
if (gimp_layer_get_mask (GIMP_LAYER (layer)))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue