summaryrefslogtreecommitdiffstats
path: root/share/extensions/kochify_load.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/kochify_load.py')
-rwxr-xr-xshare/extensions/kochify_load.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/share/extensions/kochify_load.py b/share/extensions/kochify_load.py
new file mode 100755
index 000000000..d50c498c0
--- /dev/null
+++ b/share/extensions/kochify_load.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+'''
+Copyright (C) 2005 Aaron Spike, aaron@ekips.org
+
+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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+'''
+import math, tempfile, cPickle, inkex, simplepath
+
+def findend(d):
+ end = []
+ subPathStart = []
+ for cmd,params in d:
+ if cmd == 'M':
+ subPathStart = params[-2:]
+ if cmd == 'Z':
+ end = subPathStart[:]
+ else:
+ end = params[-2:]
+ return end
+
+class LoadKochify(inkex.Effect):
+ def effect(self):
+ for id, node in self.selected.iteritems():
+ if node.tagName == 'path':
+ d = simplepath.parsePath(node.attributes.getNamedItem('d').value)
+ start = d[0][1][-2:]
+ end = findend(d)
+ while start == end and len(d):
+ d = d[:-1]
+ end = findend(d)
+ if not end:
+ break
+ dx = end[0]-start[0]
+ dy = end[1]-start[1]
+ length = math.sqrt((dx**2) + (dy**2))
+ angle = math.atan2(dy,dx)
+ endsinz = False
+ if d[-1][0]=='Z':
+ endsinz = True
+ path = {'start': start, 'end': end, 'endsinz': endsinz,
+ 'length': length, 'angle': angle, 'path': d}
+ f = open(tempfile.gettempdir() + '/kochify.bin', 'w')
+ cPickle.dump(path, f)
+ f.close()
+ break
+
+e = LoadKochify()
+e.affect()