summaryrefslogtreecommitdiffstats
path: root/share/extensions/Barcode/Code39Ext.py
diff options
context:
space:
mode:
authorAaron Spike <aaron@ekips.org>2007-04-25 00:53:02 +0000
committeracspike <acspike@users.sourceforge.net>2007-04-25 00:53:02 +0000
commit16246cb0d733077d7c71fe1663a2af4340c6c953 (patch)
treef8242fe229d98a0bfea4e6215a584f1887ccb100 /share/extensions/Barcode/Code39Ext.py
parentadded missing extensions to POFILES.in (diff)
downloadinkscape-16246cb0d733077d7c71fe1663a2af4340c6c953.tar.gz
inkscape-16246cb0d733077d7c71fe1663a2af4340c6c953.zip
Add doctormo's barcode extension. Patch 1681456. Still need to make it work with the make-chinery for installation and distribution.
(bzr r2958)
Diffstat (limited to 'share/extensions/Barcode/Code39Ext.py')
-rw-r--r--share/extensions/Barcode/Code39Ext.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/share/extensions/Barcode/Code39Ext.py b/share/extensions/Barcode/Code39Ext.py
new file mode 100644
index 000000000..d1682a641
--- /dev/null
+++ b/share/extensions/Barcode/Code39Ext.py
@@ -0,0 +1,62 @@
+'''
+Copyright (C) 2007 Martin Owens
+
+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 Code39
+
+encode = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
+
+map = {}
+
+i = 0
+for char in encode:
+ map[char] = i
+ i = i + 1
+
+# Extended encoding maps for full ASCII Code93
+def getMap(array):
+ result = {}
+ y = 0
+ for x in array:
+ result[chr(x)] = encode[y]
+ y = y + 1
+
+ return result;
+
+# MapA is eclectic, but B, C, D are all ASCII ranges
+mapA = getMap([27,28,29,30,31,59,60,61,62,63,91,92,93,94,95,123,124,125,126,127,0,64,96,127,127,127]) # %
+mapB = getMap(range(1, 26)) # $
+mapC = getMap(range(33, 58)) # /
+mapD = getMap(range(97, 122)) # +
+
+class Object(Code39.Object):
+ def encode(self, text):
+ # We are only going to extend the Code39 barcodes
+ result = ''
+ for char in text:
+ if mapA.has_key(char):
+ char = '%' + mapA[char]
+ elif mapB.has_key(char):
+ char = '$' + mapB[char]
+ elif mapC.has_key(char):
+ char = '/' + mapC[char]
+ elif mapD.has_key(char):
+ char = '+' + mapD[char]
+ result = result + char
+
+ return Code39.Object.encode(self, result);
+