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 FXBARCODE_ONED_BC_ONEDIMWRITER_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FXBARCODE_ONED_BC_ONEDIMWRITER_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <stddef.h> 11*3ac0a46fSAndroid Build Coastguard Worker #include <stdint.h> 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker #include <vector> 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/data_vector.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_string.h" 17*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 18*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxge/cfx_textrenderoptions.h" 19*3ac0a46fSAndroid Build Coastguard Worker #include "fxbarcode/BC_Library.h" 20*3ac0a46fSAndroid Build Coastguard Worker #include "fxbarcode/BC_Writer.h" 21*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/containers/span.h" 22*3ac0a46fSAndroid Build Coastguard Worker 23*3ac0a46fSAndroid Build Coastguard Worker class CFX_Font; 24*3ac0a46fSAndroid Build Coastguard Worker class CFX_Matrix; 25*3ac0a46fSAndroid Build Coastguard Worker class CFX_Path; 26*3ac0a46fSAndroid Build Coastguard Worker class CFX_RenderDevice; 27*3ac0a46fSAndroid Build Coastguard Worker class TextCharPos; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker class CBC_OneDimWriter : public CBC_Writer { 30*3ac0a46fSAndroid Build Coastguard Worker public: GetTextRenderOptions()31*3ac0a46fSAndroid Build Coastguard Worker static constexpr CFX_TextRenderOptions GetTextRenderOptions() { 32*3ac0a46fSAndroid Build Coastguard Worker return CFX_TextRenderOptions(CFX_TextRenderOptions::kLcd); 33*3ac0a46fSAndroid Build Coastguard Worker } 34*3ac0a46fSAndroid Build Coastguard Worker static bool HasValidContentSize(WideStringView contents); 35*3ac0a46fSAndroid Build Coastguard Worker 36*3ac0a46fSAndroid Build Coastguard Worker CBC_OneDimWriter(); 37*3ac0a46fSAndroid Build Coastguard Worker ~CBC_OneDimWriter() override; 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker virtual bool RenderResult(WideStringView contents, 40*3ac0a46fSAndroid Build Coastguard Worker pdfium::span<const uint8_t> code); 41*3ac0a46fSAndroid Build Coastguard Worker virtual bool CheckContentValidity(WideStringView contents) = 0; 42*3ac0a46fSAndroid Build Coastguard Worker virtual WideString FilterContents(WideStringView contents) = 0; 43*3ac0a46fSAndroid Build Coastguard Worker virtual void SetDataLength(int32_t length); 44*3ac0a46fSAndroid Build Coastguard Worker 45*3ac0a46fSAndroid Build Coastguard Worker void SetPrintChecksum(bool checksum); 46*3ac0a46fSAndroid Build Coastguard Worker void SetCalcChecksum(bool state); 47*3ac0a46fSAndroid Build Coastguard Worker void SetFontSize(float size); 48*3ac0a46fSAndroid Build Coastguard Worker void SetFontStyle(int32_t style); 49*3ac0a46fSAndroid Build Coastguard Worker void SetFontColor(FX_ARGB color); 50*3ac0a46fSAndroid Build Coastguard Worker 51*3ac0a46fSAndroid Build Coastguard Worker virtual DataVector<uint8_t> Encode(const ByteString& contents) = 0; 52*3ac0a46fSAndroid Build Coastguard Worker bool RenderDeviceResult(CFX_RenderDevice* device, 53*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix, 54*3ac0a46fSAndroid Build Coastguard Worker WideStringView contents); 55*3ac0a46fSAndroid Build Coastguard Worker bool SetFont(CFX_Font* cFont); 56*3ac0a46fSAndroid Build Coastguard Worker 57*3ac0a46fSAndroid Build Coastguard Worker protected: 58*3ac0a46fSAndroid Build Coastguard Worker virtual bool ShowChars(WideStringView contents, 59*3ac0a46fSAndroid Build Coastguard Worker CFX_RenderDevice* device, 60*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix, 61*3ac0a46fSAndroid Build Coastguard Worker int32_t barWidth); 62*3ac0a46fSAndroid Build Coastguard Worker void ShowDeviceChars(CFX_RenderDevice* device, 63*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& matrix, 64*3ac0a46fSAndroid Build Coastguard Worker const ByteString str, 65*3ac0a46fSAndroid Build Coastguard Worker float geWidth, 66*3ac0a46fSAndroid Build Coastguard Worker TextCharPos* pCharPos, 67*3ac0a46fSAndroid Build Coastguard Worker float locX, 68*3ac0a46fSAndroid Build Coastguard Worker float locY, 69*3ac0a46fSAndroid Build Coastguard Worker int32_t barWidth); 70*3ac0a46fSAndroid Build Coastguard Worker void CalcTextInfo(const ByteString& text, 71*3ac0a46fSAndroid Build Coastguard Worker TextCharPos* charPos, 72*3ac0a46fSAndroid Build Coastguard Worker CFX_Font* cFont, 73*3ac0a46fSAndroid Build Coastguard Worker float geWidth, 74*3ac0a46fSAndroid Build Coastguard Worker int32_t fontSize, 75*3ac0a46fSAndroid Build Coastguard Worker float& charsLen); 76*3ac0a46fSAndroid Build Coastguard Worker pdfium::span<uint8_t> AppendPattern(pdfium::span<uint8_t> target, 77*3ac0a46fSAndroid Build Coastguard Worker pdfium::span<const uint8_t> pattern, 78*3ac0a46fSAndroid Build Coastguard Worker bool startColor); 79*3ac0a46fSAndroid Build Coastguard Worker 80*3ac0a46fSAndroid Build Coastguard Worker bool m_bPrintChecksum = true; 81*3ac0a46fSAndroid Build Coastguard Worker bool m_bCalcChecksum = false; 82*3ac0a46fSAndroid Build Coastguard Worker bool m_bLeftPadding = false; 83*3ac0a46fSAndroid Build Coastguard Worker bool m_bRightPadding = false; 84*3ac0a46fSAndroid Build Coastguard Worker 85*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CFX_Font> m_pFont; 86*3ac0a46fSAndroid Build Coastguard Worker float m_fFontSize = 10.0f; 87*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iFontStyle = 0; 88*3ac0a46fSAndroid Build Coastguard Worker uint32_t m_fontColor = 0xff000000; 89*3ac0a46fSAndroid Build Coastguard Worker BC_TEXT_LOC m_locTextLoc = BC_TEXT_LOC::kBelowEmbed; 90*3ac0a46fSAndroid Build Coastguard Worker 91*3ac0a46fSAndroid Build Coastguard Worker int32_t m_iDataLenth = 0; 92*3ac0a46fSAndroid Build Coastguard Worker size_t m_iContentLen = 0; 93*3ac0a46fSAndroid Build Coastguard Worker 94*3ac0a46fSAndroid Build Coastguard Worker std::vector<CFX_Path> m_output; 95*3ac0a46fSAndroid Build Coastguard Worker int32_t m_barWidth; 96*3ac0a46fSAndroid Build Coastguard Worker float m_outputHScale; 97*3ac0a46fSAndroid Build Coastguard Worker }; 98*3ac0a46fSAndroid Build Coastguard Worker 99*3ac0a46fSAndroid Build Coastguard Worker #endif // FXBARCODE_ONED_BC_ONEDIMWRITER_H_ 100