diff options
| author | Aaron Spike <aaron@ekips.org> | 2007-04-25 00:53:02 +0000 |
|---|---|---|
| committer | acspike <acspike@users.sourceforge.net> | 2007-04-25 00:53:02 +0000 |
| commit | 16246cb0d733077d7c71fe1663a2af4340c6c953 (patch) | |
| tree | f8242fe229d98a0bfea4e6215a584f1887ccb100 /share/extensions/Barcode/Code39Ext.py | |
| parent | added missing extensions to POFILES.in (diff) | |
| download | inkscape-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.py | 62 |
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); + |
