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_FWL_CFX_BARCODE_H_
8#define XFA_FWL_CFX_BARCODE_H_
9
10#include <memory>
11
12#include "core/fxcrt/fx_coordinates.h"
13#include "core/fxcrt/fx_string.h"
14#include "core/fxcrt/fx_system.h"
15#include "core/fxge/fx_dib.h"
16#include "xfa/fxbarcode/BC_Library.h"
17
18class CBC_CodeBase;
19class CFX_Font;
20class CFX_RenderDevice;
21class CFX_Matrix;
22
23class CFX_Barcode {
24 public:
25  CFX_Barcode();
26  ~CFX_Barcode();
27
28  bool Create(BC_TYPE type);
29  BC_TYPE GetType();
30  bool Encode(const CFX_WideStringC& contents, bool isDevice, int32_t& e);
31
32  bool RenderDevice(CFX_RenderDevice* device,
33                    const CFX_Matrix* matrix,
34                    int32_t& e);
35
36  bool SetCharEncoding(BC_CHAR_ENCODING encoding);
37
38  bool SetModuleHeight(int32_t moduleHeight);
39  bool SetModuleWidth(int32_t moduleWidth);
40
41  bool SetHeight(int32_t height);
42  bool SetWidth(int32_t width);
43
44  bool SetPrintChecksum(bool checksum);
45  bool SetDataLength(int32_t length);
46  bool SetCalChecksum(bool state);
47
48  bool SetFont(CFX_Font* pFont);
49  bool SetFontSize(FX_FLOAT size);
50  bool SetFontColor(FX_ARGB color);
51
52  bool SetTextLocation(BC_TEXT_LOC location);
53
54  bool SetWideNarrowRatio(int32_t ratio);
55  bool SetStartChar(FX_CHAR start);
56  bool SetEndChar(FX_CHAR end);
57  bool SetVersion(int32_t version);
58  bool SetErrorCorrectionLevel(int32_t level);
59  bool SetTruncated(bool truncated);
60
61 private:
62  std::unique_ptr<CBC_CodeBase> m_pBCEngine;
63};
64
65#endif  // XFA_FWL_CFX_BARCODE_H_
66