kopia lustrzana https://github.com/inkstitch/inkstitch
add display stacking order extension (#2656)
rodzic
fcb1f4a122
commit
c0bcdb6e25
|
@ -16,6 +16,7 @@ from .convert_to_stroke import ConvertToStroke
|
||||||
from .cut_satin import CutSatin
|
from .cut_satin import CutSatin
|
||||||
from .cutwork_segmentation import CutworkSegmentation
|
from .cutwork_segmentation import CutworkSegmentation
|
||||||
from .density_map import DensityMap
|
from .density_map import DensityMap
|
||||||
|
from .display_stacking_order import DisplayStackingOrder
|
||||||
from .duplicate_params import DuplicateParams
|
from .duplicate_params import DuplicateParams
|
||||||
from .element_info import ElementInfo
|
from .element_info import ElementInfo
|
||||||
from .fill_to_stroke import FillToStroke
|
from .fill_to_stroke import FillToStroke
|
||||||
|
@ -71,6 +72,7 @@ __all__ = extensions = [ApplyThreadlist,
|
||||||
CutSatin,
|
CutSatin,
|
||||||
CutworkSegmentation,
|
CutworkSegmentation,
|
||||||
DensityMap,
|
DensityMap,
|
||||||
|
DisplayStackingOrder,
|
||||||
DuplicateParams,
|
DuplicateParams,
|
||||||
ElementInfo,
|
ElementInfo,
|
||||||
FillToStroke,
|
FillToStroke,
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
# Authors: see git history
|
||||||
|
#
|
||||||
|
# Copyright (c) 2022 Authors
|
||||||
|
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||||
|
|
||||||
|
import inkex
|
||||||
|
|
||||||
|
from ..i18n import _
|
||||||
|
from ..svg.tags import INKSCAPE_GROUPMODE, INKSCAPE_LABEL
|
||||||
|
from .base import InkstitchExtension
|
||||||
|
|
||||||
|
|
||||||
|
class DisplayStackingOrder(InkstitchExtension):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
InkstitchExtension.__init__(self, *args, **kwargs)
|
||||||
|
self.arg_parser.add_argument("-s", "--font_size", type=int, default=4, dest="font_size")
|
||||||
|
|
||||||
|
def effect(self):
|
||||||
|
layer = self.create_layer()
|
||||||
|
|
||||||
|
nodes = self.get_nodes()
|
||||||
|
for i, node in enumerate(nodes):
|
||||||
|
if node.style['fill'] != 'none':
|
||||||
|
position = node.bounding_box(node.composed_transform()).minimum
|
||||||
|
self.insert_stacking_num(layer, i + 1, position)
|
||||||
|
else:
|
||||||
|
path = node.get_path().transform(node.composed_transform())
|
||||||
|
position = next(path.end_points)
|
||||||
|
self.insert_stacking_num(layer, i + 1, position)
|
||||||
|
|
||||||
|
# remove layer if empty
|
||||||
|
if len(layer) == 0:
|
||||||
|
self.svg.remove(layer)
|
||||||
|
|
||||||
|
def insert_stacking_num(self, layer, num, position):
|
||||||
|
text = inkex.TextElement(attrib={
|
||||||
|
'x': str(position[0]),
|
||||||
|
'y': str(position[1])
|
||||||
|
})
|
||||||
|
text.style = inkex.Style(f"text-anchor: middle;text-align: center;dominant-baseline: middle;font-size: { self.options.font_size }")
|
||||||
|
tspan = inkex.Tspan()
|
||||||
|
tspan.text = str(num)
|
||||||
|
text.add(tspan)
|
||||||
|
layer.add(text)
|
||||||
|
|
||||||
|
def create_layer(self):
|
||||||
|
layer = self.svg.find(".//*[@id='__inkstitch_stacking_order__']")
|
||||||
|
|
||||||
|
# Remove the existing layer
|
||||||
|
if layer is not None:
|
||||||
|
layer.getparent().remove(layer)
|
||||||
|
|
||||||
|
layer = inkex.Group(attrib={
|
||||||
|
'id': '__inkstitch_stacking_order__',
|
||||||
|
INKSCAPE_LABEL: _('Stacking Order'),
|
||||||
|
INKSCAPE_GROUPMODE: 'layer',
|
||||||
|
})
|
||||||
|
self.svg.append(layer)
|
||||||
|
|
||||||
|
return layer
|
|
@ -7,7 +7,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<inkscape-extension translationdomain="inkstitch" xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||||
|
<name>Display stacking order</name>
|
||||||
|
<id>org.inkstitch.display_stacking_order</id>
|
||||||
|
<param name="extension" type="string" gui-hidden="true">display_stacking_order</param>
|
||||||
|
<effect>
|
||||||
|
<object-type>all</object-type>
|
||||||
|
<effects-menu>
|
||||||
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
|
<submenu name="Visualize and Export" />
|
||||||
|
</submenu>
|
||||||
|
</effects-menu>
|
||||||
|
</effect>
|
||||||
|
<param name="font_size" type="int" min="0" max="100" gui-text="Font size">4</param>
|
||||||
|
<script>
|
||||||
|
{{ command_tag | safe }}
|
||||||
|
</script>
|
||||||
|
</inkscape-extension>
|
|
@ -11,7 +11,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
<object-type>all</object-type>
|
<object-type>all</object-type>
|
||||||
<effects-menu>
|
<effects-menu>
|
||||||
<submenu name="Ink/Stitch" translatable="no">
|
<submenu name="Ink/Stitch" translatable="no">
|
||||||
<submenu name="Visualise and Export" />
|
<submenu name="Visualize and Export" />
|
||||||
</submenu>
|
</submenu>
|
||||||
</effects-menu>
|
</effects-menu>
|
||||||
</effect>
|
</effect>
|
||||||
|
|
Ładowanie…
Reference in New Issue