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 _BC_QRCODERENCODER_H_ | |
8 #define _BC_QRCODERENCODER_H_ | |
9 class Make_Pair; | |
10 class CBC_QRCoder; | |
11 class CBC_QRCoderErrorCorrectionLevel; | |
12 class CBC_QRCoderMode; | |
13 class CBC_QRCoderBitVector; | |
14 class CBC_CommonByteArray; | |
15 class CBC_CommonByteMatrix; | |
16 class CBC_QRCoderEncoder; | |
17 class CBC_QRCoderEncoder : public CFX_Object | |
18 { | |
19 private: | |
20 const static FX_INT32 m_alphaNumbericTable[96]; | |
21 public: | |
22 CBC_QRCoderEncoder(); | |
23 virtual ~CBC_QRCoderEncoder(); | |
24 | |
25 static void Encode(const CFX_ByteString &content, CBC_QRCoderErrorCorrection
Level* ecLevel, CBC_QRCoder *qrCode, FX_INT32 &e, FX_INT32 versionSpecify = 0); | |
26 static void Encode(const CFX_WideString &content, CBC_QRCoderErrorCorrection
Level* ecLevel, CBC_QRCoder *qrCode, FX_INT32 &e); | |
27 static void EncodeWithSpecifyVersion(const CFX_ByteString &content, CBC_QRCo
derErrorCorrectionLevel* ecLevel, | |
28 CBC_QRCoder *qrCode, FX_INT32 versionSp
ecify, FX_INT32 &e); | |
29 static void EncodeWithAutoVersion(const CFX_ByteString &content, CBC_QRCoder
ErrorCorrectionLevel* ecLevel, CBC_QRCoder *qrCode, FX_INT32 &e); | |
30 static CBC_QRCoderMode* ChooseMode(const CFX_ByteString & content, CFX_ByteS
tring encoding); | |
31 static FX_INT32 GetAlphaNumericCode(FX_INT32 code); | |
32 static void AppendECI(CBC_QRCoderBitVector* bits); | |
33 static void AppendBytes(const CFX_ByteString &content, CBC_QRCoderMode* mode
, CBC_QRCoderBitVector* bits, CFX_ByteString encoding, FX_INT32 &e); | |
34 static void AppendNumericBytes(const CFX_ByteString &content, CBC_QRCoderBit
Vector* bits, FX_INT32 &e); | |
35 static void AppendAlphaNumericBytes(const CFX_ByteString &content, CBC_QRCod
erBitVector* bits, FX_INT32 &e); | |
36 static void Append8BitBytes(const CFX_ByteString &content, CBC_QRCoderBitVec
tor* bits, CFX_ByteString encoding, FX_INT32 &e); | |
37 static void Append8BitBytes(CFX_ByteArray &bytes, CBC_QRCoderBitVector *bits
, FX_INT32 &e); | |
38 static void AppendKanjiBytes(const CFX_ByteString &content, CBC_QRCoderBitVe
ctor* bits, FX_INT32 &e); | |
39 static void AppendGBKBytes(const CFX_ByteString &content, CBC_QRCoderBitVect
or* bits, FX_INT32 &e); | |
40 static void InitQRCode(FX_INT32 numInputBytes, FX_INT32 versionNumber, | |
41 CBC_QRCoderErrorCorrectionLevel* ecLevel, CBC_QRCoder
Mode* mode, CBC_QRCoder* qrCode, FX_INT32 &e); | |
42 static void InitQRCode(FX_INT32 numInputBytes, CBC_QRCoderErrorCorrectionLev
el* ecLevel, CBC_QRCoderMode* mode, CBC_QRCoder* qrCode, FX_INT32 &e); | |
43 static void AppendModeInfo(CBC_QRCoderMode* mode, CBC_QRCoderBitVector* bits
, FX_INT32 &e); | |
44 static void AppendLengthInfo(FX_INT32 numLetters, FX_INT32 version, CBC_QRCo
derMode* mode, CBC_QRCoderBitVector* bits, FX_INT32 &e); | |
45 | |
46 static void InterleaveWithECBytes(CBC_QRCoderBitVector* bits, FX_INT32 numTo
talBytes, FX_INT32 numDataBytes, FX_INT32 numRSBlocks, CBC_QRCoderBitVector* res
ult, FX_INT32 &e); | |
47 static void GetNumDataBytesAndNumECBytesForBlockID(FX_INT32 numTotalBytes, F
X_INT32 numDataBytes, | |
48 FX_INT32 numRSBlocks, FX_INT32 blockID, | |
49 FX_INT32 &numDataBytesInBlock, FX_INT32& numECBytesInBlocks); | |
50 static CBC_CommonByteArray* GenerateECBytes(CBC_CommonByteArray* dataBytes,
FX_INT32 numEcBytesInBlock, FX_INT32 &e); | |
51 static FX_INT32 ChooseMaskPattern(CBC_QRCoderBitVector* bits, CBC_QRCoderErr
orCorrectionLevel* ecLevel, | |
52 FX_INT32 version, CBC_CommonByteMatrix* ma
trix, FX_INT32 &e); | |
53 static FX_INT32 CalculateMaskPenalty(CBC_CommonByteMatrix* matrix); | |
54 static void TerminateBits(FX_INT32 numDataBytes, CBC_QRCoderBitVector* bits,
FX_INT32 &e); | |
55 static FX_INT32 GetSpanByVersion(CBC_QRCoderMode *modeFirst, CBC_QRCoderMode
*modeSecond, FX_INT32 versionNum, FX_INT32 &e); | |
56 static void MergeString(CFX_PtrArray &result, FX_INT32 versionNum, FX_INT32
&e); | |
57 static void SplitString(const CFX_ByteString &content, CFX_PtrArray &result)
; | |
58 static void AppendDataModeLenghInfo(CFX_PtrArray &splitResult, CBC_QRCoderBi
tVector &headerAndDataBits, CBC_QRCoderMode *tempMode, CBC_QRCoder *qrCode,
CFX_ByteString &encoding, FX_INT32 &e); | |
59 }; | |
60 #endif | |
OLD | NEW |