[SCM] Multi-format 1D/2D barcode image processing library branch, upstream, updated. 24d4480bc48cf9eabf7b2bd2f528248b0e458809
flyashi
flyashi at 59b500cc-1b3d-0410-9834-0bbf25fbcc57
Wed Aug 4 01:32:29 UTC 2010
The following commit has been merged in the upstream branch:
commit 740a416a21701650a2953f27ab13ea55c585bf06
Author: flyashi <flyashi at 59b500cc-1b3d-0410-9834-0bbf25fbcc57>
Date: Fri Jul 9 15:15:01 2010 +0000
C++ port Binarizer and BinaryBitmap weren't caching rows correctly.
git-svn-id: http://zxing.googlecode.com/svn/trunk@1473 59b500cc-1b3d-0410-9834-0bbf25fbcc57
diff --git a/cpp/core/src/zxing/Binarizer.cpp b/cpp/core/src/zxing/Binarizer.cpp
index adaab05..1901382 100644
--- a/cpp/core/src/zxing/Binarizer.cpp
+++ b/cpp/core/src/zxing/Binarizer.cpp
@@ -23,15 +23,17 @@
namespace zxing {
- Binarizer::Binarizer(Ref<LuminanceSource> source) : source_(source), array_(NULL), matrix_(NULL) {
+ Binarizer::Binarizer(Ref<LuminanceSource> source) : source_(source), array_(NULL), matrix_(NULL), cached_y_(-1) {
}
Binarizer::~Binarizer() {
}
Ref<BitArray> Binarizer::getBlackRow(int y, Ref<BitArray> row){
- if (array_ == NULL)
+ if (array_ == NULL && cached_y_ != y) {
array_ = estimateBlackRow(y, row);
+ cached_y_ = y;
+ }
return array_;
}
diff --git a/cpp/core/src/zxing/Binarizer.h b/cpp/core/src/zxing/Binarizer.h
index 225ec7d..694018d 100644
--- a/cpp/core/src/zxing/Binarizer.h
+++ b/cpp/core/src/zxing/Binarizer.h
@@ -34,6 +34,7 @@ class Binarizer : public Counted {
Ref<LuminanceSource> source_;
Ref<BitArray> array_;
Ref<BitMatrix> matrix_;
+ int cached_y_;
public:
Binarizer(Ref<LuminanceSource> source);
diff --git a/cpp/core/src/zxing/BinaryBitmap.cpp b/cpp/core/src/zxing/BinaryBitmap.cpp
index c8fea36..ff79b55 100644
--- a/cpp/core/src/zxing/BinaryBitmap.cpp
+++ b/cpp/core/src/zxing/BinaryBitmap.cpp
@@ -23,7 +23,7 @@
namespace zxing {
- BinaryBitmap::BinaryBitmap(Ref<Binarizer> binarizer) : bits_(NULL), array_bits_(NULL), binarizer_(binarizer) {
+ BinaryBitmap::BinaryBitmap(Ref<Binarizer> binarizer) : bits_(NULL), array_bits_(NULL), binarizer_(binarizer), cached_y_(-1) {
}
@@ -31,8 +31,9 @@ namespace zxing {
}
Ref<BitArray> BinaryBitmap::getBlackRow(int y, Ref<BitArray> row) {
- if (array_bits_ == NULL) {
+ if (array_bits_ == NULL && cached_y_ != y) {
array_bits_ = binarizer_->getBlackRow(y, row);
+ cached_y_ = y;
}
return array_bits_;
}
diff --git a/cpp/core/src/zxing/BinaryBitmap.h b/cpp/core/src/zxing/BinaryBitmap.h
index ecd9a85..ddea910 100644
--- a/cpp/core/src/zxing/BinaryBitmap.h
+++ b/cpp/core/src/zxing/BinaryBitmap.h
@@ -33,6 +33,7 @@ namespace zxing {
Ref<BitMatrix> bits_;
Ref<BitArray> array_bits_;
Ref<Binarizer> binarizer_;
+ int cached_y_;
public:
BinaryBitmap(Ref<Binarizer> binarizer);
--
Multi-format 1D/2D barcode image processing library
More information about the Pkg-google-commits
mailing list