Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / include / BC_OneDimReader.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _BC_ONEDUPCEANREADER_H_\r
8 #define _BC_ONEDUPCEANREADER_H_\r
9 class CBC_OneDReader;\r
10 class CBC_CommonBitArray;\r
11 class CBC_OneDimReader;\r
12 class CBC_OneDimReader : public CBC_OneDReader\r
13 {\r
14 private:\r
15     const static FX_INT32 MAX_AVG_VARIANCE;\r
16     const static FX_INT32 MAX_INDIVIDUAL_VARIANCE;\r
17 \r
18     FX_BOOL CheckStandardUPCEANChecksum(CFX_ByteString &s, FX_INT32 &e);\r
19 public:\r
20     const static FX_INT32 START_END_PATTERN[3];\r
21     const static FX_INT32 MIDDLE_PATTERN[5];\r
22     const static FX_INT32 L_PATTERNS[10][4];\r
23     const static FX_INT32 L_AND_G_PATTERNS[20][4];\r
24     CBC_OneDimReader();\r
25     virtual ~CBC_OneDimReader();\r
26     CFX_ByteString DecodeRow(FX_INT32 rowNumber, CBC_CommonBitArray *row, FX_INT32 hints, FX_INT32 &e);\r
27     CFX_ByteString DecodeRow(FX_INT32 rowNumber, CBC_CommonBitArray *row, CFX_Int32Array *startGuardRange, FX_INT32 hints, FX_INT32 &e);\r
28 protected:\r
29     CFX_Int32Array *FindStartGuardPattern(CBC_CommonBitArray *row, FX_INT32 &e);\r
30     virtual FX_BOOL CheckChecksum(CFX_ByteString &s, FX_INT32 &e);\r
31     CFX_Int32Array *FindGuardPattern(CBC_CommonBitArray *row, FX_INT32 rowOffset, FX_BOOL whiteFirst, CFX_Int32Array *pattern, FX_INT32 &e);\r
32     FX_INT32 DecodeDigit(CBC_CommonBitArray *row, CFX_Int32Array *counters, FX_INT32 rowOffset, const FX_INT32* patterns, FX_INT32 patternLength, FX_INT32 &e);\r
33     virtual FX_INT32 DecodeMiddle(CBC_CommonBitArray *row, CFX_Int32Array *startRange, CFX_ByteString &resultResult, FX_INT32 &e)\r
34     {\r
35         return 0;\r
36     }\r
37     virtual CFX_Int32Array *DecodeEnd(CBC_CommonBitArray *row, FX_INT32 endStart, FX_INT32 &e);\r
38 };\r
39 #endif\r