summaryrefslogtreecommitdiffstats
path: root/share/extensions/hpgl_input.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xshare/extensions/hpgl_input.py76
1 files changed, 76 insertions, 0 deletions
diff --git a/share/extensions/hpgl_input.py b/share/extensions/hpgl_input.py
new file mode 100755
index 0000000..0c998d6
--- /dev/null
+++ b/share/extensions/hpgl_input.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+# coding=utf-8
+#
+# Copyright (C) 2013 Public Domain
+# 2018 Martin Owens <doctormo@gmail.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.
+#
+
+import sys
+import hpgl_decoder
+import inkex
+from inkex.localization import inkex_gettext as _
+
+
+class HpglInput(inkex.InputExtension):
+ def add_arguments(self, pars):
+ pars.add_argument(
+ "--resolutionX", type=float, default=1016.0, help="Resolution X (dpi)"
+ )
+ pars.add_argument(
+ "--resolutionY", type=float, default=1016.0, help="Resolution Y (dpi)"
+ )
+ pars.add_argument(
+ "--showMovements",
+ type=inkex.Boolean,
+ default=False,
+ help="Show Movements between paths",
+ )
+
+ def load(self, stream):
+ return b";".join(line.strip() for line in stream).decode()
+
+ def effect(self):
+ # interpret HPGL data
+ myHpglDecoder = hpgl_decoder.hpglDecoder(self.document, self.options)
+ self.document = None
+
+ try:
+ doc, warnings = myHpglDecoder.get_svg()
+ except Exception as inst:
+ if inst.args[0] == "NO_HPGL_DATA":
+ # issue error if no hpgl data found
+ inkex.errormsg(_("No HPGL data found."))
+ exit(1)
+ else:
+ type, value, traceback = sys.exc_info()
+ raise ValueError("", type, value).with_traceback(traceback)
+
+ # issue warning if unknown commands where found
+ if "UNKNOWN_COMMANDS" in warnings:
+ inkex.errormsg(
+ _(
+ "The HPGL data contained unknown (unsupported) commands, "
+ "there is a possibility that the drawing is missing some content."
+ )
+ )
+
+ # deliver document to inkscape
+ self.document = doc
+
+
+if __name__ == "__main__":
+ HpglInput().run()