1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FPDF_AP_H_ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fxcrt/fx_basic.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fpdfapi/fpdf_parser.h" 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "fpdf_vt.h" 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass IPVT_FontMap 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CPDF_Font* GetPDFFont(FX_INT32 nFontIndex) = 0; 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual CFX_ByteString GetPDFFontAlias(FX_INT32 nFontIndex) = 0; 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CPVT_Dash { 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Dash(FX_INT32 dash, FX_INT32 gap, FX_INT32 phase) : nDash(dash), nGap(gap), nPhase(phase) 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov {} 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nDash; 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nGap; 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nPhase; 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CT_TRANSPARENT 0 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CT_GRAY 1 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CT_RGB 2 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define CT_CMYK 3 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstruct CPVT_Color { 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Color(FX_INT32 type = 0, FX_FLOAT color1 = 0.0f, FX_FLOAT color2 = 0.0f, FX_FLOAT color3 = 0.0f, FX_FLOAT color4 = 0.0f) 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov : nColorType(type), fColor1(color1), fColor2(color2), fColor3(color3), fColor4(color4) 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov {} 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nColorType; 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fColor1; 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fColor2; 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fColor3; 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT fColor4; 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPVT_Provider : public IPDF_VariableText_Provider 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPVT_Provider(IPVT_FontMap * pFontMap); 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov virtual ~CPVT_Provider(); 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetCharWidth(FX_INT32 nFontIndex, FX_WORD word, FX_INT32 nWordStyle); 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTypeAscent(FX_INT32 nFontIndex); 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetTypeDescent(FX_INT32 nFontIndex); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetWordFontIndex(FX_WORD word, FX_INT32 charset, FX_INT32 nFontIndex); 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BOOL IsLatinWord(FX_WORD word); 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 GetDefaultFontIndex(); 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate: 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov IPVT_FontMap * m_pFontMap; 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PBS_SOLID 0 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PBS_DASH 1 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PBS_BEVELED 2 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PBS_INSET 3 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PBS_UNDERLINED 4 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPVT_GenerateAP 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic: 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static FX_BOOL GenerateTextFieldAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static FX_BOOL GenerateComboBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static FX_BOOL GenerateListBoxAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict); 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CFX_ByteString GenerateEditAP(IPVT_FontMap * pFontMap, IPDF_VariableText_Iterator * pIterator, 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPDF_Point & ptOffset, FX_BOOL bContinuous, FX_WORD SubWord = 0, const CPVT_WordRange * pVisible = NULL); 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CFX_ByteString GenerateBorderAP(const CPDF_Rect & rect, FX_FLOAT fWidth, 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const CPVT_Color & color, const CPVT_Color & crLeftTop, const CPVT_Color & crRightBottom, 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_INT32 nStyle, const CPVT_Dash & dash); 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov static CFX_ByteString GenerateColorAP(const CPVT_Color & color, const FX_BOOL & bFillOrStroke); 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}; 93