summaryrefslogtreecommitdiffstats
path: root/share/extensions/Barcode/Code39.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/Code39.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/Code39.py')
-rw-r--r--share/extensions/Barcode/Code39.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/share/extensions/Barcode/Code39.py b/share/extensions/Barcode/Code39.py
new file mode 100644
index 000000000..650d27d95
--- /dev/null
+++ b/share/extensions/Barcode/Code39.py
@@ -0,0 +1,100 @@
+'''
+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
+'''
+
+from Base import Barcode
+
+encoding = {
+ '0' : '000110100',
+ '1' : '100100001',
+ '2' : '001100001',
+ '3' : '101100000',
+ '4' : '000110001',
+ '5' : '100110000',
+ '6' : '001110000',
+ '7' : '000100101',
+ '8' : '100100100',
+ '9' : '001100100',
+ 'A' : '100001001',
+ 'B' : '001001001',
+ 'C' : '101001000',
+ 'D' : '000011001',
+ 'E' : '100011000',
+ 'F' : '001011000',
+ 'G' : '000001101',
+ 'H' : '100001100',
+ 'I' : '001001100',
+ 'J' : '000011100',
+ 'K' : '100000011',
+ 'L' : '001000011',
+ 'M' : '101000010',
+ 'N' : '000010011',
+ 'O' : '100010010',
+ 'P' : '001010010',
+ 'Q' : '000000111',
+ 'R' : '100000110',
+ 'S' : '001000110',
+ 'T' : '000010110',
+ 'U' : '110000001',
+ 'V' : '011000001',
+ 'W' : '111000000',
+ 'X' : '010010001',
+ 'Y' : '110010000',
+ 'Z' : '011010000',
+ '-' : '010000101',
+ '*' : '010010100',
+ '+' : '010001010',
+ '$' : '010101000',
+ '%' : '000101010',
+ '/' : '010100010',
+ '.' : '110000100',
+ ' ' : '011000100',
+}
+
+class Object(Barcode):
+ # Convert a text into string binary of black and white markers
+ def encode(self, text):
+ text = text.upper()
+ self.label = text
+ text = '*' + text + '*'
+ result = ''
+ # It isposible for us to encode code39
+ # into full ascii, but this feature is
+ # not enabled here
+ for char in text:
+ if not encoding.has_key(char):
+ char = '-';
+
+ result = result + encoding[char] + '0';
+
+ # Now we need to encode the code39, best read
+ # the code to understand what it's up to:
+ encoded = '';
+ colour = '1'; # 1 = Black, 0 = White
+ for data in result:
+ if data == '1':
+ encoded = encoded + colour + colour
+ else:
+ encoded = encoded + colour
+ if colour == '1':
+ colour = '0'
+ else:
+ colour = '1'
+
+ self.inclabel = text
+ return encoded;
+