app: Fix layer expansion while painting with symmetry enabled

This commit is contained in:
Shubham 2023-06-30 18:28:29 +05:30 committed by Jehan
parent e33618a650
commit 5191c17fb7
6 changed files with 18 additions and 5 deletions

View File

@ -816,6 +816,7 @@ gimp_brush_core_get_paint_buffer (GimpPaintCore *paint_core,
gint drawable_width, drawable_height;
gint brush_width, brush_height;
gint offset_change_x, offset_change_y;
GimpCoords new_coords;
gimp_brush_transform_size (core->brush,
core->scale, core->aspect_ratio,
@ -845,6 +846,11 @@ gimp_brush_core_get_paint_buffer (GimpPaintCore *paint_core,
{
x += offset_change_x;
y += offset_change_y;
new_coords = *coords;
new_coords.x = coords->x + offset_change_x;
new_coords.y = coords->y + offset_change_y;
gimp_symmetry_set_origin (paint_core->sym, drawable, &new_coords);
}
drawable_width = gimp_item_get_width (GIMP_ITEM (drawable));

View File

@ -266,6 +266,11 @@ gimp_ink_get_paint_buffer (GimpPaintCore *paint_core,
x += SUBSAMPLE * offset_change_x;
y += SUBSAMPLE * offset_change_y;
new_coords = *coords;
new_coords.x = coords->x + offset_change_x;
new_coords.y = coords->y + offset_change_y;
gimp_symmetry_set_origin (paint_core->sym, drawable, &new_coords);
for (iter = ink->last_blobs; iter; iter = g_list_next (iter))
gimp_blob_move (iter->data,
SUBSAMPLE * offset_change_x,
@ -357,6 +362,7 @@ gimp_ink_motion (GimpPaintCore *paint_core,
coords.x -= off_x;
coords.y -= off_y;
gimp_symmetry_set_origin (sym, drawable, &coords);
paint_core->sym = sym;
n_strokes = gimp_symmetry_get_size (sym);

View File

@ -249,6 +249,7 @@ _gimp_paintbrush_motion (GimpPaintCore *paint_core,
coords.x -= off_x;
coords.y -= off_y;
gimp_symmetry_set_origin (sym, drawable, &coords);
paint_core->sym = sym;
/* Some settings are based on the original stroke. */
opacity *= gimp_dynamics_get_linear_value (dynamics,
@ -310,11 +311,7 @@ _gimp_paintbrush_motion (GimpPaintCore *paint_core,
&paint_buffer_y,
&paint_width,
&paint_height);
gimp_item_get_offset (GIMP_ITEM (drawable), &off_x, &off_y);
coords = *(gimp_symmetry_get_coords (sym, i));
coords.x -= off_x;
coords.y -= off_y;
coords = *(gimp_symmetry_get_coords (sym, i));
if (! paint_buffer)
continue;

View File

@ -72,6 +72,8 @@ struct _GimpPaintCore
GHashTable *applicators;
GArray *stroke_buffer;
GimpSymmetry *sym;
};
struct _GimpPaintCoreClass

View File

@ -402,6 +402,7 @@ gimp_smudge_motion (GimpPaintCore *paint_core,
coords.x -= off_x;
coords.y -= off_y;
gimp_symmetry_set_origin (sym, drawable, &coords);
paint_core->sym = sym;
opacity = gimp_dynamics_get_linear_value (dynamics,
GIMP_DYNAMICS_OUTPUT_OPACITY,

View File

@ -343,6 +343,7 @@ gimp_source_core_motion (GimpSourceCore *source_core,
coords.x -= off_x;
coords.y -= off_y;
gimp_symmetry_set_origin (sym, drawable, &coords);
paint_core->sym = sym;
/* Some settings are based on the original stroke. */
opacity = gimp_dynamics_get_linear_value (dynamics,