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 7 #ifndef CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ 8 #define CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ 9 10 #include "core/include/fpdfapi/fpdf_parser.h" 11 #include "fpdf_vt.h" 12 13 class IPVT_FontMap { 14 public: ~IPVT_FontMap()15 virtual ~IPVT_FontMap() {} 16 virtual CPDF_Font* GetPDFFont(int32_t nFontIndex) = 0; 17 virtual CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) = 0; 18 }; 19 struct CPVT_Dash { CPVT_DashCPVT_Dash20 CPVT_Dash(int32_t dash, int32_t gap, int32_t phase) 21 : nDash(dash), nGap(gap), nPhase(phase) {} 22 23 int32_t nDash; 24 25 int32_t nGap; 26 27 int32_t nPhase; 28 }; 29 #define CT_TRANSPARENT 0 30 #define CT_GRAY 1 31 #define CT_RGB 2 32 #define CT_CMYK 3 33 struct CPVT_Color { 34 CPVT_Color(int32_t type = 0, 35 FX_FLOAT color1 = 0.0f, 36 FX_FLOAT color2 = 0.0f, 37 FX_FLOAT color3 = 0.0f, 38 FX_FLOAT color4 = 0.0f) nColorTypeCPVT_Color39 : nColorType(type), 40 fColor1(color1), 41 fColor2(color2), 42 fColor3(color3), 43 fColor4(color4) {} 44 45 int32_t nColorType; 46 FX_FLOAT fColor1; 47 FX_FLOAT fColor2; 48 FX_FLOAT fColor3; 49 FX_FLOAT fColor4; 50 }; 51 class CPVT_Provider : public IPDF_VariableText_Provider { 52 public: 53 CPVT_Provider(IPVT_FontMap* pFontMap); 54 ~CPVT_Provider() override; 55 56 // IPDF_VariableText_Provider 57 int32_t GetCharWidth(int32_t nFontIndex, 58 FX_WORD word, 59 int32_t nWordStyle) override; 60 int32_t GetTypeAscent(int32_t nFontIndex) override; 61 int32_t GetTypeDescent(int32_t nFontIndex) override; 62 int32_t GetWordFontIndex(FX_WORD word, 63 int32_t charset, 64 int32_t nFontIndex) override; 65 FX_BOOL IsLatinWord(FX_WORD word) override; 66 int32_t GetDefaultFontIndex() override; 67 68 private: 69 IPVT_FontMap* m_pFontMap; 70 }; 71 #define PBS_SOLID 0 72 #define PBS_DASH 1 73 #define PBS_BEVELED 2 74 #define PBS_INSET 3 75 #define PBS_UNDERLINED 4 76 class CPVT_GenerateAP { 77 public: 78 static FX_BOOL GenerateTextFieldAP(CPDF_Document* pDoc, 79 CPDF_Dictionary* pAnnotDict); 80 81 static FX_BOOL GenerateComboBoxAP(CPDF_Document* pDoc, 82 CPDF_Dictionary* pAnnotDict); 83 84 static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, 85 CPDF_Dictionary* pAnnotDict); 86 87 static CFX_ByteString GenerateEditAP(IPVT_FontMap* pFontMap, 88 IPDF_VariableText_Iterator* pIterator, 89 const CPDF_Point& ptOffset, 90 FX_BOOL bContinuous, 91 FX_WORD SubWord = 0, 92 const CPVT_WordRange* pVisible = NULL); 93 94 static CFX_ByteString GenerateBorderAP(const CPDF_Rect& rect, 95 FX_FLOAT fWidth, 96 const CPVT_Color& color, 97 const CPVT_Color& crLeftTop, 98 const CPVT_Color& crRightBottom, 99 int32_t nStyle, 100 const CPVT_Dash& dash); 101 102 static CFX_ByteString GenerateColorAP(const CPVT_Color& color, 103 const FX_BOOL& bFillOrStroke); 104 }; 105 106 #endif // CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ 107