File indexing completed on 2024-05-12 04:43:19
0001 /* This file is part of the KDE project 0002 * Copyright (C) 2001-2007 by OpenMFG, LLC (info@openmfg.com) 0003 * Copyright (C) 2007-2008 by Adam Pigg (adam@piggz.co.uk) 0004 * Copyright (C) 2015 Jarosław Staniek <staniek@kde.org> 0005 * 0006 * This library is free software; you can redistribute it and/or 0007 * modify it under the terms of the GNU Lesser General Public 0008 * License as published by the Free Software Foundation; either 0009 * version 2.1 of the License, or (at your option) any later version. 0010 * 0011 * This library is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 * Lesser General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU Lesser General Public 0017 * License along with this library. If not, see <http://www.gnu.org/licenses/>. 0018 */ 0019 0020 /* 0021 * This file contains the code that will render the extended 3of9 barcode. 0022 * This code will parse a string and build a compliant 3of9 string and then 0023 * call the 3of9 renderer to do the actual drawing. 0024 */ 0025 0026 #include <QString> 0027 #include <QRect> 0028 0029 #include "barcodes.h" 0030 0031 class _ext3of9map 0032 { 0033 public: 0034 _ext3of9map(const char c, const char *s) 0035 : code(c), conversion(QLatin1String(s)) 0036 { 0037 } 0038 const char code; 0039 const QString conversion; 0040 }; 0041 const _ext3of9map ext3of9map[] = { 0042 _ext3of9map('\0' , "%U"), // NUL 0043 _ext3of9map('\001' , "$A"), // SOH 0044 _ext3of9map('\002' , "$B"), // STX 0045 _ext3of9map('\003' , "$C"), // ETX 0046 _ext3of9map('\004' , "$D"), // EOT 0047 _ext3of9map('\005' , "$E"), // ENQ 0048 _ext3of9map('\006' , "$F"), // ACK 0049 _ext3of9map('\007' , "$G"), // BEL 0050 _ext3of9map('\010' , "$H"), // BS 0051 _ext3of9map('\011' , "$I"), // HT 0052 _ext3of9map('\012' , "$J"), // LF 0053 _ext3of9map('\013' , "$K"), // VT 0054 _ext3of9map('\014' , "$L"), // FF 0055 _ext3of9map('\015' , "$M"), // CR 0056 _ext3of9map('\016' , "$N"), // SO 0057 _ext3of9map('\017' , "$O"), // SI 0058 _ext3of9map('\020' , "$P"), // DLE 0059 _ext3of9map('\021' , "$Q"), // DC1 0060 _ext3of9map('\022' , "$R"), // DC2 0061 _ext3of9map('\023' , "$S"), // DC3 0062 _ext3of9map('\024' , "$T"), // DC4 0063 _ext3of9map('\025' , "$U"), // NAK 0064 _ext3of9map('\026' , "$V"), // SYN 0065 _ext3of9map('\027' , "$W"), // ETB 0066 _ext3of9map('\030' , "$X"), // CAN 0067 _ext3of9map('\031' , "$Y"), // EM 0068 _ext3of9map('\032' , "$Z"), // SUB 0069 _ext3of9map('\033' , "%A"), // ESC 0070 _ext3of9map('\034' , "%B"), // FS 0071 _ext3of9map('\035' , "%C"), // GS 0072 _ext3of9map('\036' , "%D"), // RS 0073 _ext3of9map('\037' , "%E"), // US 0074 _ext3of9map(' ' , " "), // SPACE 0075 _ext3of9map('!' , "/A"), 0076 _ext3of9map('"' , "/B"), 0077 _ext3of9map('#' , "/C"), 0078 _ext3of9map('$' , "/D"), 0079 _ext3of9map('%' , "/E"), 0080 _ext3of9map('&' , "/F"), 0081 _ext3of9map('\'' , "/G"), 0082 _ext3of9map('(' , "/H"), 0083 _ext3of9map(')' , "/I"), 0084 _ext3of9map('*' , "/J"), 0085 _ext3of9map('+' , "/K"), 0086 _ext3of9map(',' , "/L"), 0087 _ext3of9map('-' , "-"), // /M 0088 _ext3of9map('.' , "."), // /N 0089 _ext3of9map('/' , "/O"), 0090 _ext3of9map('0' , "0"), // /P 0091 _ext3of9map('1' , "1"), // /Q 0092 _ext3of9map('2' , "2"), // /R 0093 _ext3of9map('3' , "3"), // /S 0094 _ext3of9map('4' , "4"), // /T 0095 _ext3of9map('5' , "5"), // /U 0096 _ext3of9map('6' , "6"), // /V 0097 _ext3of9map('7' , "7"), // /W 0098 _ext3of9map('8' , "8"), // /X 0099 _ext3of9map('9' , "9"), // /Y 0100 _ext3of9map(':' , "/Z"), 0101 _ext3of9map(';' , "%F"), 0102 _ext3of9map('<' , "%G"), 0103 _ext3of9map('=' , "%H"), 0104 _ext3of9map('>' , "%I"), 0105 _ext3of9map('?' , "%J"), 0106 _ext3of9map('@' , "%V"), 0107 _ext3of9map('A' , "A"), 0108 _ext3of9map('B' , "B"), 0109 _ext3of9map('C' , "C"), 0110 _ext3of9map('D' , "D"), 0111 _ext3of9map('E' , "E"), 0112 _ext3of9map('F' , "F"), 0113 _ext3of9map('G' , "G"), 0114 _ext3of9map('H' , "H"), 0115 _ext3of9map('I' , "I"), 0116 _ext3of9map('J' , "J"), 0117 _ext3of9map('K' , "K"), 0118 _ext3of9map('L' , "L"), 0119 _ext3of9map('M' , "M"), 0120 _ext3of9map('N' , "N"), 0121 _ext3of9map('O' , "O"), 0122 _ext3of9map('P' , "P"), 0123 _ext3of9map('Q' , "Q"), 0124 _ext3of9map('R' , "R"), 0125 _ext3of9map('S' , "S"), 0126 _ext3of9map('T' , "T"), 0127 _ext3of9map('U' , "U"), 0128 _ext3of9map('V' , "V"), 0129 _ext3of9map('W' , "W"), 0130 _ext3of9map('X' , "X"), 0131 _ext3of9map('Y' , "Y"), 0132 _ext3of9map('Z' , "Z"), 0133 _ext3of9map('[' , "%K"), 0134 _ext3of9map('\\' , "%L"), 0135 _ext3of9map(']' , "%M"), 0136 _ext3of9map('^' , "%N"), 0137 _ext3of9map('_' , "%O"), 0138 _ext3of9map('`' , "%W"), 0139 _ext3of9map('a' , "+A"), 0140 _ext3of9map('b' , "+B"), 0141 _ext3of9map('c' , "+C"), 0142 _ext3of9map('d' , "+D"), 0143 _ext3of9map('e' , "+E"), 0144 _ext3of9map('f' , "+F"), 0145 _ext3of9map('g' , "+G"), 0146 _ext3of9map('h' , "+H"), 0147 _ext3of9map('i' , "+I"), 0148 _ext3of9map('j' , "+J"), 0149 _ext3of9map('k' , "+K"), 0150 _ext3of9map('l' , "+L"), 0151 _ext3of9map('m' , "+M"), 0152 _ext3of9map('n' , "+N"), 0153 _ext3of9map('o' , "+O"), 0154 _ext3of9map('p' , "+P"), 0155 _ext3of9map('q' , "+Q"), 0156 _ext3of9map('r' , "+R"), 0157 _ext3of9map('s' , "+S"), 0158 _ext3of9map('t' , "+T"), 0159 _ext3of9map('u' , "+U"), 0160 _ext3of9map('v' , "+V"), 0161 _ext3of9map('w' , "+W"), 0162 _ext3of9map('x' , "+X"), 0163 _ext3of9map('y' , "+Y"), 0164 _ext3of9map('z' , "+Z"), 0165 _ext3of9map('{' , "%P"), 0166 _ext3of9map('|' , "%Q"), 0167 _ext3of9map('}' , "%R"), 0168 _ext3of9map('~' , "%S"), 0169 _ext3of9map('\177' , "%T"), // DEL 0170 0171 _ext3of9map(-1 , nullptr) 0172 }; 0173 0174 inline QString convertTo3of9(char code) 0175 { 0176 for (int i = 0; !ext3of9map[i].conversion.isEmpty(); i++) 0177 if (ext3of9map[i].code == code) 0178 return ext3of9map[i].conversion; 0179 return QString(); 0180 } 0181 0182 QString convertTo3of9(const QString &str) 0183 { 0184 QString result; 0185 for (int i = 0; i < str.length(); i++) { 0186 result += convertTo3of9(str.at(i).toLatin1()); 0187 } 0188 return result; 0189 } 0190 0191 void renderExtended3of9(OROPage * page, const QRectF & r, const QString & str, Qt::Alignment align) 0192 { 0193 render3of9(page, r, convertTo3of9(str), align); 0194 }