|  | // 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 "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<BC_TEXT_LOC> m_eTextLocation; | 
|  | absl::optional<BC_CHAR_ENCODING> m_eCharEncoding; | 
|  | absl::optional<bool> m_bCalChecksum; | 
|  | absl::optional<bool> m_bPrintChecksum; | 
|  | absl::optional<char> m_cStartChar; | 
|  | absl::optional<char> m_cEndChar; | 
|  | absl::optional<int8_t> m_nWideNarrowRatio; | 
|  | absl::optional<int32_t> m_nModuleHeight; | 
|  | absl::optional<int32_t> m_nModuleWidth; | 
|  | absl::optional<int32_t> m_nDataLength; | 
|  | absl::optional<int32_t> m_nECLevel; | 
|  | std::unique_ptr<CFX_Barcode> m_pBarcodeEngine; | 
|  | }; | 
|  |  | 
|  | #endif  // XFA_FWL_CFWL_BARCODE_H_ |