blob: 6669cbfbc96e103d1b7ec012c81fb7327487d311 [file] [log] [blame]
Dan Sinclair1770c022016-03-14 14:14:16 -04001// 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
Dan Sinclaire7786682017-03-29 15:18:41 -04007#ifndef FXBARCODE_QRCODE_BC_QRCODERMODE_H_
8#define FXBARCODE_QRCODE_BC_QRCODERMODE_H_
Dan Sinclair1770c022016-03-14 14:14:16 -04009
10#include <stdint.h>
11
weilie76203d2016-08-09 13:45:03 -070012#include <vector>
13
dsinclaira52ab742016-09-29 13:59:29 -070014#include "core/fxcrt/fx_string.h"
Dan Sinclair1770c022016-03-14 14:14:16 -040015
Dan Sinclair1770c022016-03-14 14:14:16 -040016class CBC_QRCoderMode {
Dan Sinclair1770c022016-03-14 14:14:16 -040017 public:
weilie76203d2016-08-09 13:45:03 -070018 virtual ~CBC_QRCoderMode();
19
20 static void Initialize();
21 static void Finalize();
22 static CBC_QRCoderMode* ForBits(int32_t bits, int32_t& e);
23 static void Destroy();
24
Lei Zhang8a24b252017-04-06 14:23:26 -070025 int32_t GetCharacterCountBits(int32_t number, int32_t& e) const;
weilie76203d2016-08-09 13:45:03 -070026 int32_t GetBits() const;
27 CFX_ByteString GetName() const;
28
Dan Sinclair1770c022016-03-14 14:14:16 -040029 static CBC_QRCoderMode* sBYTE;
30 static CBC_QRCoderMode* sNUMERIC;
31 static CBC_QRCoderMode* sALPHANUMERIC;
32 static CBC_QRCoderMode* sKANJI;
33 static CBC_QRCoderMode* sECI;
34 static CBC_QRCoderMode* sGBK;
35 static CBC_QRCoderMode* sTERMINATOR;
36 static CBC_QRCoderMode* sFNC1_FIRST_POSITION;
37 static CBC_QRCoderMode* sFNC1_SECOND_POSITION;
38 static CBC_QRCoderMode* sSTRUCTURED_APPEND;
Dan Sinclair1770c022016-03-14 14:14:16 -040039
weilie76203d2016-08-09 13:45:03 -070040 private:
41 CBC_QRCoderMode();
42 CBC_QRCoderMode(std::vector<int32_t> charCountBits,
43 int32_t bits,
44 CFX_ByteString name);
45
46 std::vector<int32_t> m_characterCountBitsForVersions;
47 const int32_t m_bits;
48 const CFX_ByteString m_name;
Dan Sinclair1770c022016-03-14 14:14:16 -040049};
50
Dan Sinclaire7786682017-03-29 15:18:41 -040051#endif // FXBARCODE_QRCODE_BC_QRCODERMODE_H_