1// Copyright 2016 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_FXBARCODE_CBC_CODEBASE_H_
8#define XFA_FXBARCODE_CBC_CODEBASE_H_
9
10#include <memory>
11
12#include "core/fxcrt/fx_system.h"
13#include "core/fxge/fx_dib.h"
14#include "xfa/fxbarcode/BC_Library.h"
15
16class CBC_Writer;
17class CBC_Reader;
18class CFX_DIBitmap;
19class CFX_RenderDevice;
20
21class CBC_CodeBase {
22 public:
23  explicit CBC_CodeBase(CBC_Writer* pWriter);
24  virtual ~CBC_CodeBase();
25
26  virtual BC_TYPE GetType() = 0;
27  virtual bool Encode(const CFX_WideStringC& contents,
28                      bool isDevice,
29                      int32_t& e) = 0;
30  virtual bool RenderDevice(CFX_RenderDevice* device,
31                            const CFX_Matrix* matrix,
32                            int32_t& e) = 0;
33  virtual bool RenderBitmap(CFX_DIBitmap*& pOutBitmap, int32_t& e) = 0;
34
35  bool SetCharEncoding(int32_t encoding);
36  bool SetModuleHeight(int32_t moduleHeight);
37  bool SetModuleWidth(int32_t moduleWidth);
38  bool SetHeight(int32_t height);
39  bool SetWidth(int32_t width);
40  void SetBackgroundColor(FX_ARGB backgroundColor);
41  void SetBarcodeColor(FX_ARGB foregroundColor);
42
43 protected:
44  std::unique_ptr<CBC_Writer> m_pBCWriter;
45};
46
47#endif  // XFA_FXBARCODE_CBC_CODEBASE_H_
48