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