Preserve line breaks into XHTML
[zxing.git] / cpp / core / src / zxing / oned / UPCEANReader.h
1 #ifndef __UPC_EAN_READER_H__
2 #define __UPC_EAN_READER_H__
3
4 /*
5  *  UPCEANReader.h
6  *  ZXing
7  *
8  *  Copyright 2010 ZXing authors All rights reserved.
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  *      http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  */
22
23 #pragma once
24
25 #include <zxing/oned/OneDReader.h>
26 #include <zxing/common/BitArray.h>
27 #include <zxing/Result.h>
28 typedef enum UPC_EAN_PATTERNS {
29         UPC_EAN_PATTERNS_L_PATTERNS = 0,
30         UPC_EAN_PATTERNS_L_AND_G_PATTERNS
31 } UPC_EAN_PATTERNS;
32 namespace zxing {
33         namespace oned {
34                 class UPCEANReader : public OneDReader {
35                         
36                 private:
37                         static const unsigned int MAX_AVG_VARIANCE = (unsigned int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.42f);
38                         static const int MAX_INDIVIDUAL_VARIANCE = (int) (PATTERN_MATCH_RESULT_SCALE_FACTOR * 0.7f);
39                         
40                         static int* findStartGuardPattern(Ref<BitArray> row);                                                                                                                                   //throws ReaderException
41                         
42                         virtual int* decodeEnd(Ref<BitArray> row, int endStart);                                                                                                                                                //throws ReaderException
43                         
44                         static bool checkStandardUPCEANChecksum(std::string s);                                                                                                                                 //throws ReaderException 
45                 protected:
46                         static int* findGuardPattern(Ref<BitArray> row, int rowOffset, bool whiteFirst, const int pattern[], int patternLen);   //throws ReaderException 
47                         
48                         virtual const int getMIDDLE_PATTERN_LEN();
49                         virtual const int* getMIDDLE_PATTERN();
50                         
51                 public:
52                         UPCEANReader();
53                         
54                         virtual int decodeMiddle(Ref<BitArray> row, int startRange[], int startRangeLen, std::string& resultString) = 0;                        //throws ReaderException
55                         
56                         Ref<Result> decodeRow(int rowNumber, Ref<BitArray> row);
57                         Ref<Result> decodeRow(int rowNumber, Ref<BitArray> row, int startGuardRange[]);
58                         
59                         static int decodeDigit(Ref<BitArray> row, int counters[], int countersLen, int rowOffset, UPC_EAN_PATTERNS patternType);        //throws ReaderException 
60                         
61                         virtual bool checkChecksum(std::string s);                                                                                                                                                                              //throws ReaderException
62                         
63                         virtual BarcodeFormat getBarcodeFormat() = 0;
64                         virtual ~UPCEANReader();
65                 };
66         }
67 }
68
69 #endif