C++: binarizer updates
[zxing.git] / cpp / core / src / zxing / BinaryBitmap.cpp
index c8fea36..a1c68db 100644 (file)
@@ -2,9 +2,7 @@
  *  BinaryBitmap.cpp
  *  zxing
  *
- *  Created by Ralf Kistner on 19/10/2009.
- *  Copyright 2008 ZXing authors All rights reserved.
- *  Modified by Lukasz Warchol on 02/02/2010.
+ *  Copyright 2010 ZXing authors All rights reserved.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -23,7 +21,7 @@
 
 namespace zxing {
        
-       BinaryBitmap::BinaryBitmap(Ref<Binarizer> binarizer) : bits_(NULL), array_bits_(NULL), binarizer_(binarizer) {
+       BinaryBitmap::BinaryBitmap(Ref<Binarizer> binarizer) : binarizer_(binarizer) {
                
        }
        
@@ -31,27 +29,39 @@ namespace zxing {
        }
        
        Ref<BitArray> BinaryBitmap::getBlackRow(int y, Ref<BitArray> row) {
-               if (array_bits_ == NULL) {
-                       array_bits_ = binarizer_->getBlackRow(y, row);
-               }
-               return array_bits_;
+               return binarizer_->getBlackRow(y, row);
        }
        
        Ref<BitMatrix> BinaryBitmap::getBlackMatrix() {
-               if (bits_ == NULL) {
-                       bits_ = binarizer_->getBlackMatrix();
-               }
-               return bits_;
+               return binarizer_->getBlackMatrix();
        }
-       int BinaryBitmap::getWidth() {
-               return getSource()->getWidth();
+       
+       int BinaryBitmap::getWidth() const {
+               return getLuminanceSource()->getWidth();
        }
-       int BinaryBitmap::getHeight() {
-               return getSource()->getHeight();
+       
+       int BinaryBitmap::getHeight() const {
+               return getLuminanceSource()->getHeight();
        }
        
-       Ref<LuminanceSource> BinaryBitmap::getSource() {
-               return binarizer_->getSource();
+       Ref<LuminanceSource> BinaryBitmap::getLuminanceSource() const {
+               return binarizer_->getLuminanceSource();
        }
        
+
+       bool BinaryBitmap::isCropSupported() const {
+         return getLuminanceSource()->isCropSupported();
+       }
+
+       Ref<BinaryBitmap> BinaryBitmap::crop(int left, int top, int width, int height) {
+         return Ref<BinaryBitmap> (new BinaryBitmap(binarizer_->createBinarizer(getLuminanceSource()->crop(left, top, width, height))));
+       }
+
+       bool BinaryBitmap::isRotateSupported() const {
+         return getLuminanceSource()->isRotateSupported();
+       }
+
+       Ref<BinaryBitmap> BinaryBitmap::rotateCounterClockwise() {
+         return Ref<BinaryBitmap> (new BinaryBitmap(binarizer_->createBinarizer(getLuminanceSource()->rotateCounterClockwise())));
+       }
 }