// 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 #include #include "fxbarcode/BC_Library.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "xfa/fwl/cfwl_edit.h" class CFX_Barcode; 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 SetCharEncoding(BC_CHAR_ENCODING encoding); 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 m_type = BC_TYPE::kUnknown; Status m_eStatus = Status::kNormal; absl::optional m_eTextLocation; absl::optional m_eCharEncoding; absl::optional m_bCalChecksum; absl::optional m_bPrintChecksum; absl::optional m_cStartChar; absl::optional m_cEndChar; absl::optional m_nWideNarrowRatio; absl::optional m_nModuleHeight; absl::optional m_nModuleWidth; absl::optional m_nDataLength; absl::optional m_nECLevel; std::unique_ptr m_pBarcodeEngine; }; #endif // XFA_FWL_CFWL_BARCODE_H_