- return rowOffset;
- }
-
- int* UPCEReader::decodeEnd(Ref<BitArray> row, int endStart) {
- return findGuardPattern(row, endStart, true, MIDDLE_END_PATTERN,
- sizeof(MIDDLE_END_PATTERN) / sizeof(int));
- }
-
- bool UPCEReader::checkChecksum(std::string s){
- return UPCEANReader::checkChecksum(convertUPCEtoUPCA(s));
- }
-
-
- bool UPCEReader::determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound) {
- for (int numSys = 0; numSys <= 1; numSys++) {
- for (int d = 0; d < 10; d++) {
- if (lgPatternFound == NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) {
- resultString.insert(0, 1, (char) ('0' + numSys));
- resultString.append(1, (char) ('0' + d));
- return true;
- }
- }
- }
- return false;
- }
-
- /**
- * Expands a UPC-E value back into its full, equivalent UPC-A code value.
- *
- * @param upce UPC-E code as string of digits
- * @return equivalent UPC-A code as string of digits
- */
- std::string UPCEReader::convertUPCEtoUPCA(std::string upce) {
- std::string result;
- result.append(1, upce[0]);
- char lastChar = upce[6];
- switch (lastChar) {
- case '0':
- case '1':
- case '2':
- result.append(upce.substr(1,2));
- result.append(1, lastChar);
- result.append("0000");
- result.append(upce.substr(3,3));
- break;
- case '3':
- result.append(upce.substr(1,3));
- result.append("00000");
- result.append(upce.substr(4,2));
- break;
- case '4':
- result.append(upce.substr(1,4));
- result.append("00000");
- result.append(1, upce[5]);
- break;
- default:
- result.append(upce.substr(1,5));
- result.append("0000");
- result.append(1, lastChar);
- break;
- }
- result.append(1, upce[7]);
- return result;
- }
-
-
- BarcodeFormat UPCEReader::getBarcodeFormat() {
- return BarcodeFormat_UPC_E;
- }
- }
+ return rowOffset;
+ }
+
+ int* UPCEReader::decodeEnd(Ref<BitArray> row, int endStart) {
+ return findGuardPattern(row, endStart, true, MIDDLE_END_PATTERN,
+ sizeof(MIDDLE_END_PATTERN) / sizeof(int));
+ }
+
+ bool UPCEReader::checkChecksum(std::string s){
+ return UPCEANReader::checkChecksum(convertUPCEtoUPCA(s));
+ }
+
+
+ bool UPCEReader::determineNumSysAndCheckDigit(std::string& resultString, int lgPatternFound) {
+ for (int numSys = 0; numSys <= 1; numSys++) {
+ for (int d = 0; d < 10; d++) {
+ if (lgPatternFound == NUMSYS_AND_CHECK_DIGIT_PATTERNS[numSys][d]) {
+ resultString.insert(0, 1, (char) ('0' + numSys));
+ resultString.append(1, (char) ('0' + d));
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Expands a UPC-E value back into its full, equivalent UPC-A code value.
+ *
+ * @param upce UPC-E code as string of digits
+ * @return equivalent UPC-A code as string of digits
+ */
+ std::string UPCEReader::convertUPCEtoUPCA(std::string upce) {
+ std::string result;
+ result.append(1, upce[0]);
+ char lastChar = upce[6];
+ switch (lastChar) {
+ case '0':
+ case '1':
+ case '2':
+ result.append(upce.substr(1,2));
+ result.append(1, lastChar);
+ result.append("0000");
+ result.append(upce.substr(3,3));
+ break;
+ case '3':
+ result.append(upce.substr(1,3));
+ result.append("00000");
+ result.append(upce.substr(4,2));
+ break;
+ case '4':
+ result.append(upce.substr(1,4));
+ result.append("00000");
+ result.append(1, upce[5]);
+ break;
+ default:
+ result.append(upce.substr(1,5));
+ result.append("0000");
+ result.append(1, lastChar);
+ break;
+ }
+ result.append(1, upce[7]);
+ return result;
+ }
+
+
+ BarcodeFormat UPCEReader::getBarcodeFormat() {
+ return BarcodeFormat_UPC_E;
+ }
+ }