From: ralf.kistner@gmail.com Date: Fri, 2 Apr 2010 17:17:31 +0000 (+0000) Subject: Fixed things broken in the last commit. X-Git-Url: http://git.rot13.org/?p=zxing.git;a=commitdiff_plain;h=73a2f2660038b635a078b1d6625a2c92f40d3b5b Fixed things broken in the last commit. git-svn-id: http://zxing.googlecode.com/svn/trunk@1272 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- diff --git a/cpp/core/src/zxing/common/BitArray.cpp b/cpp/core/src/zxing/common/BitArray.cpp index f6ecbdb3..e4627c77 100644 --- a/cpp/core/src/zxing/common/BitArray.cpp +++ b/cpp/core/src/zxing/common/BitArray.cpp @@ -20,6 +20,7 @@ #include #include +#include using namespace std; @@ -33,7 +34,7 @@ static unsigned int logDigits(unsigned digits) { } return log; } -const unsigned int BitArray::bitsPerWord_ = sizeof(unsigned int)*8; +const unsigned int BitArray::bitsPerWord_ = numeric_limits::digits; const unsigned int BitArray::logBits_ = logDigits(bitsPerWord_); const unsigned int BitArray::bitsMask_ = (1 << logBits_) - 1; size_t BitArray::wordsForBits(size_t bits) { diff --git a/cpp/core/src/zxing/common/BitArray.h b/cpp/core/src/zxing/common/BitArray.h index f91c0682..d3b6f661 100644 --- a/cpp/core/src/zxing/common/BitArray.h +++ b/cpp/core/src/zxing/common/BitArray.h @@ -24,7 +24,6 @@ #include #include #include -#include #include namespace zxing { diff --git a/cpp/core/src/zxing/common/BitMatrix.cpp b/cpp/core/src/zxing/common/BitMatrix.cpp index 1ed71b8b..48a074db 100644 --- a/cpp/core/src/zxing/common/BitMatrix.cpp +++ b/cpp/core/src/zxing/common/BitMatrix.cpp @@ -39,7 +39,7 @@ unsigned int logDigits(unsigned digits) { } -const unsigned int bitsPerWord = sizeof(unsigned int)*8; +const unsigned int bitsPerWord = numeric_limits::digits; const unsigned int logBits = logDigits(bitsPerWord); const unsigned int bitsMask = (1 << logBits) - 1; diff --git a/cpp/core/src/zxing/datamatrix/detector/Detector.cpp b/cpp/core/src/zxing/datamatrix/detector/Detector.cpp index 36a2e88a..6c9aad57 100644 --- a/cpp/core/src/zxing/datamatrix/detector/Detector.cpp +++ b/cpp/core/src/zxing/datamatrix/detector/Detector.cpp @@ -181,7 +181,7 @@ Ref Detector::transitionsBetween(Ref fr int fromY = (int) from->getY(); int toX = (int) to->getX(); int toY = (int) to->getY(); - bool steep = labs(toY - fromY) > labs(toX - fromX); + bool steep = abs(toY - fromY) > abs(toX - fromX); if (steep) { int temp = fromX; fromX = fromY; @@ -191,8 +191,8 @@ Ref Detector::transitionsBetween(Ref fr toY = temp; } - int dx = labs(toX - fromX); - int dy = labs(toY - fromY); + int dx = abs(toX - fromX); + int dy = abs(toY - fromY); int error = -dx >> 1; int ystep = fromY < toY ? 1 : -1; int xstep = fromX < toX ? 1 : -1; diff --git a/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp b/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp index 2d0179ae..65390abd 100644 --- a/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp +++ b/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.cpp @@ -52,10 +52,10 @@ const char *DecodedBitStreamParser::UTF8 = "UTF-8"; const char *DecodedBitStreamParser::SHIFT_JIS = "SHIFT_JIS"; const char *DecodedBitStreamParser::EUC_JP = "EUC-JP"; -string DecodedBitStreamParser::convert(const unsigned char *bufIn, size_t nIn, const char *src) { +void DecodedBitStreamParser::append(std::string &result, const unsigned char *bufIn, size_t nIn, const char *src) { #ifndef NO_ICONV if (nIn == 0) { - return string(); + return; } iconv_t cd = iconv_open(UTF8, src); @@ -79,15 +79,14 @@ string DecodedBitStreamParser::convert(const unsigned char *bufIn, size_t nIn, c int nResult = maxOut - nTo; bufOut[nResult] = '\0'; - string result((const char *)bufOut); + result.append((const char *)bufOut); delete[] bufOut; - return result; #else - return string((const char *)bufIn, nIn); + result.append((const char *)bufIn, nIn); #endif } -string DecodedBitStreamParser::decodeKanjiSegment(Ref bits, int count) { +void DecodedBitStreamParser::decodeKanjiSegment(Ref bits, std::string &result, int count) { // Each character will require 2 bytes. Read the characters as 2-byte pairs // and decode as Shift_JIS afterwards size_t nBytes = 2 * count; @@ -111,12 +110,11 @@ string DecodedBitStreamParser::decodeKanjiSegment(Ref bits, int count count--; } - string result = convert(buffer, nBytes, SHIFT_JIS); + append(result, buffer, nBytes, SHIFT_JIS); delete[] buffer; - return result; } -string DecodedBitStreamParser::decodeByteSegment(Ref bits, int count) { +void DecodedBitStreamParser::decodeByteSegment(Ref bits, std::string &result, int count) { int nBytes = count; unsigned char* readBytes = new unsigned char[nBytes]; if (count << 3 > bits->available()) { @@ -134,12 +132,11 @@ string DecodedBitStreamParser::decodeByteSegment(Ref bits, int count) // Shift_JIS -- without anything like an ECI designator to // give a hint. const char *encoding = guessEncoding(readBytes, nBytes); - string result = convert(readBytes, nBytes, encoding); + append(result, readBytes, nBytes, encoding); delete[] readBytes; - return result; } -string DecodedBitStreamParser::decodeNumericSegment(Ref bits, int count) { +void DecodedBitStreamParser::decodeNumericSegment(Ref bits, std::string &result, int count) { int nBytes = count; unsigned char* bytes = new unsigned char[nBytes]; int i = 0; @@ -180,12 +177,11 @@ string DecodedBitStreamParser::decodeNumericSegment(Ref bits, int cou } bytes[i++] = ALPHANUMERIC_CHARS[digitBits]; } - string result = convert(bytes, nBytes, ASCII); + append(result, bytes, nBytes, ASCII); delete[] bytes; - return result; } -string DecodedBitStreamParser::decodeAlphanumericSegment(Ref bits, int count) { +void DecodedBitStreamParser::decodeAlphanumericSegment(Ref bits, std::string &result, int count) { int nBytes = count; unsigned char* bytes = new unsigned char[nBytes]; int i = 0; @@ -199,9 +195,8 @@ string DecodedBitStreamParser::decodeAlphanumericSegment(Ref bits, in if (count == 1) { bytes[i++] = ALPHANUMERIC_CHARS[bits->readBits(6)]; } - string result = convert(bytes, nBytes, ASCII); + append(result, bytes, nBytes, ASCII); delete[] bytes; - return result; } const char * @@ -273,13 +268,13 @@ string DecodedBitStreamParser::decode(ArrayRef bytes, Version *ve // How many characters will follow, encoded in this mode? int count = bits->readBits(mode->getCharacterCountBits(version)); if (mode == &Mode::NUMERIC) { - result = decodeNumericSegment(bits, count); + decodeNumericSegment(bits, result, count); } else if (mode == &Mode::ALPHANUMERIC) { - result = decodeAlphanumericSegment(bits, count); + decodeAlphanumericSegment(bits, result, count); } else if (mode == &Mode::BYTE) { - result = decodeByteSegment(bits, count); + decodeByteSegment(bits, result, count); } else if (mode == &Mode::KANJI) { - result = decodeKanjiSegment(bits, count); + decodeKanjiSegment(bits, result, count); } else { throw ReaderException("Unsupported mode indicator"); } diff --git a/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h b/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h index 7b480e26..83582e15 100644 --- a/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h +++ b/cpp/core/src/zxing/qrcode/decoder/DecodedBitStreamParser.h @@ -43,12 +43,12 @@ private: static const char *SHIFT_JIS; static const char *EUC_JP; - static std::string decodeKanjiSegment(Ref bits, int count); - static std::string decodeByteSegment(Ref bits, int count); - static std::string decodeAlphanumericSegment(Ref bits, int count); - static std::string decodeNumericSegment(Ref bits, int count); + static void decodeKanjiSegment(Ref bits, std::string &result, int count); + static void decodeByteSegment(Ref bits, std::string &result, int count); + static void decodeAlphanumericSegment(Ref bits, std::string &result, int count); + static void decodeNumericSegment(Ref bits, std::string &result, int count); static const char *guessEncoding(unsigned char *bytes, int length); - static std::string convert(const unsigned char *bufIn, size_t nIn, const char *src); + static void append(std::string &ost, const unsigned char *bufIn, size_t nIn, const char *src); public: static std::string decode(ArrayRef bytes, Version *version); diff --git a/cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp b/cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp index bc4aaac3..017e2ee6 100644 --- a/cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp +++ b/cpp/core/src/zxing/qrcode/detector/AlignmentPatternFinder.cpp @@ -37,7 +37,7 @@ float AlignmentPatternFinder::centerFromEnd(vector &stateCount, int end) { bool AlignmentPatternFinder::foundPatternCross(vector &stateCount) { float maxVariance = moduleSize_ / 2.0f; for (size_t i = 0; i < 3; i++) { - if (labs(moduleSize_ - stateCount[i]) >= maxVariance) { + if (abs(moduleSize_ - stateCount[i]) >= maxVariance) { return false; } } @@ -86,7 +86,7 @@ float AlignmentPatternFinder::crossCheckVertical(size_t startI, size_t centerJ, } int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2]; - if (5 * labs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { + if (5 * abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { return NAN; } diff --git a/cpp/core/src/zxing/qrcode/detector/Detector.cpp b/cpp/core/src/zxing/qrcode/detector/Detector.cpp index 9b461889..a50424c9 100644 --- a/cpp/core/src/zxing/qrcode/detector/Detector.cpp +++ b/cpp/core/src/zxing/qrcode/detector/Detector.cpp @@ -201,7 +201,7 @@ float Detector::sizeOfBlackWhiteBlackRunBothWays(int fromX, int fromY, int toX, float Detector::sizeOfBlackWhiteBlackRun(int fromX, int fromY, int toX, int toY) { // Mild variant of Bresenham's algorithm; // see http://en.wikipedia.org/wiki/Bresenham's_line_algorithm - bool steep = labs(toY - fromY) > labs(toX - fromX); + bool steep = abs(toY - fromY) > abs(toX - fromX); if (steep) { int temp = fromX; fromX = fromY; @@ -211,8 +211,8 @@ float Detector::sizeOfBlackWhiteBlackRun(int fromX, int fromY, int toX, int toY) toY = temp; } - int dx = labs(toX - fromX); - int dy = labs(toY - fromY); + int dx = abs(toX - fromX); + int dy = abs(toY - fromY); int error = -dx >> 1; int ystep = fromY < toY ? 1 : -1; int xstep = fromX < toX ? 1 : -1; diff --git a/cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp b/cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp index 0dcbd3c3..8b46b0f2 100644 --- a/cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp +++ b/cpp/core/src/zxing/qrcode/detector/FinderPatternFinder.cpp @@ -140,7 +140,7 @@ float FinderPatternFinder::crossCheckVertical(size_t startI, size_t centerJ, int // If we found a finder-pattern-like section, but its size is more than 40% different than // the original, assume it's a false positive int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; - if (5 * labs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { + if (5 * abs(stateCountTotal - originalStateCountTotal) >= 2 * originalStateCountTotal) { return NAN; } @@ -204,7 +204,7 @@ float FinderPatternFinder::crossCheckHorizontal(size_t startJ, size_t centerI, i // If we found a finder-pattern-like section, but its size is significantly different than // the original, assume it's a false positive int stateCountTotal = stateCount[0] + stateCount[1] + stateCount[2] + stateCount[3] + stateCount[4]; - if (5 * labs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) { + if (5 * abs(stateCountTotal - originalStateCountTotal) >= originalStateCountTotal) { return NAN; } diff --git a/cpp/core/src/zxing/qrcode/detector/QREdgeDetector.cpp b/cpp/core/src/zxing/qrcode/detector/QREdgeDetector.cpp index 7566fb5a..b2162ef5 100644 --- a/cpp/core/src/zxing/qrcode/detector/QREdgeDetector.cpp +++ b/cpp/core/src/zxing/qrcode/detector/QREdgeDetector.cpp @@ -114,7 +114,7 @@ Point QREdgeDetector::endOfReverseBlackWhiteBlackRun(const BitMatrix& image, Poi int toX = (int)to.x; int toY = (int)to.y; - bool steep = labs(toY - fromY) > labs(toX - fromX); + bool steep = abs(toY - fromY) > abs(toX - fromX); if (steep) { int temp = fromX; fromX = fromY; @@ -124,8 +124,8 @@ Point QREdgeDetector::endOfReverseBlackWhiteBlackRun(const BitMatrix& image, Poi toY = temp; } - int dx = labs(toX - fromX); - int dy = labs(toY - fromY); + int dx = abs(toX - fromX); + int dy = abs(toY - fromY); int error = -dx >> 1; int ystep = fromY < toY ? -1 : 1; int xstep = fromX < toX ? -1 : 1;