summaryrefslogtreecommitdiffstats
path: root/share/extensions/webslicer_create_rect.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:24:48 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 18:24:48 +0000
commitcca66b9ec4e494c1d919bff0f71a820d8afab1fa (patch)
tree146f39ded1c938019e1ed42d30923c2ac9e86789 /share/extensions/webslicer_create_rect.py
parentInitial commit. (diff)
downloadinkscape-cca66b9ec4e494c1d919bff0f71a820d8afab1fa.tar.xz
inkscape-cca66b9ec4e494c1d919bff0f71a820d8afab1fa.zip
Adding upstream version 1.2.2.upstream/1.2.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'share/extensions/webslicer_create_rect.py')
-rwxr-xr-xshare/extensions/webslicer_create_rect.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/share/extensions/webslicer_create_rect.py b/share/extensions/webslicer_create_rect.py
new file mode 100755
index 0000000..c92a554
--- /dev/null
+++ b/share/extensions/webslicer_create_rect.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+#
+# Copyright (C) 2010 Aurelio A. Heckert, aurium (a) gmail dot com
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+
+from lxml import etree
+
+import inkex
+from webslicer_effect import WebSlicerMixin, is_empty
+
+
+class CreateRect(WebSlicerMixin, inkex.EffectExtension):
+ def add_arguments(self, pars):
+ pars.add_argument("--name")
+ pars.add_argument("--format", default="png")
+ pars.add_argument("--dpi", type=float)
+ pars.add_argument("--dimension")
+ pars.add_argument("--bg-color")
+ pars.add_argument("--quality", type=int)
+ pars.add_argument("--gif-type")
+ pars.add_argument("--palette-size", type=int)
+ pars.add_argument("--html-id")
+ pars.add_argument("--html-class")
+ pars.add_argument("--layout-disposition")
+ pars.add_argument("--layout-position-anchor")
+ # inkscape param workaround
+ pars.add_argument("--tab")
+
+ def unique_slice_name(self):
+ name = self.options.name
+ el = self.svg.xpath('//*[@id="' + name + '"]')
+ if len(el) > 0:
+ if name[-3:] == "-00":
+ name = name[:-3]
+ num = 0
+ num_s = "00"
+ while len(el) > 0:
+ num += 1
+ num_s = str(num)
+ if len(num_s) == 1:
+ num_s = "0" + num_s
+ el = self.svg.xpath('//*[@id="' + name + "-" + num_s + '"]')
+ self.options.name = name + "-" + num_s
+
+ def validate_options(self):
+ self.options.format = self.options.format.lower()
+ if not is_empty(self.options.dimension):
+ self.options.dimension
+
+ def effect(self):
+ scale = self.svg.unittouu("1px") # convert to document units
+ self.validate_options()
+ layer = self.get_slicer_layer(True)
+ # TODO: get selected elements to define location and size
+ rect = etree.SubElement(layer, "rect")
+ if is_empty(self.options.name):
+ self.options.name = "slice-00"
+ self.unique_slice_name()
+ rect.set("id", self.options.name)
+ rect.set("fill", "red")
+ rect.set("opacity", "0.5")
+ rect.set("x", str(-scale * 100))
+ rect.set("y", str(-scale * 100))
+ rect.set("width", str(scale * 200))
+ rect.set("height", str(scale * 200))
+ desc = etree.SubElement(rect, "desc")
+ conf_txt = "format:" + self.options.format + "\n"
+ if not is_empty(self.options.dpi):
+ conf_txt += "dpi:" + str(self.options.dpi) + "\n"
+ if not is_empty(self.options.html_id):
+ conf_txt += "html-id:" + self.options.html_id
+ desc.text = self.get_conf_text_from_list(self.get_conf_list())
+
+ def get_conf_list(self):
+ conf_list = ["format"]
+ if self.options.format == "gif":
+ conf_list.extend(["gif_type", "palette_size"])
+ if self.options.format == "jpg":
+ conf_list.extend(["quality"])
+ conf_list.extend(
+ [
+ "dpi",
+ "dimension",
+ "bg_color",
+ "html_id",
+ "html_class",
+ "layout_disposition",
+ "layout_position_anchor",
+ ]
+ )
+ return conf_list
+
+
+if __name__ == "__main__":
+ CreateRect().run()