C++ port Binarizer and BinaryBitmap weren't caching rows correctly.
[zxing.git] / cpp / core / src / zxing / BinaryBitmap.cpp
1 /*
2  *  BinaryBitmap.cpp
3  *  zxing
4  *
5  *  Created by Ralf Kistner on 19/10/2009.
6  *  Copyright 2008 ZXing authors All rights reserved.
7  *  Modified by Lukasz Warchol on 02/02/2010.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21
22 #include <zxing/BinaryBitmap.h>
23
24 namespace zxing {
25         
26         BinaryBitmap::BinaryBitmap(Ref<Binarizer> binarizer) : bits_(NULL), array_bits_(NULL), binarizer_(binarizer), cached_y_(-1) {
27                 
28         }
29         
30         BinaryBitmap::~BinaryBitmap() {
31         }
32         
33         Ref<BitArray> BinaryBitmap::getBlackRow(int y, Ref<BitArray> row) {
34                 if (array_bits_ == NULL && cached_y_ != y) {
35                         array_bits_ = binarizer_->getBlackRow(y, row);
36                         cached_y_ = y;
37                 }
38                 return array_bits_;
39         }
40         
41         Ref<BitMatrix> BinaryBitmap::getBlackMatrix() {
42                 if (bits_ == NULL) {
43                         bits_ = binarizer_->getBlackMatrix();
44                 }
45                 return bits_;
46         }
47         int BinaryBitmap::getWidth() {
48                 return getSource()->getWidth();
49         }
50         int BinaryBitmap::getHeight() {
51                 return getSource()->getHeight();
52         }
53         
54         Ref<LuminanceSource> BinaryBitmap::getSource() {
55                 return binarizer_->getSource();
56         }
57         
58 }