OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef XFA_SRC_FXBARCODE_QRCODE_BC_QRCODERENCODER_H_ | |
8 #define XFA_SRC_FXBARCODE_QRCODE_BC_QRCODERENCODER_H_ | |
9 | |
10 #include "core/include/fxcrt/fx_basic.h" | |
11 #include "core/include/fxcrt/fx_string.h" | |
12 | |
13 class CBC_QRCoder; | |
14 class CBC_QRCoderErrorCorrectionLevel; | |
15 class CBC_QRCoderMode; | |
16 class CBC_QRCoderBitVector; | |
17 class CBC_CommonByteArray; | |
18 class CBC_CommonByteMatrix; | |
19 | |
20 class CBC_QRCoderEncoder { | |
21 private: | |
22 static const int32_t m_alphaNumbericTable[96]; | |
23 | |
24 public: | |
25 CBC_QRCoderEncoder(); | |
26 virtual ~CBC_QRCoderEncoder(); | |
27 | |
28 static void Encode(const CFX_ByteString& content, | |
29 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
30 CBC_QRCoder* qrCode, | |
31 int32_t& e, | |
32 int32_t versionSpecify = 0); | |
33 static void Encode(const CFX_WideString& content, | |
34 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
35 CBC_QRCoder* qrCode, | |
36 int32_t& e); | |
37 static void EncodeWithSpecifyVersion(const CFX_ByteString& content, | |
38 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
39 CBC_QRCoder* qrCode, | |
40 int32_t versionSpecify, | |
41 int32_t& e); | |
42 static void EncodeWithAutoVersion(const CFX_ByteString& content, | |
43 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
44 CBC_QRCoder* qrCode, | |
45 int32_t& e); | |
46 static CBC_QRCoderMode* ChooseMode(const CFX_ByteString& content, | |
47 CFX_ByteString encoding); | |
48 static int32_t GetAlphaNumericCode(int32_t code); | |
49 static void AppendECI(CBC_QRCoderBitVector* bits); | |
50 static void AppendBytes(const CFX_ByteString& content, | |
51 CBC_QRCoderMode* mode, | |
52 CBC_QRCoderBitVector* bits, | |
53 CFX_ByteString encoding, | |
54 int32_t& e); | |
55 static void AppendNumericBytes(const CFX_ByteString& content, | |
56 CBC_QRCoderBitVector* bits, | |
57 int32_t& e); | |
58 static void AppendAlphaNumericBytes(const CFX_ByteString& content, | |
59 CBC_QRCoderBitVector* bits, | |
60 int32_t& e); | |
61 static void Append8BitBytes(const CFX_ByteString& content, | |
62 CBC_QRCoderBitVector* bits, | |
63 CFX_ByteString encoding, | |
64 int32_t& e); | |
65 static void Append8BitBytes(CFX_ByteArray& bytes, | |
66 CBC_QRCoderBitVector* bits, | |
67 int32_t& e); | |
68 static void AppendKanjiBytes(const CFX_ByteString& content, | |
69 CBC_QRCoderBitVector* bits, | |
70 int32_t& e); | |
71 static void AppendGBKBytes(const CFX_ByteString& content, | |
72 CBC_QRCoderBitVector* bits, | |
73 int32_t& e); | |
74 static void InitQRCode(int32_t numInputBytes, | |
75 int32_t versionNumber, | |
76 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
77 CBC_QRCoderMode* mode, | |
78 CBC_QRCoder* qrCode, | |
79 int32_t& e); | |
80 static void InitQRCode(int32_t numInputBytes, | |
81 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
82 CBC_QRCoderMode* mode, | |
83 CBC_QRCoder* qrCode, | |
84 int32_t& e); | |
85 static void AppendModeInfo(CBC_QRCoderMode* mode, | |
86 CBC_QRCoderBitVector* bits, | |
87 int32_t& e); | |
88 static void AppendLengthInfo(int32_t numLetters, | |
89 int32_t version, | |
90 CBC_QRCoderMode* mode, | |
91 CBC_QRCoderBitVector* bits, | |
92 int32_t& e); | |
93 | |
94 static void InterleaveWithECBytes(CBC_QRCoderBitVector* bits, | |
95 int32_t numTotalBytes, | |
96 int32_t numDataBytes, | |
97 int32_t numRSBlocks, | |
98 CBC_QRCoderBitVector* result, | |
99 int32_t& e); | |
100 static void GetNumDataBytesAndNumECBytesForBlockID( | |
101 int32_t numTotalBytes, | |
102 int32_t numDataBytes, | |
103 int32_t numRSBlocks, | |
104 int32_t blockID, | |
105 int32_t& numDataBytesInBlock, | |
106 int32_t& numECBytesInBlocks); | |
107 static CBC_CommonByteArray* GenerateECBytes(CBC_CommonByteArray* dataBytes, | |
108 int32_t numEcBytesInBlock, | |
109 int32_t& e); | |
110 static int32_t ChooseMaskPattern(CBC_QRCoderBitVector* bits, | |
111 CBC_QRCoderErrorCorrectionLevel* ecLevel, | |
112 int32_t version, | |
113 CBC_CommonByteMatrix* matrix, | |
114 int32_t& e); | |
115 static int32_t CalculateMaskPenalty(CBC_CommonByteMatrix* matrix); | |
116 static void TerminateBits(int32_t numDataBytes, | |
117 CBC_QRCoderBitVector* bits, | |
118 int32_t& e); | |
119 static int32_t GetSpanByVersion(CBC_QRCoderMode* modeFirst, | |
120 CBC_QRCoderMode* modeSecond, | |
121 int32_t versionNum, | |
122 int32_t& e); | |
123 static void MergeString(CFX_PtrArray& result, int32_t versionNum, int32_t& e); | |
124 static void SplitString(const CFX_ByteString& content, CFX_PtrArray& result); | |
125 static void AppendDataModeLenghInfo(CFX_PtrArray& splitResult, | |
126 CBC_QRCoderBitVector& headerAndDataBits, | |
127 CBC_QRCoderMode* tempMode, | |
128 CBC_QRCoder* qrCode, | |
129 CFX_ByteString& encoding, | |
130 int32_t& e); | |
131 }; | |
132 | |
133 #endif // XFA_SRC_FXBARCODE_QRCODE_BC_QRCODERENCODER_H_ | |
OLD | NEW |