Tom Sepez | 99ffdb0 | 2016-01-26 14:51:21 -0800 | [diff] [blame] | 1 | // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | |
dsinclair | 447b1f3 | 2016-12-08 10:06:32 -0800 | [diff] [blame] | 7 | #ifndef XFA_FWL_CFWL_BARCODE_H_ |
| 8 | #define XFA_FWL_CFWL_BARCODE_H_ |
Dan Sinclair | c7cd809 | 2016-02-18 15:02:55 -0500 | [diff] [blame] | 9 | |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 10 | #include <memory> |
Dan Sinclair | 880962c | 2016-02-23 09:09:24 -0500 | [diff] [blame] | 11 | |
Dan Sinclair | e778668 | 2017-03-29 15:18:41 -0400 | [diff] [blame] | 12 | #include "fxbarcode/BC_Library.h" |
dsinclair | 447b1f3 | 2016-12-08 10:06:32 -0800 | [diff] [blame] | 13 | #include "xfa/fwl/cfwl_edit.h" |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 14 | |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 15 | class CFX_Barcode; |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 16 | |
| 17 | enum FWL_BCDAttribute { |
| 18 | FWL_BCDATTRIBUTE_NONE = 0, |
| 19 | FWL_BCDATTRIBUTE_CHARENCODING = 1 << 0, |
| 20 | FWL_BCDATTRIBUTE_MODULEHEIGHT = 1 << 1, |
| 21 | FWL_BCDATTRIBUTE_MODULEWIDTH = 1 << 2, |
| 22 | FWL_BCDATTRIBUTE_DATALENGTH = 1 << 3, |
| 23 | FWL_BCDATTRIBUTE_CALCHECKSUM = 1 << 4, |
| 24 | FWL_BCDATTRIBUTE_PRINTCHECKSUM = 1 << 5, |
| 25 | FWL_BCDATTRIBUTE_TEXTLOCATION = 1 << 6, |
| 26 | FWL_BCDATTRIBUTE_WIDENARROWRATIO = 1 << 7, |
| 27 | FWL_BCDATTRIBUTE_STARTCHAR = 1 << 8, |
| 28 | FWL_BCDATTRIBUTE_ENDCHAR = 1 << 9, |
Lei Zhang | 03d5893 | 2017-04-03 16:40:51 -0700 | [diff] [blame] | 29 | FWL_BCDATTRIBUTE_ECLEVEL = 1 << 10, |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 30 | }; |
| 31 | |
Tom Sepez | 5586545 | 2018-08-27 20:18:04 +0000 | [diff] [blame] | 32 | class CFWL_Barcode final : public CFWL_Edit { |
Tom Sepez | 99ffdb0 | 2016-01-26 14:51:21 -0800 | [diff] [blame] | 33 | public: |
dsinclair | 1a7534a | 2016-11-22 15:56:11 -0800 | [diff] [blame] | 34 | explicit CFWL_Barcode(const CFWL_App* pApp); |
dsinclair | 0ca71ec | 2016-10-19 07:59:25 -0700 | [diff] [blame] | 35 | ~CFWL_Barcode() override; |
weili | 5d8e5aa | 2016-08-08 17:30:37 -0700 | [diff] [blame] | 36 | |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 37 | // CFWL_Widget |
| 38 | FWL_Type GetClassID() const override; |
| 39 | void Update() override; |
Lei Zhang | 4b47214 | 2017-08-17 14:30:08 -0700 | [diff] [blame] | 40 | void DrawWidget(CXFA_Graphics* pGraphics, const CFX_Matrix& matrix) override; |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 41 | void OnProcessEvent(CFWL_Event* pEvent) override; |
dsinclair | 2085538 | 2016-10-31 07:29:34 -0700 | [diff] [blame] | 42 | |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 43 | // CFWL_Edit |
Lei Zhang | b600f15 | 2019-01-25 23:21:50 +0000 | [diff] [blame] | 44 | void SetText(const WideString& wsText) override; |
| 45 | void SetTextSkipNotify(const WideString& wsText) override; |
weili | 4ce94e1 | 2016-06-18 06:21:57 -0700 | [diff] [blame] | 46 | |
dsinclair | c64b76c | 2016-11-14 09:01:37 -0800 | [diff] [blame] | 47 | void SetType(BC_TYPE type); |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 48 | bool IsProtectedType() const; |
dsinclair | c64b76c | 2016-11-14 09:01:37 -0800 | [diff] [blame] | 49 | |
| 50 | void SetCharEncoding(BC_CHAR_ENCODING encoding); |
| 51 | void SetModuleHeight(int32_t height); |
| 52 | void SetModuleWidth(int32_t width); |
| 53 | void SetDataLength(int32_t dataLength); |
| 54 | void SetCalChecksum(bool calChecksum); |
| 55 | void SetPrintChecksum(bool printChecksum); |
| 56 | void SetTextLocation(BC_TEXT_LOC location); |
Lei Zhang | 1badb85 | 2017-04-20 15:58:56 -0700 | [diff] [blame] | 57 | void SetWideNarrowRatio(int8_t ratio); |
Dan Sinclair | 812e96c | 2017-03-13 16:43:37 -0400 | [diff] [blame] | 58 | void SetStartChar(char startChar); |
| 59 | void SetEndChar(char endChar); |
dsinclair | c64b76c | 2016-11-14 09:01:37 -0800 | [diff] [blame] | 60 | void SetErrorCorrectionLevel(int32_t ecLevel); |
dsinclair | c64b76c | 2016-11-14 09:01:37 -0800 | [diff] [blame] | 61 | |
dsinclair | eb3f68c | 2016-11-07 10:28:47 -0800 | [diff] [blame] | 62 | private: |
Lei Zhang | 41f22be | 2019-01-25 23:18:50 +0000 | [diff] [blame] | 63 | enum class Status : uint8_t { |
| 64 | kNormal, |
| 65 | kNeedUpdate, |
| 66 | kEncodeSuccess, |
| 67 | }; |
| 68 | |
dsinclair | 2c489cc | 2016-11-23 16:17:20 -0800 | [diff] [blame] | 69 | void GenerateBarcodeImageCache(); |
| 70 | void CreateBarcodeEngine(); |
| 71 | |
Lei Zhang | 41f22be | 2019-01-25 23:18:50 +0000 | [diff] [blame] | 72 | BC_TYPE m_type = BC_UNKNOWN; |
Tom Sepez | c58babd | 2020-01-14 20:04:16 +0000 | [diff] [blame] | 73 | BC_CHAR_ENCODING m_eCharEncoding = CHAR_ENCODING_UTF8; |
| 74 | BC_TEXT_LOC m_eTextLocation = BC_TEXT_LOC_NONE; |
| 75 | Status m_eStatus = Status::kNormal; |
| 76 | bool m_bCalChecksum = false; |
| 77 | bool m_bPrintChecksum = false; |
| 78 | char m_cStartChar = 0; |
| 79 | char m_cEndChar = 0; |
| 80 | int8_t m_nWideNarrowRatio = 1; |
| 81 | int32_t m_nModuleHeight = -1; |
| 82 | int32_t m_nModuleWidth = -1; |
| 83 | int32_t m_nDataLength = 0; |
| 84 | int32_t m_nECLevel = 0; |
Lei Zhang | 41f22be | 2019-01-25 23:18:50 +0000 | [diff] [blame] | 85 | uint32_t m_dwAttributeMask = 0; |
Tom Sepez | c58babd | 2020-01-14 20:04:16 +0000 | [diff] [blame] | 86 | std::unique_ptr<CFX_Barcode> m_pBarcodeEngine; |
Tom Sepez | 99ffdb0 | 2016-01-26 14:51:21 -0800 | [diff] [blame] | 87 | }; |
Dan Sinclair | c7cd809 | 2016-02-18 15:02:55 -0500 | [diff] [blame] | 88 | |
dsinclair | 447b1f3 | 2016-12-08 10:06:32 -0800 | [diff] [blame] | 89 | #endif // XFA_FWL_CFWL_BARCODE_H_ |