Issue 163
[zxing.git] / cpp / core / src / common / BitMatrix.h
1 #ifndef __BIT_MATRIX_H__
2 #define __BIT_MATRIX_H__
3
4 /*
5  *  BitMatrix.h
6  *  zxing
7  *
8  *  Created by Christian Brunschen on 12/05/2008.
9  *  Copyright 2008 Google UK. All rights reserved.
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  */
23
24 #include "Counted.h"
25 #include <valarray>
26
27 namespace common {
28   class BitMatrix : public Counted {
29   private:
30     
31   public:
32     size_t dimension_;
33     valarray<unsigned int> bits_;
34     BitMatrix(size_t dimension);
35     ~BitMatrix();
36     bool get(size_t i, size_t j);
37     void set(size_t i, size_t j);
38     void setRegion(size_t topI, size_t leftJ, size_t height, size_t width);
39     size_t getDimension();
40     valarray<unsigned int> &getBits();
41     friend ostream& operator<<(ostream &out, BitMatrix &bm);
42     const char *description();
43   };
44 }
45
46 #endif // __BIT_MATRIX_H__