Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(314)

Side by Side Diff: core/fpdfdoc/include/cpdf_interform.h

Issue 2183313004: Split fpdfdoc/include/fpdf_doc.h into individual classes. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: review feedback Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfdoc/include/cpdf_iconfit.h ('k') | core/fpdfdoc/include/cpdf_link.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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_FPDFDOC_INCLUDE_CPDF_INTERFORM_H_
8 #define CORE_FPDFDOC_INCLUDE_CPDF_INTERFORM_H_
9
10 #include <map>
11 #include <memory>
12 #include <vector>
13
14 #include "core/fpdfapi/fpdf_parser/include/fpdf_parser_decode.h"
15 #include "core/fpdfdoc/include/cpdf_defaultappearance.h"
16 #include "core/fxcrt/include/fx_string.h"
17 #include "core/fxcrt/include/fx_system.h"
18
19 class CFieldTree;
20 class CFDF_Document;
21 class CPDF_Document;
22 class CPDF_Dictionary;
23 class CPDF_Font;
24 class CPDF_FormControl;
25 class CPDF_FormField;
26 class CPDF_Object;
27 class CPDF_Page;
28 class IPDF_FormNotify;
29
30 class CPDF_InterForm {
31 public:
32 explicit CPDF_InterForm(CPDF_Document* pDocument);
33 ~CPDF_InterForm();
34
35 static void SetUpdateAP(FX_BOOL bUpdateAP);
36 static FX_BOOL IsUpdateAPEnabled();
37 static CFX_ByteString GenerateNewResourceName(const CPDF_Dictionary* pResDict,
38 const FX_CHAR* csType,
39 int iMinLen = 2,
40 const FX_CHAR* csPrefix = "");
41 static CPDF_Font* AddStandardFont(CPDF_Document* pDocument,
42 CFX_ByteString csFontName);
43 static CFX_ByteString GetNativeFont(uint8_t iCharSet,
44 void* pLogFont = nullptr);
45 static CFX_ByteString GetNativeFont(void* pLogFont = nullptr);
46 static uint8_t GetNativeCharSet();
47 static CPDF_Font* AddNativeFont(uint8_t iCharSet, CPDF_Document* pDocument);
48 static CPDF_Font* AddNativeFont(CPDF_Document* pDocument);
49
50 FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, int iType);
51 FX_BOOL ValidateFieldName(const CPDF_FormField* pField,
52 CFX_WideString& csNewFieldName);
53 FX_BOOL ValidateFieldName(const CPDF_FormControl* pControl,
54 CFX_WideString& csNewFieldName);
55
56 uint32_t CountFields(const CFX_WideString& csFieldName = L"");
57 CPDF_FormField* GetField(uint32_t index,
58 const CFX_WideString& csFieldName = L"");
59 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const;
60
61 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage,
62 FX_FLOAT pdf_x,
63 FX_FLOAT pdf_y,
64 int* z_order) const;
65 CPDF_FormControl* GetControlByDict(const CPDF_Dictionary* pWidgetDict) const;
66
67 CPDF_Document* GetDocument() const { return m_pDocument; }
68 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; }
69 FX_BOOL NeedConstructAP() const;
70 int CountFieldsInCalculationOrder();
71 CPDF_FormField* GetFieldInCalculationOrder(int index);
72 int FindFieldInCalculationOrder(const CPDF_FormField* pField);
73
74 uint32_t CountFormFonts();
75 CPDF_Font* GetFormFont(uint32_t index, CFX_ByteString& csNameTag);
76 CPDF_Font* GetFormFont(CFX_ByteString csNameTag);
77 CPDF_Font* GetFormFont(CFX_ByteString csFontName, CFX_ByteString& csNameTag);
78 CPDF_Font* GetNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag);
79 CPDF_Font* GetNativeFormFont(CFX_ByteString& csNameTag);
80 FX_BOOL FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
81 FX_BOOL FindFormFont(CFX_ByteString csFontName,
82 CPDF_Font*& pFont,
83 CFX_ByteString& csNameTag);
84
85 FX_BOOL FindFormFont(CFX_WideString csFontName,
86 CPDF_Font*& pFont,
87 CFX_ByteString& csNameTag) {
88 return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag);
89 }
90
91 void AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
92 CPDF_Font* AddNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag);
93 CPDF_Font* AddNativeFormFont(CFX_ByteString& csNameTag);
94
95 void RemoveFormFont(const CPDF_Font* pFont);
96 void RemoveFormFont(CFX_ByteString csNameTag);
97
98 CPDF_DefaultAppearance GetDefaultAppearance();
99 CPDF_Font* GetDefaultFormFont();
100 int GetFormAlignment();
101
102 CPDF_FormField* CheckRequiredFields(
103 const std::vector<CPDF_FormField*>* fields,
104 bool bIncludeOrExclude) const;
105
106 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path,
107 bool bSimpleFileSpec = false) const;
108 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path,
109 const std::vector<CPDF_FormField*>& fields,
110 bool bIncludeOrExclude = true,
111 bool bSimpleFileSpec = false) const;
112 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE);
113
114 bool ResetForm(const std::vector<CPDF_FormField*>& fields,
115 bool bIncludeOrExclude = true,
116 bool bNotify = false);
117 bool ResetForm(bool bNotify = false);
118
119 void SetFormNotify(IPDF_FormNotify* pNotify);
120 FX_BOOL HasXFAForm() const;
121 void FixPageFields(const CPDF_Page* pPage);
122
123 private:
124 friend class CPDF_FormControl;
125 friend class CPDF_FormField;
126
127 void LoadField(CPDF_Dictionary* pFieldDict, int nLevel = 0);
128 CPDF_Object* GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name);
129 CPDF_FormField* AddTerminalField(CPDF_Dictionary* pFieldDict);
130 CPDF_FormControl* AddControl(CPDF_FormField* pField,
131 CPDF_Dictionary* pWidgetDict);
132 void FDF_ImportField(CPDF_Dictionary* pField,
133 const CFX_WideString& parent_name,
134 FX_BOOL bNotify = FALSE,
135 int nLevel = 0);
136 FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName,
137 int iType,
138 const CPDF_FormField* pExcludedField,
139 const CPDF_FormControl* pExcludedControl);
140 int CompareFieldName(const CFX_WideString& name1,
141 const CFX_WideString& name2);
142 int CompareFieldName(const CFX_ByteString& name1,
143 const CFX_ByteString& name2);
144
145 static FX_BOOL s_bUpdateAP;
146
147 CPDF_Document* const m_pDocument;
148 CPDF_Dictionary* m_pFormDict;
149 std::map<const CPDF_Dictionary*, CPDF_FormControl*> m_ControlMap;
150 std::unique_ptr<CFieldTree> m_pFieldTree;
151 CFX_ByteString m_bsEncoding;
152 IPDF_FormNotify* m_pFormNotify;
153 };
154
155 #endif // CORE_FPDFDOC_INCLUDE_CPDF_INTERFORM_H_
OLDNEW
« no previous file with comments | « core/fpdfdoc/include/cpdf_iconfit.h ('k') | core/fpdfdoc/include/cpdf_link.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698