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