insert color blocks into a group and skip small elements (#3584)

pull/3596/head
Kaalleen 2025-03-16 21:23:02 +01:00 zatwierdzone przez GitHub
rodzic ab2e182d1e
commit 7573798fe0
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
1 zmienionych plików z 13 dodań i 6 usunięć

Wyświetl plik

@ -5,8 +5,8 @@
from math import degrees, pi
from inkex import (DirectedLineSegment, LinearGradient, PathElement, Transform,
errormsg)
from inkex import (DirectedLineSegment, Group, LinearGradient, Path,
PathElement, Transform, errormsg)
from shapely import geometry as shgeo
from shapely.affinity import rotate
from shapely.ops import split
@ -15,8 +15,8 @@ from ..elements import FillStitch
from ..i18n import _
from ..svg import PIXELS_PER_MM, get_correction_transform
from ..svg.tags import INKSTITCH_ATTRIBS
from .duplicate_params import get_inkstitch_attributes
from .base import InkstitchExtension
from .duplicate_params import get_inkstitch_attributes
class GradientBlocks(InkstitchExtension):
@ -60,7 +60,13 @@ class GradientBlocks(InkstitchExtension):
end_row_spacing = element.row_spacing / PIXELS_PER_MM * 2
end_row_spacing = f'{end_row_spacing: .2f}'
color_block_group = Group()
color_block_group.label = _("Color Gradient Blocks")
parent.insert(index, color_block_group)
for i, shape in enumerate(fill_shapes):
if shape.area < 15:
continue
color = attributes[i]['color']
style['fill'] = color
is_gradient = attributes[i]['is_gradient']
@ -91,15 +97,16 @@ class GradientBlocks(InkstitchExtension):
block.set('inkstitch:fill_underlay_angle', angle)
block.set('inkstitch:fill_underlay_row_spacing_mm', end_row_spacing)
parent.insert(index, block)
color_block_group.append(block)
parent.remove(element.node)
def _element_to_path(self, shape):
coords = list(shape.exterior.coords)
for interior in shape.interiors:
coords.extend(interior.coords)
path = "M " + " ".join([f'{x}, {y}' for x, y in coords]) + " Z"
return path
path = Path(coords)
path.close()
return str(path)
def gradient_shapes_and_attributes(element, shape, unit_multiplier):