// Copyright 2014 PDFium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com

#ifndef XFA_SRC_FXBARCODE_BC_WRITER_H_
#define XFA_SRC_FXBARCODE_BC_WRITER_H_

#include "core/include/fxcrt/fx_string.h"
#include "core/include/fxge/fx_dib.h"
#include "xfa/src/fxbarcode/utils.h"

class CBC_Writer {
 public:
  CBC_Writer();
  virtual ~CBC_Writer();
  virtual FX_BOOL SetCharEncoding(int32_t encoding);
  virtual FX_BOOL SetModuleHeight(int32_t moduleHeight);
  virtual FX_BOOL SetModuleWidth(int32_t moduleWidth);
  virtual FX_BOOL SetHeight(int32_t height);
  virtual FX_BOOL SetWidth(int32_t width);
  virtual void SetBackgroundColor(FX_ARGB backgroundColor);
  virtual void SetBarcodeColor(FX_ARGB foregroundColor);

 protected:
  CFX_DIBitmap* CreateDIBitmap(int32_t width, int32_t height);
  int32_t m_CharEncoding;
  int32_t m_ModuleHeight;
  int32_t m_ModuleWidth;
  int32_t m_Height;
  int32_t m_Width;
  FXDIB_Format m_colorSpace;
  FX_ARGB m_barColor;
  FX_ARGB m_backgroundColor;
};

#endif  // XFA_SRC_FXBARCODE_BC_WRITER_H_
