// Copyright 2014 PDFium Authors. All rights reserved. // 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 CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ #define CORE_INCLUDE_FPDFDOC_FPDF_AP_H_ #include "core/include/fpdfdoc/fpdf_vt.h" class IPVT_FontMap { public: virtual ~IPVT_FontMap() {} virtual CPDF_Font* GetPDFFont(int32_t nFontIndex) = 0; virtual CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) = 0; }; struct CPVT_Dash { CPVT_Dash(int32_t dash, int32_t gap, int32_t phase) : nDash(dash), nGap(gap), nPhase(phase) {} int32_t nDash; int32_t nGap; int32_t nPhase; }; struct CPVT_Color { enum Type { kTransparent = 0, kGray, kRGB, kCMYK }; CPVT_Color(Type type = kTransparent, FX_FLOAT color1 = 0.0f, FX_FLOAT color2 = 0.0f, FX_FLOAT color3 = 0.0f, FX_FLOAT color4 = 0.0f) : nColorType(type), fColor1(color1), fColor2(color2), fColor3(color3), fColor4(color4) {} Type nColorType; FX_FLOAT fColor1; FX_FLOAT fColor2; FX_FLOAT fColor3; FX_FLOAT fColor4; }; class CPVT_Provider : public IPDF_VariableText_Provider { public: CPVT_Provider(IPVT_FontMap* pFontMap); ~CPVT_Provider() override; // IPDF_VariableText_Provider int32_t GetCharWidth(int32_t nFontIndex, uint16_t word, int32_t nWordStyle) override; int32_t GetTypeAscent(int32_t nFontIndex) override; int32_t GetTypeDescent(int32_t nFontIndex) override; int32_t GetWordFontIndex(uint16_t word, int32_t charset, int32_t nFontIndex) override; FX_BOOL IsLatinWord(uint16_t word) override; int32_t GetDefaultFontIndex() override; private: IPVT_FontMap* m_pFontMap; }; class CPVT_GenerateAP { public: static FX_BOOL GenerateTextFieldAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); static FX_BOOL GenerateComboBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); static CFX_ByteString GenerateEditAP(IPVT_FontMap* pFontMap, IPDF_VariableText_Iterator* pIterator, const CFX_FloatPoint& ptOffset, FX_BOOL bContinuous, uint16_t SubWord = 0, const CPVT_WordRange* pVisible = NULL); static CFX_ByteString GenerateBorderAP(const CFX_FloatRect& rect, FX_FLOAT fWidth, const CPVT_Color& color, const CPVT_Color& crLeftTop, const CPVT_Color& crRightBottom, int32_t nStyle, const CPVT_Dash& dash); static CFX_ByteString GenerateColorAP(const CPVT_Color& color, const FX_BOOL& bFillOrStroke); }; #endif // CORE_INCLUDE_FPDFDOC_FPDF_AP_H_