Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / src / fxbarcode / src / include / BC_DataMatrixVersion.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_DATAMATRIXVERSION_H_\r
8 #define _BC_DATAMATRIXVERSION_H_\r
9 class ECB;\r
10 class ECBlocks;\r
11 class CBC_DataMatrixVersion;\r
12 class ECB : public CFX_Object\r
13 {\r
14 public:\r
15     ECB(FX_INT32 count, FX_INT32 dataCodewords)\r
16     {\r
17         m_count = count;\r
18         m_dataCodewords = dataCodewords;\r
19     }\r
20 \r
21     FX_INT32 GetCount()\r
22     {\r
23         return m_count;\r
24     }\r
25 \r
26     FX_INT32 GetDataCodewords()\r
27     {\r
28         return m_dataCodewords;\r
29     }\r
30 private:\r
31     FX_INT32 m_count;\r
32     FX_INT32 m_dataCodewords;\r
33 };\r
34 class ECBlocks : public CFX_Object\r
35 {\r
36 public:\r
37     ECBlocks(FX_INT32 ecCodewords, ECB *ecBlocks)\r
38     {\r
39         m_ecCodewords = ecCodewords;\r
40         m_ecBlocks.Add(ecBlocks);\r
41     }\r
42 \r
43     ECBlocks(FX_INT32 ecCodewords, ECB *ecBlocks1, ECB *ecBlocks2)\r
44     {\r
45         m_ecCodewords = ecCodewords;\r
46         m_ecBlocks.Add(ecBlocks1);\r
47         m_ecBlocks.Add(ecBlocks2);\r
48     }\r
49     ~ECBlocks()\r
50     {\r
51         for(FX_INT32 i = 0; i < m_ecBlocks.GetSize(); i++) {\r
52             delete (ECB*)m_ecBlocks[i];\r
53         }\r
54         m_ecBlocks.RemoveAll();\r
55     }\r
56 \r
57     FX_INT32 GetECCodewords()\r
58     {\r
59         return m_ecCodewords;\r
60     }\r
61 \r
62     const CFX_PtrArray &GetECBlocks()\r
63     {\r
64         return m_ecBlocks;\r
65     }\r
66 private:\r
67     FX_INT32 m_ecCodewords;\r
68     CFX_PtrArray m_ecBlocks;\r
69 };\r
70 class CBC_DataMatrixVersion  : public CFX_Object\r
71 {\r
72 public:\r
73     CBC_DataMatrixVersion(FX_INT32 versionNumber,\r
74                           FX_INT32 symbolSizeRows,\r
75                           FX_INT32 symbolSizeColumns,\r
76                           FX_INT32 dataRegionSizeRows,\r
77                           FX_INT32 dataRegionSizeColumns,\r
78                           ECBlocks *ecBlocks);\r
79     virtual ~CBC_DataMatrixVersion();\r
80     static void Initialize();\r
81     static void Finalize();\r
82     FX_INT32 GetVersionNumber();\r
83     FX_INT32 GetSymbolSizeRows();\r
84     FX_INT32 GetSymbolSizeColumns();\r
85     FX_INT32 GetDataRegionSizeRows();\r
86     FX_INT32 GetDataRegionSizeColumns();\r
87     FX_INT32 GetTotalCodewords();\r
88     ECBlocks *GetECBlocks();\r
89     static CBC_DataMatrixVersion *GetVersionForDimensions(FX_INT32 numRows, FX_INT32 numColumns, FX_INT32 &e);\r
90     static void ReleaseAll();\r
91 private:\r
92     FX_INT32 m_versionNumber;\r
93     FX_INT32 m_symbolSizeRows;\r
94     FX_INT32 m_symbolSizeColumns;\r
95     FX_INT32 m_dataRegionSizeRows;\r
96     FX_INT32 m_dataRegionSizeColumns;\r
97     ECBlocks *m_ecBlocks;\r
98     FX_INT32 m_totalCodewords;\r
99     static CFX_PtrArray* VERSIONS;\r
100 };\r
101 #endif\r