2
* OpenRPT report writer and rendering engine
3
* Copyright (C) 2001-2007 by OpenMFG, LLC (info@openmfg.com)
4
* Copyright (C) 2007-2008 by Adam Pigg (adam@piggz.co.uk)
6
* This library is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
11
* This library is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
21
* This file contains the code that will render the extended 3of9 barcode.
22
* This code will parse a string and build a compliant 3of9 string and then
23
* call the 3of9 renderer to do the actual drawing.
30
#include "barcodepaint.h"
35
_ext3of9map(const char c, const QString & s) {
36
code = c; conversion = s;
41
const _ext3of9map ext3of9map[] = {
42
_ext3of9map('\0' , "%U"), // NUL
43
_ext3of9map('\001' , "$A"), // SOH
44
_ext3of9map('\002' , "$B"), // STX
45
_ext3of9map('\003' , "$C"), // ETX
46
_ext3of9map('\004' , "$D"), // EOT
47
_ext3of9map('\005' , "$E"), // ENQ
48
_ext3of9map('\006' , "$F"), // ACK
49
_ext3of9map('\007' , "$G"), // BEL
50
_ext3of9map('\010' , "$H"), // BS
51
_ext3of9map('\011' , "$I"), // HT
52
_ext3of9map('\012' , "$J"), // LF
53
_ext3of9map('\013' , "$K"), // VT
54
_ext3of9map('\014' , "$L"), // FF
55
_ext3of9map('\015' , "$M"), // CR
56
_ext3of9map('\016' , "$N"), // SO
57
_ext3of9map('\017' , "$O"), // SI
58
_ext3of9map('\020' , "$P"), // DLE
59
_ext3of9map('\021' , "$Q"), // DC1
60
_ext3of9map('\022' , "$R"), // DC2
61
_ext3of9map('\023' , "$S"), // DC3
62
_ext3of9map('\024' , "$T"), // DC4
63
_ext3of9map('\025' , "$U"), // NAK
64
_ext3of9map('\026' , "$V"), // SYN
65
_ext3of9map('\027' , "$W"), // ETB
66
_ext3of9map('\030' , "$X"), // CAN
67
_ext3of9map('\031' , "$Y"), // EM
68
_ext3of9map('\032' , "$Z"), // SUB
69
_ext3of9map('\033' , "%A"), // ESC
70
_ext3of9map('\034' , "%B"), // FS
71
_ext3of9map('\035' , "%C"), // GS
72
_ext3of9map('\036' , "%D"), // RS
73
_ext3of9map('\037' , "%E"), // US
74
_ext3of9map(' ' , " "), // SPACE
75
_ext3of9map('!' , "/A"),
76
_ext3of9map('"' , "/B"),
77
_ext3of9map('#' , "/C"),
78
_ext3of9map('$' , "/D"),
79
_ext3of9map('%' , "/E"),
80
_ext3of9map('&' , "/F"),
81
_ext3of9map('\'' , "/G"),
82
_ext3of9map('(' , "/H"),
83
_ext3of9map(')' , "/I"),
84
_ext3of9map('*' , "/J"),
85
_ext3of9map('+' , "/K"),
86
_ext3of9map(',' , "/L"),
87
_ext3of9map('-' , "-"), // /M
88
_ext3of9map('.' , "."), // /N
89
_ext3of9map('/' , "/O"),
90
_ext3of9map('0' , "0"), // /P
91
_ext3of9map('1' , "1"), // /Q
92
_ext3of9map('2' , "2"), // /R
93
_ext3of9map('3' , "3"), // /S
94
_ext3of9map('4' , "4"), // /T
95
_ext3of9map('5' , "5"), // /U
96
_ext3of9map('6' , "6"), // /V
97
_ext3of9map('7' , "7"), // /W
98
_ext3of9map('8' , "8"), // /X
99
_ext3of9map('9' , "9"), // /Y
100
_ext3of9map(':' , "/Z"),
101
_ext3of9map(';' , "%F"),
102
_ext3of9map('<' , "%G"),
103
_ext3of9map('=' , "%H"),
104
_ext3of9map('>' , "%I"),
105
_ext3of9map('?' , "%J"),
106
_ext3of9map('@' , "%V"),
107
_ext3of9map('A' , "A"),
108
_ext3of9map('B' , "B"),
109
_ext3of9map('C' , "C"),
110
_ext3of9map('D' , "D"),
111
_ext3of9map('E' , "E"),
112
_ext3of9map('F' , "F"),
113
_ext3of9map('G' , "G"),
114
_ext3of9map('H' , "H"),
115
_ext3of9map('I' , "I"),
116
_ext3of9map('J' , "J"),
117
_ext3of9map('K' , "K"),
118
_ext3of9map('L' , "L"),
119
_ext3of9map('M' , "M"),
120
_ext3of9map('N' , "N"),
121
_ext3of9map('O' , "O"),
122
_ext3of9map('P' , "P"),
123
_ext3of9map('Q' , "Q"),
124
_ext3of9map('R' , "R"),
125
_ext3of9map('S' , "S"),
126
_ext3of9map('T' , "T"),
127
_ext3of9map('U' , "U"),
128
_ext3of9map('V' , "V"),
129
_ext3of9map('W' , "W"),
130
_ext3of9map('X' , "X"),
131
_ext3of9map('Y' , "Y"),
132
_ext3of9map('Z' , "Z"),
133
_ext3of9map('[' , "%K"),
134
_ext3of9map('\\' , "%L"),
135
_ext3of9map(']' , "%M"),
136
_ext3of9map('^' , "%N"),
137
_ext3of9map('_' , "%O"),
138
_ext3of9map('`' , "%W"),
139
_ext3of9map('a' , "+A"),
140
_ext3of9map('b' , "+B"),
141
_ext3of9map('c' , "+C"),
142
_ext3of9map('d' , "+D"),
143
_ext3of9map('e' , "+E"),
144
_ext3of9map('f' , "+F"),
145
_ext3of9map('g' , "+G"),
146
_ext3of9map('h' , "+H"),
147
_ext3of9map('i' , "+I"),
148
_ext3of9map('j' , "+J"),
149
_ext3of9map('k' , "+K"),
150
_ext3of9map('l' , "+L"),
151
_ext3of9map('m' , "+M"),
152
_ext3of9map('n' , "+N"),
153
_ext3of9map('o' , "+O"),
154
_ext3of9map('p' , "+P"),
155
_ext3of9map('q' , "+Q"),
156
_ext3of9map('r' , "+R"),
157
_ext3of9map('s' , "+S"),
158
_ext3of9map('t' , "+T"),
159
_ext3of9map('u' , "+U"),
160
_ext3of9map('v' , "+V"),
161
_ext3of9map('w' , "+W"),
162
_ext3of9map('x' , "+X"),
163
_ext3of9map('y' , "+Y"),
164
_ext3of9map('z' , "+Z"),
165
_ext3of9map('{' , "%P"),
166
_ext3of9map('|' , "%Q"),
167
_ext3of9map('}' , "%R"),
168
_ext3of9map('~' , "%S"),
169
_ext3of9map('\177' , "%T"), // DEL
174
QString convertTo3of9P(QChar c)
176
for (int i = 0; !ext3of9map[i].conversion.isEmpty(); i++)
177
if (ext3of9map[i].code == c.toAscii())
178
return ext3of9map[i].conversion;
183
void renderExtended3of9(const QRect & r, const QString & str, int align, QPainter * pPainter)
188
for (int i = 0; i < str.length(); i++) {
190
new_str += convertTo3of9P(c);
193
render3of9(r, new_str, align, pPainter);