kopia lustrzana https://github.com/inkstitch/inkstitch
Add apply palette extension (#2738)
* add apply palette extension * thread catalog: apply palette: do not overwrite cutwork settingspull/2776/head
rodzic
3121bbaedf
commit
4749eca8fd
|
@ -3,8 +3,7 @@
|
|||
# Copyright (c) 2010 Authors
|
||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||
|
||||
from lib.extensions.troubleshoot import Troubleshoot
|
||||
|
||||
from .apply_palette import ApplyPalette
|
||||
from .apply_threadlist import ApplyThreadlist
|
||||
from .auto_run import AutoRun
|
||||
from .auto_satin import AutoSatin
|
||||
|
@ -30,6 +29,7 @@ from .install_custom_palette import InstallCustomPalette
|
|||
from .jump_to_stroke import JumpToStroke
|
||||
from .layer_commands import LayerCommands
|
||||
from .lettering import Lettering
|
||||
from .lettering_along_path import LetteringAlongPath
|
||||
from .lettering_custom_font_dir import LetteringCustomFontDir
|
||||
from .lettering_force_lock_stitches import LetteringForceLockStitches
|
||||
from .lettering_generate_json import LetteringGenerateJson
|
||||
|
@ -55,13 +55,13 @@ from .stitch_plan_preview import StitchPlanPreview
|
|||
from .stitch_plan_preview_undo import StitchPlanPreviewUndo
|
||||
from .stroke_to_lpe_satin import StrokeToLpeSatin
|
||||
from .test_swatches import TestSwatches
|
||||
from .troubleshoot import Troubleshoot
|
||||
from .update_svg import UpdateSvg
|
||||
from .zigzag_line_to_satin import ZigzagLineToSatin
|
||||
from .zip import Zip
|
||||
|
||||
from.lettering_along_path import LetteringAlongPath
|
||||
|
||||
__all__ = extensions = [ApplyThreadlist,
|
||||
__all__ = extensions = [ApplyPalette,
|
||||
ApplyThreadlist,
|
||||
AutoRun,
|
||||
AutoSatin,
|
||||
BreakApart,
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
# Authors: see git history
|
||||
#
|
||||
# Copyright (c) 2024 Authors
|
||||
# Licensed under the GNU GPL version 3.0 or later. See the file LICENSE for details.
|
||||
|
||||
from ..elements import FillStitch
|
||||
from ..threads import ThreadCatalog, ThreadColor
|
||||
from .base import InkstitchExtension
|
||||
|
||||
|
||||
class ApplyPalette(InkstitchExtension):
|
||||
'''
|
||||
Applies colors of a color palette to elements
|
||||
'''
|
||||
def __init__(self, *args, **kwargs):
|
||||
InkstitchExtension.__init__(self, *args, **kwargs)
|
||||
self.arg_parser.add_argument("-o", "--tabs")
|
||||
self.arg_parser.add_argument("-t", "--palette", type=str, default=None, dest="palette")
|
||||
|
||||
def effect(self):
|
||||
# Remove selection, we want all the elements in the document
|
||||
self.svg.selection.clear()
|
||||
|
||||
if not self.get_elements():
|
||||
return
|
||||
|
||||
palette_name = self.options.palette
|
||||
palette = ThreadCatalog().get_palette_by_name(palette_name)
|
||||
|
||||
# Iterate through the color blocks to apply colors
|
||||
for element in self.elements:
|
||||
nearest_color = palette.nearest_color(ThreadColor(element.color))
|
||||
if isinstance(element, FillStitch):
|
||||
element.node.style['fill'] = nearest_color.to_hex_str()
|
||||
else:
|
||||
element.node.style['stroke'] = nearest_color.to_hex_str()
|
||||
|
||||
metadata = self.get_inkstitch_metadata()
|
||||
metadata['thread-palette'] = palette_name
|
|
@ -97,6 +97,11 @@ class _ThreadCatalog(Sequence):
|
|||
return palette
|
||||
|
||||
def apply_palette(self, stitch_plan, palette):
|
||||
for color_block in stitch_plan:
|
||||
if color_block.color.chart:
|
||||
# do not overwrite cutwork settings
|
||||
continue
|
||||
|
||||
for color_block in stitch_plan:
|
||||
nearest = palette.nearest_color(color_block.color)
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<inkscape-extension translationdomain="inkstitch" xmlns="http://www.inkscape.org/namespace/inkscape/extension">
|
||||
<name>Apply Palette</name>
|
||||
<id>org.{{ id_inkstitch }}.apply_palette</id>
|
||||
<param name="extension" type="string" gui-hidden="true">apply_palette</param>
|
||||
<param name="tabs" type="notebook">
|
||||
<page name="options" gui-text="Options">
|
||||
<param name="palette" type="optiongroup" appearance="combo" gui-text="Select color palette">
|
||||
{%- for item in threadcatalog %}
|
||||
<item value="{{ item }}">{{ item }}</item>
|
||||
{%- endfor %}
|
||||
</param>
|
||||
</page>
|
||||
<page name="info" gui-text="Help">
|
||||
<label>This extension applies nearest colors from chosen color palette to the elements in this document.</label>
|
||||
<spacer />
|
||||
<label>Get more information on our website</label>
|
||||
<label appearance="url">https://inkstitch.org/docs/thread-color/#apply-palette</label>
|
||||
</page>
|
||||
</param>
|
||||
<effect>
|
||||
<object-type>all</object-type>
|
||||
<effects-menu>
|
||||
<submenu name="{{ menu_inkstitch }}" translatable="no">
|
||||
<submenu name="Thread Color Management" />
|
||||
</submenu>
|
||||
</effects-menu>
|
||||
</effect>
|
||||
<script>
|
||||
{{ command_tag | safe }}
|
||||
</script>
|
||||
</inkscape-extension>
|
Ładowanie…
Reference in New Issue