mirror of https://github.com/GNOME/gimp.git
Smudge problem on offset layers (fixes #8999)
This commit is contained in:
parent
8a066f0430
commit
0c89be5f06
|
@ -213,7 +213,7 @@ gimp_smudge_start (GimpPaintCore *paint_core,
|
|||
GimpPickable *dest_pickable;
|
||||
GeglBuffer *pickable_buffer;
|
||||
GeglBuffer *paint_buffer;
|
||||
GimpCoords *coords;
|
||||
GimpCoords coords;
|
||||
gint dest_pickable_off_x;
|
||||
gint dest_pickable_off_y;
|
||||
gint paint_buffer_x;
|
||||
|
@ -222,12 +222,18 @@ gimp_smudge_start (GimpPaintCore *paint_core,
|
|||
gint n_strokes;
|
||||
gint i;
|
||||
gint x, y;
|
||||
gint off_x, off_y;
|
||||
|
||||
coords = *(gimp_symmetry_get_origin (sym));
|
||||
|
||||
gimp_item_get_offset (GIMP_ITEM (drawable), &off_x, &off_y);
|
||||
coords.x -= off_x;
|
||||
coords.y -= off_y;
|
||||
|
||||
coords = gimp_symmetry_get_origin (sym);
|
||||
gimp_brush_core_eval_transform_dynamics (brush_core,
|
||||
gimp_item_get_image (GIMP_ITEM (drawable)),
|
||||
paint_options,
|
||||
coords);
|
||||
&coords);
|
||||
|
||||
if (options->sample_merged)
|
||||
{
|
||||
|
@ -252,9 +258,11 @@ gimp_smudge_start (GimpPaintCore *paint_core,
|
|||
{
|
||||
GeglBuffer *accum_buffer;
|
||||
|
||||
coords = gimp_symmetry_get_coords (sym, i);
|
||||
coords = *(gimp_symmetry_get_coords (sym, i));
|
||||
coords.x -= off_x;
|
||||
coords.y -= off_y;
|
||||
|
||||
gimp_smudge_accumulator_size (paint_options, coords, &accum_size);
|
||||
gimp_smudge_accumulator_size (paint_options, &coords, &accum_size);
|
||||
|
||||
/* Allocate the accumulation buffer */
|
||||
accum_buffer = gegl_buffer_new (GEGL_RECTANGLE (0, 0,
|
||||
|
@ -270,14 +278,14 @@ gimp_smudge_start (GimpPaintCore *paint_core,
|
|||
paint_buffer = gimp_paint_core_get_paint_buffer (paint_core, drawable,
|
||||
paint_options,
|
||||
GIMP_LAYER_MODE_NORMAL,
|
||||
coords,
|
||||
&coords,
|
||||
&paint_buffer_x,
|
||||
&paint_buffer_y,
|
||||
NULL, NULL);
|
||||
if (! paint_buffer)
|
||||
continue;
|
||||
|
||||
gimp_smudge_accumulator_coords (paint_core, coords, 0, &x, &y);
|
||||
gimp_smudge_accumulator_coords (paint_core, &coords, 0, &x, &y);
|
||||
|
||||
/* If clipped, prefill the smudge buffer with the color at the
|
||||
* brush position.
|
||||
|
@ -292,10 +300,10 @@ gimp_smudge_start (GimpPaintCore *paint_core,
|
|||
gint pick_x;
|
||||
gint pick_y;
|
||||
|
||||
pick_x = CLAMP ((gint) coords->x + dest_pickable_off_x,
|
||||
pick_x = CLAMP ((gint) coords.x + dest_pickable_off_x,
|
||||
0,
|
||||
gegl_buffer_get_width (pickable_buffer) - 1);
|
||||
pick_y = CLAMP ((gint) coords->y + dest_pickable_off_y,
|
||||
pick_y = CLAMP ((gint) coords.y + dest_pickable_off_y,
|
||||
0,
|
||||
gegl_buffer_get_height (pickable_buffer) - 1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue