summaryrefslogtreecommitdiff
path: root/core/include/fpdfdoc/fpdf_ap.h
blob: 4b6a37111044387a806c2a749c585bd11eff381d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 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

#define _FPDF_AP_H_
#include "../fxcrt/fx_basic.h"
#include "../fpdfapi/fpdf_parser.h"
#include "fpdf_vt.h"
class IPVT_FontMap
{
public:

    virtual CPDF_Font*						GetPDFFont(FX_INT32 nFontIndex) = 0;

    virtual CFX_ByteString					GetPDFFontAlias(FX_INT32 nFontIndex) = 0;
};
struct CPVT_Dash {

    CPVT_Dash(FX_INT32 dash, FX_INT32 gap, FX_INT32 phase) : nDash(dash), nGap(gap), nPhase(phase)
    {}

    FX_INT32			nDash;

    FX_INT32			nGap;

    FX_INT32			nPhase;
};
#define CT_TRANSPARENT		0
#define	CT_GRAY				1
#define	CT_RGB				2
#define	CT_CMYK				3
struct CPVT_Color {

    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)
        : nColorType(type), fColor1(color1), fColor2(color2), fColor3(color3), fColor4(color4)
    {}

    FX_INT32			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);

    virtual ~CPVT_Provider();

    FX_INT32						GetCharWidth(FX_INT32 nFontIndex, FX_WORD word, FX_INT32 nWordStyle);

    FX_INT32						GetTypeAscent(FX_INT32 nFontIndex);

    FX_INT32						GetTypeDescent(FX_INT32 nFontIndex);

    FX_INT32						GetWordFontIndex(FX_WORD word, FX_INT32 charset, FX_INT32 nFontIndex);

    FX_BOOL							IsLatinWord(FX_WORD word);

    FX_INT32						GetDefaultFontIndex();
private:

    IPVT_FontMap *	m_pFontMap;
};
#define PBS_SOLID			0
#define PBS_DASH			1
#define PBS_BEVELED			2
#define PBS_INSET			3
#define PBS_UNDERLINED		4
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 CPDF_Point & ptOffset, FX_BOOL bContinuous, FX_WORD SubWord = 0, const CPVT_WordRange * pVisible = NULL);

    static CFX_ByteString					GenerateBorderAP(const CPDF_Rect & rect, FX_FLOAT fWidth,
            const CPVT_Color & color, const CPVT_Color & crLeftTop, const CPVT_Color & crRightBottom,
            FX_INT32 nStyle, const CPVT_Dash & dash);

    static CFX_ByteString					GenerateColorAP(const CPVT_Color & color, const FX_BOOL & bFillOrStroke);
};