[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