blob: 5168b77fdbc90275d458cc2cac38fcc8cc9ad9be [file] [log] [blame]
// Copyright 2014 The PDFium Authors
// 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_FWL_CFWL_BARCODE_H_
#define XFA_FWL_CFWL_BARCODE_H_
#include <stdint.h>
#include <memory>
#include <optional>
#include "fxbarcode/BC_Library.h"
#include "xfa/fwl/cfwl_edit.h"
class CFX_Barcode;
namespace pdfium {
class CFWL_Barcode final : public CFWL_Edit {
public:
CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED;
~CFWL_Barcode() override;
// CFWL_Widget
FWL_Type GetClassID() const override;
void Update() override;
void DrawWidget(CFGAS_GEGraphics* pGraphics,
const CFX_Matrix& matrix) override;
void OnProcessEvent(CFWL_Event* pEvent) override;
// CFWL_Edit
void SetText(const WideString& wsText) override;
void SetTextSkipNotify(const WideString& wsText) override;
void SetType(BC_TYPE type);
bool IsProtectedType() const;
void SetModuleHeight(int32_t height);
void SetModuleWidth(int32_t width);
void SetDataLength(int32_t dataLength);
void SetCalChecksum(bool calChecksum);
void SetPrintChecksum(bool printChecksum);
void SetTextLocation(BC_TEXT_LOC location);
void SetWideNarrowRatio(int8_t ratio);
void SetStartChar(char startChar);
void SetEndChar(char endChar);
void SetErrorCorrectionLevel(int32_t ecLevel);
private:
enum class Status : uint8_t {
kNormal,
kNeedUpdate,
kEncodeSuccess,
};
explicit CFWL_Barcode(CFWL_App* pApp);
void GenerateBarcodeImageCache();
void CreateBarcodeEngine();
BC_TYPE type_ = BC_TYPE::kUnknown;
Status status_ = Status::kNormal;
std::optional<BC_TEXT_LOC> text_location_;
std::optional<bool> cal_checksum_;
std::optional<bool> print_checksum_;
std::optional<char> start_char_;
std::optional<char> end_char_;
std::optional<int8_t> wide_narrow_ratio_;
std::optional<int32_t> module_height_;
std::optional<int32_t> module_width_;
std::optional<int32_t> data_length_;
std::optional<int32_t> eclevel_;
std::unique_ptr<CFX_Barcode> barcode_engine_;
};
} // namespace pdfium
// TODO(crbug.com/42271761): Remove.
using pdfium::CFWL_Barcode;
#endif // XFA_FWL_CFWL_BARCODE_H_