1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef XFA_FWL_CFWL_BARCODE_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define XFA_FWL_CFWL_BARCODE_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h> 11*3ac0a46fSAndroid Build Coastguard Worker 12*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 13*3ac0a46fSAndroid Build Coastguard Worker 14*3ac0a46fSAndroid Build Coastguard Worker #include "fxbarcode/BC_Library.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/abseil-cpp/absl/types/optional.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fwl/cfwl_edit.h" 17*3ac0a46fSAndroid Build Coastguard Worker 18*3ac0a46fSAndroid Build Coastguard Worker class CFX_Barcode; 19*3ac0a46fSAndroid Build Coastguard Worker 20*3ac0a46fSAndroid Build Coastguard Worker class CFWL_Barcode final : public CFWL_Edit { 21*3ac0a46fSAndroid Build Coastguard Worker public: 22*3ac0a46fSAndroid Build Coastguard Worker CONSTRUCT_VIA_MAKE_GARBAGE_COLLECTED; 23*3ac0a46fSAndroid Build Coastguard Worker ~CFWL_Barcode() override; 24*3ac0a46fSAndroid Build Coastguard Worker 25*3ac0a46fSAndroid Build Coastguard Worker // CFWL_Widget 26*3ac0a46fSAndroid Build Coastguard Worker FWL_Type GetClassID() const override; 27*3ac0a46fSAndroid Build Coastguard Worker void Update() override; 28*3ac0a46fSAndroid Build Coastguard Worker void DrawWidget(CFGAS_GEGraphics* pGraphics, 29*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix) override; 30*3ac0a46fSAndroid Build Coastguard Worker void OnProcessEvent(CFWL_Event* pEvent) override; 31*3ac0a46fSAndroid Build Coastguard Worker 32*3ac0a46fSAndroid Build Coastguard Worker // CFWL_Edit 33*3ac0a46fSAndroid Build Coastguard Worker void SetText(const WideString& wsText) override; 34*3ac0a46fSAndroid Build Coastguard Worker void SetTextSkipNotify(const WideString& wsText) override; 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker void SetType(BC_TYPE type); 37*3ac0a46fSAndroid Build Coastguard Worker bool IsProtectedType() const; 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker void SetCharEncoding(BC_CHAR_ENCODING encoding); 40*3ac0a46fSAndroid Build Coastguard Worker void SetModuleHeight(int32_t height); 41*3ac0a46fSAndroid Build Coastguard Worker void SetModuleWidth(int32_t width); 42*3ac0a46fSAndroid Build Coastguard Worker void SetDataLength(int32_t dataLength); 43*3ac0a46fSAndroid Build Coastguard Worker void SetCalChecksum(bool calChecksum); 44*3ac0a46fSAndroid Build Coastguard Worker void SetPrintChecksum(bool printChecksum); 45*3ac0a46fSAndroid Build Coastguard Worker void SetTextLocation(BC_TEXT_LOC location); 46*3ac0a46fSAndroid Build Coastguard Worker void SetWideNarrowRatio(int8_t ratio); 47*3ac0a46fSAndroid Build Coastguard Worker void SetStartChar(char startChar); 48*3ac0a46fSAndroid Build Coastguard Worker void SetEndChar(char endChar); 49*3ac0a46fSAndroid Build Coastguard Worker void SetErrorCorrectionLevel(int32_t ecLevel); 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker private: 52*3ac0a46fSAndroid Build Coastguard Worker enum class Status : uint8_t { 53*3ac0a46fSAndroid Build Coastguard Worker kNormal, 54*3ac0a46fSAndroid Build Coastguard Worker kNeedUpdate, 55*3ac0a46fSAndroid Build Coastguard Worker kEncodeSuccess, 56*3ac0a46fSAndroid Build Coastguard Worker }; 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker explicit CFWL_Barcode(CFWL_App* pApp); 59*3ac0a46fSAndroid Build Coastguard Worker 60*3ac0a46fSAndroid Build Coastguard Worker void GenerateBarcodeImageCache(); 61*3ac0a46fSAndroid Build Coastguard Worker void CreateBarcodeEngine(); 62*3ac0a46fSAndroid Build Coastguard Worker 63*3ac0a46fSAndroid Build Coastguard Worker BC_TYPE m_type = BC_TYPE::kUnknown; 64*3ac0a46fSAndroid Build Coastguard Worker Status m_eStatus = Status::kNormal; 65*3ac0a46fSAndroid Build Coastguard Worker absl::optional<BC_TEXT_LOC> m_eTextLocation; 66*3ac0a46fSAndroid Build Coastguard Worker absl::optional<BC_CHAR_ENCODING> m_eCharEncoding; 67*3ac0a46fSAndroid Build Coastguard Worker absl::optional<bool> m_bCalChecksum; 68*3ac0a46fSAndroid Build Coastguard Worker absl::optional<bool> m_bPrintChecksum; 69*3ac0a46fSAndroid Build Coastguard Worker absl::optional<char> m_cStartChar; 70*3ac0a46fSAndroid Build Coastguard Worker absl::optional<char> m_cEndChar; 71*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int8_t> m_nWideNarrowRatio; 72*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int32_t> m_nModuleHeight; 73*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int32_t> m_nModuleWidth; 74*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int32_t> m_nDataLength; 75*3ac0a46fSAndroid Build Coastguard Worker absl::optional<int32_t> m_nECLevel; 76*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<CFX_Barcode> m_pBarcodeEngine; 77*3ac0a46fSAndroid Build Coastguard Worker }; 78*3ac0a46fSAndroid Build Coastguard Worker 79*3ac0a46fSAndroid Build Coastguard Worker #endif // XFA_FWL_CFWL_BARCODE_H_ 80