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/Code39.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/Code39.py')
| -rw-r--r-- | share/extensions/Barcode/Code39.py | 100 |
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; + |
