diff --git a/cpp/core/src/zxing/LuminanceSource.cpp b/cpp/core/src/zxing/LuminanceSource.cpp index d7af3756b..6c8ef1e6e 100644 --- a/cpp/core/src/zxing/LuminanceSource.cpp +++ b/cpp/core/src/zxing/LuminanceSource.cpp @@ -28,7 +28,7 @@ LuminanceSource::LuminanceSource() { LuminanceSource::~LuminanceSource() { } -unsigned char* LuminanceSource::copyMatrix() const { +unsigned char* LuminanceSource::copyMatrix() { int width = getWidth(); int height = getHeight(); unsigned char* matrix = new unsigned char[width*height]; diff --git a/cpp/core/src/zxing/LuminanceSource.h b/cpp/core/src/zxing/LuminanceSource.h index fcc65883f..e23621ef9 100644 --- a/cpp/core/src/zxing/LuminanceSource.h +++ b/cpp/core/src/zxing/LuminanceSource.h @@ -30,11 +30,11 @@ public: LuminanceSource(); virtual ~LuminanceSource(); - virtual int getWidth() const = 0; - virtual int getHeight() const = 0; + virtual int getWidth() = 0; + virtual int getHeight() = 0; - virtual unsigned char getPixel(int x, int y) const = 0; - virtual unsigned char* copyMatrix() const; + virtual unsigned char getPixel(int x, int y) = 0; + virtual unsigned char* copyMatrix(); }; } diff --git a/cpp/core/src/zxing/oned/Code128Reader.cpp b/cpp/core/src/zxing/oned/Code128Reader.cpp index 6f638d562..36ab5dc55 100644 --- a/cpp/core/src/zxing/oned/Code128Reader.cpp +++ b/cpp/core/src/zxing/oned/Code128Reader.cpp @@ -24,6 +24,7 @@ #include #include #include +#include namespace zxing { namespace oned { @@ -166,10 +167,10 @@ namespace zxing { counters[counterPosition]++; } else { if (counterPosition == patternLength - 1) { - int bestVariance = MAX_AVG_VARIANCE; + unsigned int bestVariance = MAX_AVG_VARIANCE; int bestMatch = -1; for (int startCode = CODE_START_A; startCode <= CODE_START_C; startCode++) { - int variance = patternMatchVariance(counters, sizeof(counters)/sizeof(int), CODE_PATTERNS[startCode], MAX_INDIVIDUAL_VARIANCE); + unsigned int variance = patternMatchVariance(counters, sizeof(counters)/sizeof(int), CODE_PATTERNS[startCode], MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = startCode; @@ -204,7 +205,7 @@ namespace zxing { int Code128Reader::decodeCode(Ref row, int counters[], int countersCount, int rowOffset){ recordPattern(row, rowOffset, counters, countersCount); - int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept + unsigned int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; for (int d = 0; d < CODE_PATTERNS_LENGTH; d++) { int pattern[countersLength]; @@ -213,7 +214,7 @@ namespace zxing { pattern[ind] = CODE_PATTERNS[d][ind]; } // memcpy(pattern, CODE_PATTERNS[d], countersLength); - int variance = patternMatchVariance(counters, countersCount, pattern, MAX_INDIVIDUAL_VARIANCE); + unsigned int variance = patternMatchVariance(counters, countersCount, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = d; @@ -251,7 +252,7 @@ namespace zxing { bool isNextShifted = false; std::string tmpResultString; - + std::stringstream tmpResultSStr; // used if its Code 128C int lastStart = startPatternInfo[0]; int nextStart = startPatternInfo[1]; @@ -373,11 +374,11 @@ namespace zxing { } break; case CODE_CODE_C: + // the code read in this case is the number encoded directly if (code < 100) { - if (code < 10) { - tmpResultString.append(1, '0'); - } - tmpResultString.append(1, code); + if (code < 10) + tmpResultSStr << '0'; + tmpResultSStr << code; } else { if (code != CODE_STOP) { lastCharacterWasPrintable = false; @@ -437,6 +438,9 @@ namespace zxing { throw ReaderException(""); } + if (codeSet == CODE_CODE_C) + tmpResultString.append(tmpResultSStr.str()); + // Need to pull out the check digits from string int resultLength = tmpResultString.length(); // Only bother if the result had at least one character, and if the checksum digit happened to diff --git a/cpp/core/src/zxing/oned/Code128Reader.h b/cpp/core/src/zxing/oned/Code128Reader.h index ad191aa0d..2b6752eec 100644 --- a/cpp/core/src/zxing/oned/Code128Reader.h +++ b/cpp/core/src/zxing/oned/Code128Reader.h @@ -27,7 +27,7 @@ namespace zxing { class Code128Reader : public OneDReader { private: - static const int MAX_AVG_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.25f); + static const unsigned int MAX_AVG_VARIANCE = (unsigned int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.25f); static const int MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7f); static const int CODE_SHIFT = 98; diff --git a/cpp/core/src/zxing/oned/ITFReader.cpp b/cpp/core/src/zxing/oned/ITFReader.cpp index 51a712f58..44643269a 100644 --- a/cpp/core/src/zxing/oned/ITFReader.cpp +++ b/cpp/core/src/zxing/oned/ITFReader.cpp @@ -237,7 +237,7 @@ namespace zxing { * @throws ReaderException if the quiet zone cannot be found, a ReaderException is thrown. */ void ITFReader::validateQuietZone(Ref row, int startPattern){ -#pragma mark needs some corrections +//#pragma mark needs some corrections // int quietCount = narrowLineWidth * 10; // expect to find this many pixels of quiet zone // // for (int i = startPattern - 1; quietCount > 0 && i >= 0; i--) { @@ -335,7 +335,7 @@ namespace zxing { * @throws ReaderException if digit cannot be decoded */ int ITFReader::decodeDigit(int counters[], int countersLen){ - int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept + unsigned int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; int max = PATTERNS_LEN; for (int i = 0; i < max; i++) { @@ -343,7 +343,7 @@ namespace zxing { for(int ind = 0; ind> INTEGER_MATH_SHIFT; - int totalVariance = 0; + unsigned int totalVariance = 0; for (int x = 0; x < numCounters; x++) { int counter = counters[x] << INTEGER_MATH_SHIFT; int scaledPattern = pattern[x] * unitBarWidth; diff --git a/cpp/core/src/zxing/oned/OneDReader.h b/cpp/core/src/zxing/oned/OneDReader.h index 92a7e779b..bb3b64979 100644 --- a/cpp/core/src/zxing/oned/OneDReader.h +++ b/cpp/core/src/zxing/oned/OneDReader.h @@ -38,7 +38,7 @@ namespace zxing { virtual Ref decode(Ref image); virtual Ref decodeRow(int rowNumber, Ref row) = 0; - static int patternMatchVariance(int counters[], int countersSize, const int pattern[], int maxIndividualVariance); + static unsigned int patternMatchVariance(int counters[], int countersSize, const int pattern[], int maxIndividualVariance); static void recordPattern(Ref row, int start, int counters[], int countersCount); virtual ~OneDReader(); }; diff --git a/cpp/core/src/zxing/oned/UPCEANReader.cpp b/cpp/core/src/zxing/oned/UPCEANReader.cpp index b5923bf98..e0154c533 100644 --- a/cpp/core/src/zxing/oned/UPCEANReader.cpp +++ b/cpp/core/src/zxing/oned/UPCEANReader.cpp @@ -239,7 +239,7 @@ namespace zxing { // int UPCEANReader::decodeDigit(Ref row, int counters[], int countersLen, int rowOffset, int** patterns/*[][]*/, int paterns1Len, int paterns2Len) int UPCEANReader::decodeDigit(Ref row, int counters[], int countersLen, int rowOffset, UPC_EAN_PATTERNS patternType){ recordPattern(row, rowOffset, counters, countersLen); - int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept + unsigned int bestVariance = MAX_AVG_VARIANCE; // worst variance we'll accept int bestMatch = -1; int max = 0; @@ -252,7 +252,7 @@ namespace zxing { pattern[j] = L_PATTERNS[i][j]; } - int variance = patternMatchVariance(counters, countersLen, pattern, MAX_INDIVIDUAL_VARIANCE); + unsigned int variance = patternMatchVariance(counters, countersLen, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = i; @@ -267,7 +267,7 @@ namespace zxing { pattern[j] = L_AND_G_PATTERNS[i][j]; } - int variance = patternMatchVariance(counters, countersLen, pattern, MAX_INDIVIDUAL_VARIANCE); + unsigned int variance = patternMatchVariance(counters, countersLen, pattern, MAX_INDIVIDUAL_VARIANCE); if (variance < bestVariance) { bestVariance = variance; bestMatch = i; diff --git a/cpp/core/src/zxing/oned/UPCEANReader.h b/cpp/core/src/zxing/oned/UPCEANReader.h index d673dc971..6ee218623 100644 --- a/cpp/core/src/zxing/oned/UPCEANReader.h +++ b/cpp/core/src/zxing/oned/UPCEANReader.h @@ -32,7 +32,7 @@ namespace zxing { class UPCEANReader : public OneDReader { private: - static const int MAX_AVG_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f); + static const unsigned int MAX_AVG_VARIANCE = (unsigned int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f); static const int MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7f); static int* findStartGuardPattern(Ref row); //throws ReaderException