index 78c8521f14772c2349132ec65d725ba13d4fa61e..64b22f35227d1a16a9c8cd6c9d682ec4ffc07dcd 100644 (file)
-#!/usr/bin/env python
-'''
-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
-'''
+#
+# 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
+#
+"""
+Python barcode renderer for Code39 barcodes. Designed for use with Inkscape.
+"""
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',
+ '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 = '-';
+ # 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';
+ 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'
+ # 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;
+ self.inclabel = text
+ return encoded;