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

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

Issue 1265503005: clang-format all pdfium code. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: sigh Created 5 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
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ 7 #ifndef CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_
8 #define CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ 8 #define CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_
9 9
10 #include <map> 10 #include <map>
(...skipping 24 matching lines...) Expand all
35 class CPDF_LWinParam; 35 class CPDF_LWinParam;
36 class CPDF_Metadata; 36 class CPDF_Metadata;
37 class CPDF_NumberTree; 37 class CPDF_NumberTree;
38 class CPDF_OCContext; 38 class CPDF_OCContext;
39 class CPDF_Page; 39 class CPDF_Page;
40 class CPDF_RenderOptions; 40 class CPDF_RenderOptions;
41 class CPDF_TextObject; 41 class CPDF_TextObject;
42 class CPDF_ViewerPreferences; 42 class CPDF_ViewerPreferences;
43 class CXML_Element; 43 class CXML_Element;
44 44
45 class CPDF_NameTree 45 class CPDF_NameTree {
46 { 46 public:
47 public: 47 CPDF_NameTree(CPDF_Dictionary* pRoot) { m_pRoot = pRoot; }
48 48
49 CPDF_NameTree(CPDF_Dictionary* pRoot) 49 CPDF_NameTree(CPDF_Document* pDoc, const CFX_ByteStringC& category);
50 { 50
51 m_pRoot = pRoot; 51 CPDF_Object* LookupValue(int nIndex, CFX_ByteString& csName) const;
52 } 52
53 53 CPDF_Object* LookupValue(const CFX_ByteString& csName) const;
54 CPDF_NameTree(CPDF_Document* pDoc, const CFX_ByteStringC& category); 54
55 55 CPDF_Array* LookupNamedDest(CPDF_Document* pDoc,
56 CPDF_Object* LookupValue(int nIndex, CFX_ByteString& csName) const; 56 const CFX_ByteStringC& sName);
57 57
58 CPDF_Object* LookupValue(const CFX_ByteString& csName) const; 58 int GetIndex(const CFX_ByteString& csName) const;
59 59
60 CPDF_Array* LookupNamedDest(CPDF_Document* pDoc, const CFX_B yteStringC& sName); 60 int GetCount() const;
61 61
62 int GetIndex(const CFX_ByteString& csName) c onst; 62 CPDF_Dictionary* GetRoot() const { return m_pRoot; }
63 63
64 int GetCount() const; 64 protected:
65 65 CPDF_Dictionary* m_pRoot;
66 66 };
67 CPDF_Dictionary* GetRoot() const 67 class CPDF_BookmarkTree {
68 { 68 public:
69 return m_pRoot; 69 CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {}
70 } 70
71 71 CPDF_Bookmark GetFirstChild(const CPDF_Bookmark& parent) const;
72 protected: 72
73 73 CPDF_Bookmark GetNextSibling(const CPDF_Bookmark& bookmark) const;
74 CPDF_Dictionary* m_pRoot; 74
75 }; 75 CPDF_Document* GetDocument() const { return m_pDocument; }
76 class CPDF_BookmarkTree 76
77 { 77 protected:
78 public: 78 CPDF_Document* m_pDocument;
79 CPDF_BookmarkTree(CPDF_Document* pDoc) : m_pDocument(pDoc) {} 79 };
80 80 #define PDFBOOKMARK_ITALIC 1
81 CPDF_Bookmark GetFirstChild(const CPDF_Bookmark& parent) const ; 81 #define PDFBOOKMARK_BOLD 2
82 82 class CPDF_Bookmark {
83 CPDF_Bookmark GetNextSibling(const CPDF_Bookmark& bookmark) co nst; 83 public:
84 84 CPDF_Bookmark() : m_pDict(NULL) {}
85 CPDF_Document* GetDocument() const { return m_pDocument; } 85
86 86 explicit CPDF_Bookmark(CPDF_Dictionary* pDict) : m_pDict(pDict) {}
87 protected: 87
88 CPDF_Document* m_pDocument; 88 CPDF_Dictionary* GetDict() const { return m_pDict; }
89 }; 89
90 #define PDFBOOKMARK_ITALIC 1 90 operator bool() const { return m_pDict != NULL; }
91 #define PDFBOOKMARK_BOLD 2 91
92 class CPDF_Bookmark 92 FX_DWORD GetColorRef() const;
93 { 93
94 public: 94 FX_DWORD GetFontStyle() const;
95 95
96 CPDF_Bookmark() : m_pDict(NULL) {} 96 CFX_WideString GetTitle() const;
97 97
98 explicit CPDF_Bookmark(CPDF_Dictionary* pDict) : m_pDict(pDict) {} 98 CPDF_Dest GetDest(CPDF_Document* pDocument) const;
99 99
100 CPDF_Dictionary* GetDict() const { return m_pDict; } 100 CPDF_Action GetAction() const;
101 101
102 operator bool() const { return m_pDict != NULL; } 102 CPDF_Dictionary* m_pDict;
103 103 };
104 FX_DWORD GetColorRef() const; 104 #define PDFZOOM_XYZ 1
105 105 #define PDFZOOM_FITPAGE 2
106 FX_DWORD GetFontStyle() const; 106 #define PDFZOOM_FITHORZ 3
107 107 #define PDFZOOM_FITVERT 4
108 CFX_WideString GetTitle() const; 108 #define PDFZOOM_FITRECT 5
109 109 #define PDFZOOM_FITBBOX 6
110 CPDF_Dest GetDest(CPDF_Document* pDocument) const; 110 #define PDFZOOM_FITBHORZ 7
111 111 #define PDFZOOM_FITBVERT 8
112 CPDF_Action GetAction() const; 112 class CPDF_Dest {
113 113 public:
114 CPDF_Dictionary* m_pDict; 114 CPDF_Dest() : m_pObj(nullptr) {}
115 }; 115 explicit CPDF_Dest(CPDF_Object* pObj) : m_pObj(pObj) {}
116 #define PDFZOOM_XYZ 1 116
117 #define PDFZOOM_FITPAGE 2 117 operator bool() const { return m_pObj != NULL; }
118 #define PDFZOOM_FITHORZ 3 118 CPDF_Object* GetObject() const { return m_pObj; }
119 #define PDFZOOM_FITVERT 4 119
120 #define PDFZOOM_FITRECT 5 120 CFX_ByteString GetRemoteName();
121 #define PDFZOOM_FITBBOX 6 121 int GetPageIndex(CPDF_Document* pDoc);
122 #define PDFZOOM_FITBHORZ 7 122 FX_DWORD GetPageObjNum();
123 #define PDFZOOM_FITBVERT 8 123 int GetZoomMode();
124 class CPDF_Dest 124 FX_FLOAT GetParam(int index);
125 { 125
126 public: 126 protected:
127 CPDF_Dest() : m_pObj(nullptr) { } 127 CPDF_Object* m_pObj;
128 explicit CPDF_Dest(CPDF_Object* pObj) : m_pObj(pObj) { } 128 };
129 129 class CPDF_OCContext : public IPDF_OCContext {
130 operator bool () const { return m_pObj != NULL; } 130 public:
131 CPDF_Object* GetObject() const { return m_pObj; } 131 enum UsageType { View = 0, Design, Print, Export };
132 132
133 CFX_ByteString GetRemoteName(); 133 CPDF_OCContext(CPDF_Document* pDoc, UsageType eUsageType = View);
134 int GetPageIndex(CPDF_Document* pDoc); 134
135 FX_DWORD GetPageObjNum(); 135 virtual ~CPDF_OCContext();
136 int GetZoomMode(); 136
137 FX_FLOAT GetParam(int index); 137 CPDF_Document* GetDocument() const { return m_pDocument; }
138 138
139 protected: 139 UsageType GetUsageType() const { return m_eUsageType; }
140 CPDF_Object* m_pObj; 140
141 }; 141 FX_BOOL CheckOCGVisible(const CPDF_Dictionary* pOCGDict);
142 class CPDF_OCContext : public IPDF_OCContext 142
143 { 143 void ResetOCContext();
144 public: 144
145 145 protected:
146 enum UsageType { 146 FX_BOOL LoadOCGStateFromConfig(const CFX_ByteStringC& csConfig,
147 View = 0, 147 const CPDF_Dictionary* pOCGDict,
148 Design, 148 FX_BOOL& bValidConfig) const;
149 Print, 149
150 Export 150 FX_BOOL LoadOCGState(const CPDF_Dictionary* pOCGDict) const;
151 }; 151
152 152 FX_BOOL GetOCGVisible(const CPDF_Dictionary* pOCGDict);
153 CPDF_OCContext(CPDF_Document *pDoc, UsageType eUsageType = View); 153
154 154 FX_BOOL GetOCGVE(CPDF_Array* pExpression,
155 virtual ~CPDF_OCContext(); 155 FX_BOOL bFromConfig,
156 156 int nLevel = 0);
157 CPDF_Document* GetDocument() const 157
158 { 158 FX_BOOL LoadOCMDState(const CPDF_Dictionary* pOCMDDict, FX_BOOL bFromConfig);
159 return m_pDocument; 159
160 } 160 CPDF_Document* m_pDocument;
161 161
162 UsageType GetUsageType() const 162 UsageType m_eUsageType;
163 { 163
164 return m_eUsageType; 164 std::map<const CPDF_Dictionary*, FX_BOOL> m_OCGStates;
165 } 165 };
166 166 class CPDF_LWinParam {
167 FX_BOOL CheckOCGVisible(const CPDF_Dictionary *pOCGDict) ; 167 public:
168 168 CPDF_LWinParam(CPDF_Dictionary* pDict) { m_pDict = pDict; }
169 void ResetOCContext(); 169
170 protected: 170 operator CPDF_Dictionary*() const { return m_pDict; }
171 171
172 FX_BOOL LoadOCGStateFromConfig(const CFX_ByteStringC& cs Config, const CPDF_Dictionary *pOCGDict, FX_BOOL &bValidConfig) const; 172 inline CFX_ByteString GetFileName() { return m_pDict->GetString("F"); }
173 173
174 FX_BOOL LoadOCGState(const CPDF_Dictionary *pOCGDict) co nst; 174 inline CFX_ByteString GetDefaultDirectory() {
175 175 return m_pDict->GetString("D");
176 FX_BOOL GetOCGVisible(const CPDF_Dictionary *pOCGDict); 176 }
177 177
178 FX_BOOL GetOCGVE(CPDF_Array *pExpression, FX_BOOL bFromC onfig, int nLevel = 0); 178 inline CFX_ByteString GetOperation() { return m_pDict->GetString("O"); }
179 179
180 FX_BOOL LoadOCMDState(const CPDF_Dictionary *pOCMDDict, FX_BOOL bFromConfig); 180 inline CFX_ByteString GetParameter() { return m_pDict->GetString("P"); }
181 181
182 CPDF_Document *m_pDocument; 182 CPDF_Dictionary* m_pDict;
183 183 };
184 UsageType m_eUsageType; 184 class CPDF_ActionFields {
185 185 public:
186 std::map<const CPDF_Dictionary*, FX_BOOL> m_OCGStates; 186 CPDF_ActionFields(const CPDF_Action* pAction) {
187 }; 187 m_pAction = (CPDF_Action*)pAction;
188 class CPDF_LWinParam 188 }
189 { 189
190 public: 190 operator CPDF_Action*() const { return m_pAction; }
191 191
192 CPDF_LWinParam(CPDF_Dictionary* pDict) 192 FX_DWORD GetFieldsCount() const;
193 { 193
194 m_pDict = pDict; 194 void GetAllFields(CFX_PtrArray& fieldObjects) const;
195 } 195
196 196 CPDF_Object* GetField(FX_DWORD iIndex) const;
197 operator CPDF_Dictionary* () const 197
198 { 198 CPDF_Action* m_pAction;
199 return m_pDict; 199 };
200 } 200
201 201 #define PDFNAMED_NEXTPAGE 1
202 inline CFX_ByteString GetFileName() 202 #define PDFNAMED_PREVPAGE 2
203 { 203 #define PDFNAMED_FIRSTPAGE 3
204 return m_pDict->GetString("F"); 204 #define PDFNAMED_LASTPAGE 4
205 } 205 #define PDFJS_MAXLENGTH 64
206 206 class CPDF_Action {
207 207 public:
208 inline CFX_ByteString GetDefaultDirectory() 208 enum ActionType {
209 { 209 Unknown = 0,
210 return m_pDict->GetString("D"); 210 GoTo,
211 } 211 GoToR,
212 212 GoToE,
213 213 Launch,
214 inline CFX_ByteString GetOperation() 214 Thread,
215 { 215 URI,
216 return m_pDict->GetString("O"); 216 Sound,
217 } 217 Movie,
218 218 Hide,
219 219 Named,
220 inline CFX_ByteString GetParameter() 220 SubmitForm,
221 { 221 ResetForm,
222 return m_pDict->GetString("P"); 222 ImportData,
223 } 223 JavaScript,
224 224 SetOCGState,
225 CPDF_Dictionary* m_pDict; 225 Rendition,
226 }; 226 Trans,
227 class CPDF_ActionFields 227 GoTo3DView
228 { 228 };
229 public: 229
230 230 CPDF_Action() : m_pDict(nullptr) {}
231 CPDF_ActionFields(const CPDF_Action* pAction) 231 explicit CPDF_Action(CPDF_Dictionary* pDict) : m_pDict(pDict) {}
232 { 232
233 m_pAction = (CPDF_Action*)pAction; 233 operator bool() const { return m_pDict != NULL; }
234 } 234
235 235 CPDF_Dictionary* GetDict() const { return m_pDict; }
236 operator CPDF_Action*() const 236
237 { 237 CFX_ByteString GetTypeName() const { return m_pDict->GetString("S"); }
238 return m_pAction; 238
239 } 239 ActionType GetType() const;
240 240
241 FX_DWORD GetFieldsCount() const; 241 CPDF_Dest GetDest(CPDF_Document* pDoc) const;
242 242
243 void GetAllFields(CFX_PtrArray& field Objects) const; 243 CFX_WideString GetFilePath() const;
244 244
245 CPDF_Object* GetField(FX_DWORD iIndex) const; 245 FX_BOOL GetNewWindow() const { return m_pDict->GetBoolean("NewWindow"); }
246 246
247 CPDF_Action* m_pAction; 247 CPDF_LWinParam GetWinParam() const;
248 }; 248
249 249 CFX_ByteString GetURI(CPDF_Document* pDoc) const;
250 #define PDFNAMED_NEXTPAGE 1 250
251 #define PDFNAMED_PREVPAGE 2 251 FX_BOOL GetMouseMap() const { return m_pDict->GetBoolean("IsMap"); }
252 #define PDFNAMED_FIRSTPAGE 3 252
253 #define PDFNAMED_LASTPAGE 4 253 CPDF_ActionFields GetWidgets() const { return this; }
254 #define PDFJS_MAXLENGTH 64 254
255 class CPDF_Action 255 FX_BOOL GetHideStatus() const { return m_pDict->GetBoolean("H", TRUE); }
256 { 256
257 public: 257 CFX_ByteString GetNamedAction() const { return m_pDict->GetString("N"); }
258 enum ActionType { 258
259 Unknown = 0, 259 FX_DWORD GetFlags() const { return m_pDict->GetInteger("Flags"); }
260 GoTo, 260
261 GoToR, 261 CFX_WideString GetJavaScript() const;
262 GoToE, 262
263 Launch, 263 CPDF_Dictionary* GetAnnot() const;
264 Thread, 264
265 URI, 265 int32_t GetOperationType() const;
266 Sound, 266
267 Movie, 267 CPDF_Stream* GetSoundStream() const { return m_pDict->GetStream("Sound"); }
268 Hide, 268
269 Named, 269 FX_FLOAT GetVolume() const { return m_pDict->GetNumber("Volume"); }
270 SubmitForm, 270
271 ResetForm, 271 FX_BOOL IsSynchronous() const { return m_pDict->GetBoolean("Synchronous"); }
272 ImportData, 272
273 JavaScript, 273 FX_BOOL IsRepeat() const { return m_pDict->GetBoolean("Repeat"); }
274 SetOCGState, 274
275 Rendition, 275 FX_BOOL IsMixPlay() const { return m_pDict->GetBoolean("Mix"); }
276 Trans, 276
277 GoTo3DView 277 FX_DWORD GetSubActionsCount() const;
278 }; 278
279 279 CPDF_Action GetSubAction(FX_DWORD iIndex) const;
280 CPDF_Action() : m_pDict(nullptr) { } 280
281 explicit CPDF_Action(CPDF_Dictionary* pDict) : m_pDict(pDict) { } 281 protected:
282 282 CPDF_Dictionary* m_pDict;
283 operator bool () const { return m_pDict != NULL; } 283 };
284 284 class CPDF_AAction {
285 CPDF_Dictionary* GetDict() const { return m_pDict; } 285 public:
286 286 CPDF_AAction(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; }
287 CFX_ByteString GetTypeName() const 287
288 { 288 operator CPDF_Dictionary*() const { return m_pDict; }
289 return m_pDict->GetString("S"); 289
290 } 290 enum AActionType {
291 291 CursorEnter = 0,
292 ActionType GetType() const; 292 CursorExit,
293 293 ButtonDown,
294 CPDF_Dest GetDest(CPDF_Document* pDoc) const; 294 ButtonUp,
295 295 GetFocus,
296 CFX_WideString GetFilePath() const; 296 LoseFocus,
297 297 PageOpen,
298 FX_BOOL GetNewWindow() const 298 PageClose,
299 { 299 PageVisible,
300 return m_pDict->GetBoolean("NewWindow"); 300 PageInvisible,
301 } 301 OpenPage,
302 302 ClosePage,
303 CPDF_LWinParam GetWinParam() const; 303 KeyStroke,
304 304 Format,
305 CFX_ByteString GetURI(CPDF_Document* pDoc) const; 305 Validate,
306 306 Calculate,
307 FX_BOOL GetMouseMap() const 307 CloseDocument,
308 { 308 SaveDocument,
309 return m_pDict->GetBoolean("IsMap"); 309 DocumentSaved,
310 } 310 PrintDocument,
311 311 DocumentPrinted
312 CPDF_ActionFields GetWidgets() const 312 };
313 { 313
314 return this; 314 FX_BOOL ActionExist(AActionType eType) const;
315 } 315
316 316 CPDF_Action GetAction(AActionType eType) const;
317 FX_BOOL GetHideStatus() const 317
318 { 318 FX_POSITION GetStartPos() const;
319 return m_pDict->GetBoolean("H", TRUE); 319
320 } 320 CPDF_Action GetNextAction(FX_POSITION& pos, AActionType& eType) const;
321 321
322 CFX_ByteString GetNamedAction() const 322 CPDF_Dictionary* m_pDict;
323 { 323 };
324 return m_pDict->GetString("N"); 324 class CPDF_DocJSActions {
325 } 325 public:
326 326 CPDF_DocJSActions(CPDF_Document* pDoc);
327 FX_DWORD GetFlags() const 327
328 { 328 int CountJSActions() const;
329 return m_pDict->GetInteger("Flags"); 329
330 } 330 CPDF_Action GetJSAction(int index, CFX_ByteString& csName) const;
331 331
332 CFX_WideString GetJavaScript() const; 332 CPDF_Action GetJSAction(const CFX_ByteString& csName) const;
333 333
334 CPDF_Dictionary* GetAnnot() const; 334 int FindJSAction(const CFX_ByteString& csName) const;
335 335
336 int32_t GetOperationType() const; 336 CPDF_Document* GetDocument() const { return m_pDocument; }
337 337
338 CPDF_Stream* GetSoundStream() const 338 protected:
339 { 339 CPDF_Document* m_pDocument;
340 return m_pDict->GetStream("Sound"); 340 };
341 } 341 class CPDF_FileSpec {
342 342 public:
343 FX_FLOAT GetVolume() const 343 CPDF_FileSpec();
344 { 344
345 return m_pDict->GetNumber("Volume"); 345 CPDF_FileSpec(CPDF_Object* pObj) { m_pObj = pObj; }
346 } 346
347 347 operator CPDF_Object*() const { return m_pObj; }
348 FX_BOOL IsSynchronous() const 348
349 { 349 FX_BOOL IsURL() const;
350 return m_pDict->GetBoolean("Synchronous"); 350
351 } 351 FX_BOOL GetFileName(CFX_WideString& wsFileName) const;
352 352
353 FX_BOOL IsRepeat() const 353 CPDF_Stream* GetFileStream() const;
354 { 354
355 return m_pDict->GetBoolean("Repeat"); 355 void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE);
356 } 356
357 357 protected:
358 FX_BOOL IsMixPlay() const 358 CPDF_Object* m_pObj;
359 { 359 };
360 return m_pDict->GetBoolean("Mix"); 360 class CPDF_LinkList {
361 } 361 public:
362 362 CPDF_LinkList(CPDF_Document* pDoc) { m_pDocument = pDoc; }
363 FX_DWORD GetSubActionsCount() const; 363
364 364 ~CPDF_LinkList();
365 CPDF_Action GetSubAction(FX_DWORD iIndex) const; 365
366 366 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y);
367 protected: 367
368 CPDF_Dictionary* m_pDict; 368 int CountLinks(CPDF_Page* pPage);
369 }; 369
370 class CPDF_AAction 370 CPDF_Link GetLink(CPDF_Page* pPage, int index);
371 { 371
372 public: 372 CPDF_Document* GetDocument() const { return m_pDocument; }
373 373
374 CPDF_AAction(CPDF_Dictionary* pDict = NULL) 374 protected:
375 { 375 CPDF_Document* m_pDocument;
376 m_pDict = pDict; 376
377 } 377 CFX_MapPtrToPtr m_PageMap;
378 378
379 operator CPDF_Dictionary*() const 379 CFX_PtrArray* GetPageLinks(CPDF_Page* pPage);
380 { 380
381 return m_pDict; 381 void LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList);
382 } 382 };
383 383 class CPDF_Link {
384 enum AActionType { 384 public:
385 CursorEnter = 0, 385 CPDF_Link() : m_pDict(nullptr) {}
386 CursorExit, 386 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {}
387 ButtonDown, 387
388 ButtonUp, 388 CPDF_Dictionary* GetDict() const { return m_pDict; }
389 GetFocus, 389
390 LoseFocus, 390 CFX_FloatRect GetRect();
391 PageOpen, 391 CPDF_Dest GetDest(CPDF_Document* pDoc);
392 PageClose, 392 CPDF_Action GetAction();
393 PageVisible, 393
394 PageInvisible, 394 protected:
395 OpenPage, 395 CPDF_Dictionary* m_pDict;
396 ClosePage, 396 };
397 KeyStroke, 397
398 Format, 398 #define ANNOTFLAG_INVISIBLE 0x0001
399 Validate, 399 #define ANNOTFLAG_HIDDEN 0x0002
400 Calculate, 400 #define ANNOTFLAG_PRINT 0x0004
401 CloseDocument, 401 #define ANNOTFLAG_NOZOOM 0x0008
402 SaveDocument, 402 #define ANNOTFLAG_NOROTATE 0x0010
403 DocumentSaved, 403 #define ANNOTFLAG_NOVIEW 0x0020
404 PrintDocument, 404 #define ANNOTFLAG_READONLY 0x0040
405 DocumentPrinted 405 #define ANNOTFLAG_LOCKED 0x0080
406 }; 406 #define ANNOTFLAG_TOGGLENOVIEW 0x0100
407 407
408 FX_BOOL ActionExist(AActionType eType) const; 408 class CPDF_Annot : public CFX_PrivateData {
409 409 public:
410 CPDF_Action GetAction(AActionType eType) const; 410 enum AppearanceMode { Normal, Rollover, Down };
411 411
412 FX_POSITION GetStartPos() const; 412 CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList);
413 413 ~CPDF_Annot();
414 CPDF_Action GetNextAction(FX_POSITION& pos, AActionType& eTy pe) const; 414
415 415 CFX_ByteString GetSubType() const;
416 CPDF_Dictionary* m_pDict; 416
417 }; 417 FX_DWORD GetFlags() const;
418 class CPDF_DocJSActions 418
419 { 419 void GetRect(CFX_FloatRect& rect) const;
420 public: 420
421 CPDF_DocJSActions(CPDF_Document* pDoc); 421 CPDF_Dictionary* GetAnnotDict();
422 422
423 423 FX_BOOL DrawAppearance(const CPDF_Page* pPage,
424 int CountJSActions() const; 424 CFX_RenderDevice* pDevice,
425 425 const CFX_AffineMatrix* pUser2Device,
426 CPDF_Action GetJSAction(int index, CFX_ByteString& csName) c onst; 426 AppearanceMode mode,
427 427 const CPDF_RenderOptions* pOptions);
428 CPDF_Action GetJSAction(const CFX_ByteString& csName) const; 428
429 429 FX_BOOL DrawInContext(const CPDF_Page* pPage,
430 int FindJSAction(const CFX_ByteString& csNam e) const; 430 const CPDF_RenderContext* pContext,
431 431 const CFX_AffineMatrix* pUser2Device,
432 432 AppearanceMode mode);
433 CPDF_Document* GetDocument() const 433
434 { 434 void ClearCachedAP();
435 return m_pDocument; 435
436 } 436 void DrawBorder(CFX_RenderDevice* pDevice,
437 437 const CFX_AffineMatrix* pUser2Device,
438 protected: 438 const CPDF_RenderOptions* pOptions);
439 439
440 CPDF_Document* m_pDocument; 440 CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode);
441 }; 441
442 class CPDF_FileSpec 442 private:
443 { 443 CPDF_Dictionary* const m_pAnnotDict;
444 public: 444
445 445 CPDF_AnnotList* const m_pList;
446 CPDF_FileSpec(); 446
447 447 const CFX_ByteString m_sSubtype;
448 CPDF_FileSpec(CPDF_Object *pObj) 448
449 { 449 CFX_MapPtrToPtr m_APMap;
450 m_pObj = pObj; 450 };
451 } 451
452 452 class CPDF_AnnotList {
453 operator CPDF_Object*() const 453 public:
454 { 454 CPDF_AnnotList(CPDF_Page* pPage);
455 return m_pObj; 455
456 } 456 ~CPDF_AnnotList();
457 457
458 FX_BOOL IsURL() const; 458 void GetAnnotMatrix(const CPDF_Dictionary* pAnnotDict,
459 459 const CFX_Matrix* pUser2Device,
460 FX_BOOL GetFileName(CFX_WideString &wsFileName) const; 460 CFX_Matrix& matrix) const;
461 461
462 CPDF_Stream* GetFileStream() const; 462 void GetAnnotRect(const CPDF_Dictionary* pAnnotDict,
463 463 const CFX_Matrix* pUser2Device,
464 void SetFileName(const CFX_WideStringC& wsFileName, F X_BOOL bURL = FALSE); 464 CPDF_Rect& rtAnnot) const;
465 protected: 465
466 466 void DisplayAnnots(const CPDF_Page* pPage,
467 CPDF_Object *m_pObj; 467 CFX_RenderDevice* pDevice,
468 }; 468 CFX_AffineMatrix* pMatrix,
469 class CPDF_LinkList 469 FX_BOOL bShowWidget,
470 { 470 CPDF_RenderOptions* pOptions);
471 public: 471
472 472 void DisplayAnnots(const CPDF_Page* pPage,
473 CPDF_LinkList(CPDF_Document* pDoc) 473 CPDF_RenderContext* pContext,
474 { 474 FX_BOOL bPrinting,
475 m_pDocument = pDoc; 475 CFX_AffineMatrix* pMatrix,
476 } 476 FX_BOOL bShowWidget,
477 477 CPDF_RenderOptions* pOptions) {
478 ~CPDF_LinkList(); 478 DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix,
479 479 bShowWidget ? 3 : 1, pOptions, NULL);
480 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); 480 }
481 481
482 int CountLinks(CPDF_Page* pPage); 482 void DisplayAnnots(const CPDF_Page* pPage,
483 483 CPDF_RenderContext* pContext,
484 CPDF_Link GetLink(CPDF_Page* pPage, int index); 484 FX_BOOL bPrinting,
485 485 CFX_AffineMatrix* pMatrix,
486 CPDF_Document* GetDocument() const 486 FX_BOOL bShowWidget,
487 { 487 CPDF_RenderOptions* pOptions,
488 return m_pDocument; 488 FX_RECT* pClipRect) {
489 } 489 DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix,
490 protected: 490 bShowWidget ? 3 : 1, pOptions, pClipRect);
491 491 }
492 CPDF_Document* m_pDocument; 492
493 493 void DisplayAnnots(const CPDF_Page* pPage,
494 CFX_MapPtrToPtr m_PageMap; 494 CFX_RenderDevice* pDevice,
495 495 CPDF_RenderContext* pContext,
496 CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); 496 FX_BOOL bPrinting,
497 497 CFX_AffineMatrix* pMatrix,
498 void LoadPageLinks(CPDF_Page* pPage, CFX_PtrA rray* pList); 498 FX_DWORD dwAnnotFlags,
499 }; 499 CPDF_RenderOptions* pOptions,
500 class CPDF_Link 500 FX_RECT* pClipRect);
501 { 501
502 public: 502 CPDF_Annot* GetAt(int index) { return (CPDF_Annot*)m_AnnotList.GetAt(index); }
503 CPDF_Link() : m_pDict(nullptr) { } 503
504 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) { } 504 int Count() { return m_AnnotList.GetSize(); }
505 505
506 CPDF_Dictionary* GetDict() const { return m_pDict; } 506 int GetIndex(CPDF_Annot* pAnnot);
507 507
508 CFX_FloatRect GetRect(); 508 CPDF_Document* GetDocument() const { return m_pDocument; }
509 CPDF_Dest GetDest(CPDF_Document* pDoc); 509
510 CPDF_Action GetAction(); 510 protected:
511 511 CFX_PtrArray m_AnnotList;
512 protected: 512
513 CPDF_Dictionary* m_pDict; 513 CPDF_Dictionary* m_pPageDict;
514 }; 514
515 515 CPDF_Document* m_pDocument;
516 #define ANNOTFLAG_INVISIBLE 0x0001 516
517 #define ANNOTFLAG_HIDDEN 0x0002 517 CFX_PtrArray m_Borders;
518 #define ANNOTFLAG_PRINT 0x0004 518
519 #define ANNOTFLAG_NOZOOM 0x0008 519 void DisplayPass(const CPDF_Page* pPage,
520 #define ANNOTFLAG_NOROTATE 0x0010 520 CFX_RenderDevice* pDevice,
521 #define ANNOTFLAG_NOVIEW 0x0020 521 CPDF_RenderContext* pContext,
522 #define ANNOTFLAG_READONLY 0x0040 522 FX_BOOL bPrinting,
523 #define ANNOTFLAG_LOCKED 0x0080 523 CFX_AffineMatrix* pMatrix,
524 #define ANNOTFLAG_TOGGLENOVIEW 0x0100 524 FX_BOOL bWidget,
525 525 CPDF_RenderOptions* pOptions,
526 class CPDF_Annot : public CFX_PrivateData 526 FX_RECT* clip_rect);
527 { 527 friend class CPDF_Annot;
528 public: 528 };
529 enum AppearanceMode { 529 #define COLORTYPE_TRANSPARENT 0
530 Normal, 530 #define COLORTYPE_GRAY 1
531 Rollover, 531 #define COLORTYPE_RGB 2
532 Down 532 #define COLORTYPE_CMYK 3
533 }; 533 class CPDF_DefaultAppearance {
534 534 public:
535 CPDF_Annot(CPDF_Dictionary* pDict, CPDF_AnnotList* pList); 535 CPDF_DefaultAppearance(const CFX_ByteString& csDA = "") { m_csDA = csDA; }
536 ~CPDF_Annot(); 536
537 537 CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA) {
538 CFX_ByteString GetSubType() const; 538 m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA;
539 539 }
540 FX_DWORD GetFlags() const; 540
541 541 operator CFX_ByteString() const { return m_csDA; }
542 void GetRect(CFX_FloatRect& rect) const; 542
543 543 const CPDF_DefaultAppearance& operator=(const CFX_ByteString& csDA) {
544 CPDF_Dictionary* GetAnnotDict(); 544 m_csDA = csDA;
545 545 return *this;
546 FX_BOOL DrawAppearance(const CPDF_Page* pPage, 546 }
547 CFX_RenderDevice* pDevice, 547
548 const CFX_AffineMatrix* pUser2Device, 548 const CPDF_DefaultAppearance& operator=(const CPDF_DefaultAppearance& cDA) {
549 AppearanceMode mode, 549 m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA;
550 const CPDF_RenderOptions* pOptions); 550 return *this;
551 551 }
552 FX_BOOL DrawInContext(const CPDF_Page* pPage, 552
553 const CPDF_RenderContext* pContext, 553 FX_BOOL HasFont();
554 const CFX_AffineMatrix* pUser2Device, 554
555 AppearanceMode mode); 555 CFX_ByteString GetFontString();
556 556
557 void ClearCachedAP(); 557 void GetFont(CFX_ByteString& csFontNameTag, FX_FLOAT& fFontSize);
558 558
559 void DrawBorder(CFX_RenderDevice* pDevice, 559 FX_BOOL HasColor(FX_BOOL bStrokingOperation = FALSE);
560 const CFX_AffineMatrix* pUser2Device, 560
561 const CPDF_RenderOptions* pOptions); 561 CFX_ByteString GetColorString(FX_BOOL bStrokingOperation = FALSE);
562 562
563 CPDF_Form* GetAPForm(const CPDF_Page* pPage, AppearanceMode mode); 563 void GetColor(int& iColorType,
564 564 FX_FLOAT fc[4],
565 private: 565 FX_BOOL bStrokingOperation = FALSE);
566 CPDF_Dictionary* const m_pAnnotDict; 566
567 567 void GetColor(FX_ARGB& color,
568 CPDF_AnnotList* const m_pList; 568 int& iColorType,
569 569 FX_BOOL bStrokingOperation = FALSE);
570 const CFX_ByteString m_sSubtype; 570
571 571 FX_BOOL HasTextMatrix();
572 CFX_MapPtrToPtr m_APMap; 572
573 }; 573 CFX_ByteString GetTextMatrixString();
574 574
575 class CPDF_AnnotList 575 CFX_AffineMatrix GetTextMatrix();
576 { 576
577 public: 577 protected:
578 578 CFX_ByteString m_csDA;
579 CPDF_AnnotList(CPDF_Page* pPage); 579 };
580 580 #define FIELDTYPE_UNKNOWN 0
581 ~CPDF_AnnotList(); 581 #define FIELDTYPE_PUSHBUTTON 1
582 582 #define FIELDTYPE_CHECKBOX 2
583 void GetAnnotMatrix(const CPDF_Dictionary* pAnnotDict, const CFX_Matr ix* pUser2Device, CFX_Matrix &matrix) const; 583 #define FIELDTYPE_RADIOBUTTON 3
584 584 #define FIELDTYPE_COMBOBOX 4
585 void GetAnnotRect(const CPDF_Dictionary* pAnnotDict, const CFX_Matrix * pUser2Device, CPDF_Rect &rtAnnot) const; 585 #define FIELDTYPE_LISTBOX 5
586 586 #define FIELDTYPE_TEXTFIELD 6
587 void DisplayAnnots(const CPDF_Page* pPage, CF X_RenderDevice* pDevice, 587 #define FIELDTYPE_SIGNATURE 7
588 CFX_AffineMatrix* pMatrix, FX_BOOL bShowWi dget, 588 class CPDF_InterForm : public CFX_PrivateData {
589 CPDF_RenderOptions* pOptions); 589 public:
590 590 CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bUpdateAP);
591 void DisplayAnnots(const CPDF_Page* pPage, CP DF_RenderContext* pContext, 591
592 FX_BOOL bPrinting, CFX_AffineMatrix* pMatr ix, FX_BOOL bShowWidget, 592 ~CPDF_InterForm();
593 CPDF_RenderOptions* pOptions) 593
594 { 594 static void EnableUpdateAP(FX_BOOL bUpdateAP);
595 DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, NULL); 595
596 } 596 static FX_BOOL UpdatingAPEnabled();
597 597
598 void DisplayAnnots(const CPDF_Page* pPage, CP DF_RenderContext* pContext, 598 static CFX_ByteString GenerateNewResourceName(const CPDF_Dictionary* pResDict,
599 FX_BOOL bPrinting, CFX_AffineMatrix* pMatr ix, FX_BOOL bShowWidget, 599 const FX_CHAR* csType,
600 CPDF_RenderOptions* pOptions, FX_RECT *pCl ipRect) 600 int iMinLen = 2,
601 { 601 const FX_CHAR* csPrefix = "");
602 DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, pClipRect); 602
603 } 603 static CPDF_Font* AddSystemDefaultFont(const CPDF_Document* pDocument);
604 604
605 void DisplayAnnots(const CPDF_Page* pPage, CF X_RenderDevice* pDevice, CPDF_RenderContext* pContext, 605 static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument,
606 FX_BOOL bPrinting, CFX_AffineMatrix* pMatr ix, FX_DWORD dwAnnotFlags, 606 CFX_ByteString csFontName,
607 CPDF_RenderOptions* pOptions, FX_RECT* pCl ipRect); 607 uint8_t iCharSet = 1);
608 608
609 609 static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument,
610 610 CFX_WideString csFontName,
611 CPDF_Annot* GetAt(int index) 611 uint8_t iCharSet = 1);
612 { 612
613 return (CPDF_Annot*)m_AnnotList.GetAt(index); 613 static CPDF_Font* AddStandardFont(const CPDF_Document* pDocument,
614 } 614 CFX_ByteString csFontName);
615 615
616 int Count() 616 static CFX_ByteString GetNativeFont(uint8_t iCharSet, void* pLogFont = NULL);
617 { 617
618 return m_AnnotList.GetSize(); 618 static CFX_ByteString GetNativeFont(void* pLogFont = NULL);
619 } 619
620 620 static uint8_t GetNativeCharSet();
621 int GetIndex(CPDF_Annot* pAnnot); 621
622 622 static CPDF_Font* AddNativeFont(uint8_t iCharSet,
623 623 const CPDF_Document* pDocument);
624 CPDF_Document* GetDocument() const 624
625 { 625 static CPDF_Font* AddNativeFont(const CPDF_Document* pDocument);
626 return m_pDocument; 626
627 } 627 FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName, int iType);
628 protected: 628
629 629 FX_BOOL ValidateFieldName(const CPDF_FormField* pField,
630 CFX_PtrArray m_AnnotList; 630 CFX_WideString& csNewFieldName);
631 631
632 CPDF_Dictionary* m_pPageDict; 632 FX_BOOL ValidateFieldName(const CPDF_FormControl* pControl,
633 633 CFX_WideString& csNewFieldName);
634 CPDF_Document* m_pDocument; 634
635 635 FX_DWORD CountFields(const CFX_WideString& csFieldName = L"");
636 CFX_PtrArray m_Borders; 636
637 637 CPDF_FormField* GetField(FX_DWORD index,
638 void DisplayPass(const CPDF_Page* pPage, CFX_ RenderDevice* pDevice, 638 const CFX_WideString& csFieldName = L"");
639 CPDF_RenderContext* pContext, FX_BOOL bPrint ing, CFX_AffineMatrix* pMatrix, 639
640 FX_BOOL bWidget, CPDF_RenderOptions* pOption s, FX_RECT* clip_rect); 640 void GetAllFieldNames(CFX_WideStringArray& allFieldNames);
641 friend class CPDF_Annot; 641
642 }; 642 FX_BOOL IsValidFormField(const void* pField);
643 #define COLORTYPE_TRANSPARENT 0 643
644 #define COLORTYPE_GRAY 1 644 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const;
645 #define COLORTYPE_RGB 2 645
646 #define COLORTYPE_CMYK 3 646 FX_DWORD CountControls(CFX_WideString csFieldName = L"");
647 class CPDF_DefaultAppearance 647
648 { 648 CPDF_FormControl* GetControl(FX_DWORD index,
649 public: 649 CFX_WideString csFieldName = L"");
650 650
651 CPDF_DefaultAppearance(const CFX_ByteString& csDA = "") 651 FX_BOOL IsValidFormControl(const void* pControl);
652 { 652
653 m_csDA = csDA; 653 int CountPageControls(CPDF_Page* pPage) const;
654 } 654
655 655 CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) const;
656 CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA) 656
657 { 657 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage,
658 m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; 658 FX_FLOAT pdf_x,
659 } 659 FX_FLOAT pdf_y) const;
660 660
661 661 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const;
662 operator CFX_ByteString() const 662
663 { 663 FX_DWORD CountInternalFields(const CFX_WideString& csFieldName = L"") const;
664 return m_csDA; 664
665 } 665 CPDF_Dictionary* GetInternalField(
666 666 FX_DWORD index,
667 const CPDF_DefaultAppearance& operator =(const CFX_ByteString& csDA) 667 const CFX_WideString& csFieldName = L"") const;
668 { 668
669 m_csDA = csDA; 669 CPDF_Document* GetDocument() const { return m_pDocument; }
670 return *this; 670
671 } 671 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; }
672 672
673 const CPDF_DefaultAppearance& operator =(const CPDF_DefaultAppearance& cDA) 673 FX_BOOL NeedConstructAP();
674 { 674
675 m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA; 675 void NeedConstructAP(FX_BOOL bNeedAP);
676 return *this; 676
677 } 677 int CountFieldsInCalculationOrder();
678 678
679 679 CPDF_FormField* GetFieldInCalculationOrder(int index);
680 680
681 FX_BOOL HasFont(); 681 int FindFieldInCalculationOrder(const CPDF_FormField* pField);
682 682
683 CFX_ByteString GetFontString(); 683 FX_DWORD CountFormFonts();
684 684
685 void GetFont(CFX_ByteString& csFontNameTag, F X_FLOAT& fFontSize); 685 CPDF_Font* GetFormFont(FX_DWORD index, CFX_ByteString& csNameTag);
686 686
687 687 CPDF_Font* GetFormFont(CFX_ByteString csNameTag);
688 688
689 689 CPDF_Font* GetFormFont(CFX_ByteString csFontName, CFX_ByteString& csNameTag);
690 FX_BOOL HasColor(FX_BOOL bStrokingOperation = FA LSE); 690
691 691 CPDF_Font* GetNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag);
692 CFX_ByteString GetColorString(FX_BOOL bStrokingOperation = FALS E); 692
693 693 CPDF_Font* GetNativeFormFont(CFX_ByteString& csNameTag);
694 void GetColor(int& iColorType, FX_FLOAT fc[4] , FX_BOOL bStrokingOperation = FALSE); 694
695 695 FX_BOOL FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
696 void GetColor(FX_ARGB& color, int& iColorType , FX_BOOL bStrokingOperation = FALSE); 696
697 697 FX_BOOL FindFormFont(CFX_ByteString csFontName,
698 698 CPDF_Font*& pFont,
699 699 CFX_ByteString& csNameTag);
700 700
701 FX_BOOL HasTextMatrix(); 701 inline FX_BOOL FindFormFont(CFX_WideString csFontName,
702 702 CPDF_Font*& pFont,
703 CFX_ByteString GetTextMatrixString(); 703 CFX_ByteString& csNameTag) {
704 704 return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag);
705 CFX_AffineMatrix GetTextMatrix(); 705 }
706 706
707 protected: 707 void AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
708 708
709 CFX_ByteString m_csDA; 709 CPDF_Font* AddNativeFormFont(uint8_t iCharSet, CFX_ByteString& csNameTag);
710 }; 710
711 #define FIELDTYPE_UNKNOWN 0 711 CPDF_Font* AddNativeFormFont(CFX_ByteString& csNameTag);
712 #define FIELDTYPE_PUSHBUTTON 1 712
713 #define FIELDTYPE_CHECKBOX 2 713 void RemoveFormFont(const CPDF_Font* pFont);
714 #define FIELDTYPE_RADIOBUTTON 3 714
715 #define FIELDTYPE_COMBOBOX 4 715 void RemoveFormFont(CFX_ByteString csNameTag);
716 #define FIELDTYPE_LISTBOX 5 716
717 #define FIELDTYPE_TEXTFIELD 6 717 CPDF_DefaultAppearance GetDefaultAppearance();
718 #define FIELDTYPE_SIGNATURE 7 718
719 class CPDF_InterForm : public CFX_PrivateData 719 CPDF_Font* GetDefaultFormFont();
720 { 720
721 public: 721 int GetFormAlignment();
722 722
723 CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bUpdateAP); 723 CPDF_FormField* CheckRequiredFields(const CFX_PtrArray* fields = NULL,
724 724 FX_BOOL bIncludeOrExclude = TRUE) const;
725 ~CPDF_InterForm(); 725
726 726 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path,
727 727 FX_BOOL bSimpleFileSpec = FALSE) const;
728 728
729 static void EnableUpdateAP(FX_BOOL bUpdateAP); 729 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_path,
730 730 CFX_PtrArray& fields,
731 static FX_BOOL UpdatingAPEnabled(); 731 FX_BOOL bIncludeOrExclude = TRUE,
732 732 FX_BOOL bSimpleFileSpec = FALSE) const;
733 733
734 static CFX_ByteString GenerateNewResourceName(const CPDF_Dictionary* p ResDict, const FX_CHAR* csType, int iMinLen = 2, const FX_CHAR* csPrefix = ""); 734 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE);
735 735
736 736 FX_BOOL ResetForm(const CFX_PtrArray& fields,
737 737 FX_BOOL bIncludeOrExclude = TRUE,
738 static CPDF_Font* AddSystemDefaultFont(const CPDF_Document* pDocum ent); 738 FX_BOOL bNotify = FALSE);
739 739
740 static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, CF X_ByteString csFontName, uint8_t iCharSet = 1); 740 FX_BOOL ResetForm(FX_BOOL bNotify = FALSE);
741 741
742 static CPDF_Font* AddSystemFont(const CPDF_Document* pDocument, CF X_WideString csFontName, uint8_t iCharSet = 1); 742 void ReloadForm();
743 743
744 static CPDF_Font* AddStandardFont(const CPDF_Document* pDocument, CFX_ByteString csFontName); 744 CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; }
745 745
746 static CFX_ByteString GetNativeFont(uint8_t iCharSet, void* pLogFont = NULL); 746 void SetFormNotify(const CPDF_FormNotify* pNotify);
747 747
748 static CFX_ByteString GetNativeFont(void* pLogFont = NULL); 748 int GetPageWithWidget(int iCurPage, FX_BOOL bNext);
749 749
750 static uint8_t GetNativeCharSet(); 750 FX_BOOL IsUpdated() { return m_bUpdated; }
751 751
752 static CPDF_Font* AddNativeFont(uint8_t iCharSet, const CPDF_Docum ent* pDocument); 752 void ClearUpdatedFlag() { m_bUpdated = FALSE; }
753 753
754 static CPDF_Font* AddNativeFont(const CPDF_Document* pDocument); 754 FX_BOOL HasXFAForm() const;
755 755
756 756 void FixPageFields(const CPDF_Page* pPage);
757 757
758 758 protected:
759 FX_BOOL ValidateFieldName(CFX_WideString & csNewFieldName, int iType); 759 static FX_BOOL m_bUpdateAP;
760 760
761 FX_BOOL ValidateFieldName(const CPDF_For mField* pField, CFX_WideString& csNewFieldName); 761 void LoadField(CPDF_Dictionary* pFieldDict, int nLevel = 0);
762 762
763 FX_BOOL ValidateFieldName(const CPDF_For mControl* pControl, CFX_WideString& csNewFieldName); 763 CPDF_Object* GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name);
764 764
765 765 CPDF_FormField* AddTerminalField(const CPDF_Dictionary* pFieldDict);
766 766
767 767 CPDF_FormControl* AddControl(const CPDF_FormField* pField,
768 FX_DWORD CountFields(const CFX_WideString &csFiel dName = L""); 768 const CPDF_Dictionary* pWidgetDict);
769 769
770 CPDF_FormField* GetField(FX_DWORD index, const CFX_WideS tring &csFieldName = L""); 770 void FDF_ImportField(CPDF_Dictionary* pField,
771 771 const CFX_WideString& parent_name,
772 void GetAllFieldNames(CFX_WideStringA rray& allFieldNames); 772 FX_BOOL bNotify = FALSE,
773 773 int nLevel = 0);
774 FX_BOOL IsValidFormField(const void* pFi eld); 774
775 775 FX_BOOL ValidateFieldName(CFX_WideString& csNewFieldName,
776 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDi ct) const; 776 int iType,
777 777 const CPDF_FormField* pExcludedField,
778 778 const CPDF_FormControl* pExcludedControl);
779 779
780 780 int CompareFieldName(const CFX_WideString& name1,
781 FX_DWORD CountControls(CFX_WideString csFieldName = L""); 781 const CFX_WideString& name2);
782 782
783 CPDF_FormControl* GetControl(FX_DWORD index, CFX_WideString csFiel dName = L""); 783 int CompareFieldName(const CFX_ByteString& name1,
784 784 const CFX_ByteString& name2);
785 FX_BOOL IsValidFormControl(const void* p Control); 785
786 786 CPDF_Document* m_pDocument;
787 int CountPageControls(CPDF_Page* pPa ge) const; 787
788 788 FX_BOOL m_bGenerateAP;
789 CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) cons t; 789
790 790 CPDF_Dictionary* m_pFormDict;
791 791
792 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, FX_FLOAT pdf _x, FX_FLOAT pdf_y) const; 792 CFX_MapPtrToPtr m_ControlMap;
793 793
794 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) c onst; 794 CFieldTree* m_pFieldTree;
795 795
796 796 CFX_ByteString m_bsEncoding;
797 797
798 798 CPDF_FormNotify* m_pFormNotify;
799 FX_DWORD CountInternalFields(const CFX_WideString & csFieldName = L"") const; 799
800 800 FX_BOOL m_bUpdated;
801 CPDF_Dictionary* GetInternalField(FX_DWORD index, const CFX_WideS tring& csFieldName = L"") const; 801 friend class CPDF_FormControl;
802 802 friend class CPDF_FormField;
803 803 };
804 804 #define FORMFIELD_READONLY 0x01
805 805 #define FORMFIELD_REQUIRED 0x02
806 806 #define FORMFIELD_NOEXPORT 0x04
807 CPDF_Document* GetDocument() const 807 #define FORMRADIO_NOTOGGLEOFF 0x100
808 { 808 #define FORMRADIO_UNISON 0x200
809 return m_pDocument; 809 #define FORMTEXT_MULTILINE 0x100
810 } 810 #define FORMTEXT_PASSWORD 0x200
811 811 #define FORMTEXT_NOSCROLL 0x400
812 CPDF_Dictionary* GetFormDict() const 812 #define FORMTEXT_COMB 0x800
813 { 813 #define FORMCOMBO_EDIT 0x100
814 return m_pFormDict; 814 #define FORMLIST_MULTISELECT 0x100
815 } 815 class CPDF_FormField {
816 816 public:
817 817 enum Type {
818 818 Unknown,
819 819 PushButton,
820 FX_BOOL NeedConstructAP(); 820 RadioButton,
821 821 CheckBox,
822 void NeedConstructAP(FX_BOOL bNeedAP) ; 822 Text,
823 823 RichText,
824 824 File,
825 825 ListBox,
826 826 ComboBox,
827 int CountFieldsInCalculationOrder(); 827 Sign
828 828 };
829 CPDF_FormField* GetFieldInCalculationOrder(int index); 829
830 830 CFX_WideString GetFullName();
831 int FindFieldInCalculationOrder(cons t CPDF_FormField* pField); 831
832 832 Type GetType() { return m_Type; }
833 833
834 834 FX_DWORD GetFlags() { return m_Flags; }
835 835
836 FX_DWORD CountFormFonts(); 836 CPDF_InterForm* GetInterForm() const { return m_pForm; }
837 837
838 CPDF_Font* GetFormFont(FX_DWORD index, CFX_ByteStri ng& csNameTag); 838 CPDF_Dictionary* GetFieldDict() const { return m_pDict; }
839 839
840 CPDF_Font* GetFormFont(CFX_ByteString csNameTag); 840 void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; }
841 841
842 CPDF_Font* GetFormFont(CFX_ByteString csFontName, C FX_ByteString& csNameTag); 842 FX_BOOL ResetField(FX_BOOL bNotify = FALSE);
843 843
844 CPDF_Font* GetNativeFormFont(uint8_t iCharSet, CFX_ ByteString& csNameTag); 844 int CountControls() { return m_ControlList.GetSize(); }
845 845
846 CPDF_Font* GetNativeFormFont(CFX_ByteString& csName Tag); 846 CPDF_FormControl* GetControl(int index) {
847 847 return (CPDF_FormControl*)m_ControlList.GetAt(index);
848 FX_BOOL FindFormFont(const CPDF_Font* pF ont, CFX_ByteString& csNameTag); 848 }
849 849
850 FX_BOOL FindFormFont(CFX_ByteString csFo ntName, CPDF_Font*& pFont, CFX_ByteString& csNameTag); 850 int GetControlIndex(const CPDF_FormControl* pControl);
851 851
852 inline FX_BOOL FindFormFont(CFX_WideString csFontName, CPDF_Font*& pFont, CFX_ByteString& csNameTag) 852 int GetFieldType();
853 { 853
854 return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag); 854 CPDF_AAction GetAdditionalAction();
855 } 855
856 856 CFX_WideString GetAlternateName();
857 857
858 858 CFX_WideString GetMappingName();
859 859
860 860 FX_DWORD GetFieldFlags();
861 void AddFormFont(const CPDF_Font* pFo nt, CFX_ByteString& csNameTag); 861
862 862 CFX_ByteString GetDefaultStyle();
863 CPDF_Font* AddNativeFormFont(uint8_t iCharSet, CFX_ ByteString& csNameTag); 863
864 864 CFX_WideString GetRichTextString();
865 CPDF_Font* AddNativeFormFont(CFX_ByteString& csName Tag); 865
866 866 CFX_WideString GetValue();
867 void RemoveFormFont(const CPDF_Font* pFont); 867
868 868 CFX_WideString GetDefaultValue();
869 void RemoveFormFont(CFX_ByteString cs NameTag); 869
870 870 FX_BOOL SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE);
871 871
872 872 int GetMaxLen();
873 873
874 CPDF_DefaultAppearance GetDefaultAppearance(); 874 int CountSelectedItems();
875 875
876 CPDF_Font* GetDefaultFormFont(); 876 int GetSelectedIndex(int index);
877 877
878 878 FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE);
879 879
880 int GetFormAlignment(); 880 FX_BOOL IsItemSelected(int index);
881 881
882 882 FX_BOOL SetItemSelection(int index,
883 883 FX_BOOL bSelected,
884 884 FX_BOOL bNotify = FALSE);
885 CPDF_FormField* CheckRequiredFields(const CFX_PtrArray * fields = NULL, FX_BOOL bIncludeOrExclude = TRUE) const; 885
886 886 FX_BOOL IsItemDefaultSelected(int index);
887 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_p ath, FX_BOOL bSimpleFileSpec = FALSE) const; 887
888 888 int GetDefaultSelectedItem();
889 CFDF_Document* ExportToFDF(const CFX_WideStringC& pdf_p ath, CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bSimpleFile Spec = FALSE) const; 889
890 890 int CountOptions();
891 FX_BOOL ImportFromFDF(const CFDF_Documen t* pFDFDoc, FX_BOOL bNotify = FALSE); 891
892 892 CFX_WideString GetOptionLabel(int index);
893 893
894 894 CFX_WideString GetOptionValue(int index);
895 895
896 FX_BOOL ResetForm(const CFX_PtrArray& fi elds, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bNotify = FALSE); 896 int FindOption(CFX_WideString csOptLabel);
897 897
898 FX_BOOL ResetForm(FX_BOOL bNotify = FALS E); 898 int FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex = 0);
899 899
900 void ReloadForm(); 900 FX_BOOL CheckControl(int iControlIndex,
901 901 FX_BOOL bChecked,
902 CPDF_FormNotify* GetFormNotify() const 902 FX_BOOL bNotify = FALSE);
903 { 903
904 return m_pFormNotify; 904 int GetTopVisibleIndex();
905 } 905
906 906 int CountSelectedOptions();
907 void SetFormNotify(const CPDF_FormNot ify* pNotify); 907
908 908 int GetSelectedOptionIndex(int index);
909 909
910 int GetPageWithWidget(int iCurPage, FX_BOOL bNext); 910 FX_BOOL IsOptionSelected(int iOptIndex);
911 911
912 912 FX_BOOL SelectOption(int iOptIndex,
913 913 FX_BOOL bSelected,
914 FX_BOOL IsUpdated() 914 FX_BOOL bNotify = FALSE);
915 { 915
916 return m_bUpdated; 916 FX_BOOL ClearSelectedOptions(FX_BOOL bNotify = FALSE);
917 } 917
918 918 FX_FLOAT GetFontSize() { return m_FontSize; }
919 void ClearUpdatedFlag() 919
920 { 920 CPDF_Font* GetFont() { return m_pFont; }
921 m_bUpdated = FALSE; 921
922 } 922 protected:
923 923 CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict);
924 924
925 FX_BOOL HasXFAForm() const; 925 ~CPDF_FormField();
926 926
927 void FixPageFields(const CPDF_Page* p Page); 927 CPDF_FormField::Type m_Type;
928 protected: 928
929 929 FX_DWORD m_Flags;
930 static FX_BOOL m_bUpdateAP; 930
931 931 CPDF_InterForm* m_pForm;
932 void LoadField(CPDF_Dictionary* pFiel dDict, int nLevel = 0); 932
933 933 CPDF_Dictionary* m_pDict;
934 CPDF_Object* GetFieldAttr(CPDF_Dictionary* pFieldDict , const FX_CHAR* name); 934
935 935 CFX_PtrArray m_ControlList;
936 CPDF_FormField* AddTerminalField(const CPDF_Dictionary* pFieldDict); 936 friend class CPDF_InterForm;
937 937 friend class CPDF_FormControl;
938 CPDF_FormControl* AddControl(const CPDF_FormField* pField, const C PDF_Dictionary* pWidgetDict); 938
939 939 CFX_WideString GetValue(FX_BOOL bDefault);
940 void FDF_ImportField(CPDF_Dictionary* pField, const CFX_WideString& parent_name, FX_BOOL bNotify = FALSE, int nLevel = 0); 940
941 941 FX_BOOL SetValue(const CFX_WideString& value,
942 FX_BOOL ValidateFieldName(CFX_WideString & csNewFieldName, int iType, const CPDF_FormField* pExcludedField, const CPDF_Fo rmControl* pExcludedControl); 942 FX_BOOL bDefault,
943 943 FX_BOOL bNotify);
944 int CompareFieldName(const CFX_WideS tring& name1, const CFX_WideString& name2); 944
945 945 void SyncFieldFlags();
946 int CompareFieldName(const CFX_ByteS tring& name1, const CFX_ByteString& name2); 946
947 947 int FindListSel(CPDF_String* str);
948 CPDF_Document* m_pDocument; 948
949 949 CFX_WideString GetOptionText(int index, int sub_index);
950 FX_BOOL m_bGenerateAP; 950
951 951 void LoadDA();
952 CPDF_Dictionary* m_pFormDict; 952
953 953 void UpdateAP(CPDF_FormControl* pControl);
954 CFX_MapPtrToPtr m_ControlMap; 954
955 955 CFX_WideString GetCheckValue(FX_BOOL bDefault);
956 CFieldTree *m_pFieldTree; 956
957 957 FX_BOOL SetCheckValue(const CFX_WideString& value,
958 CFX_ByteString m_bsEncoding; 958 FX_BOOL bDefault,
959 959 FX_BOOL bNotify);
960 CPDF_FormNotify* m_pFormNotify; 960
961 961 FX_FLOAT m_FontSize;
962 FX_BOOL m_bUpdated; 962
963 friend class CPDF_FormControl; 963 CPDF_Font* m_pFont;
964 friend class CPDF_FormField; 964 };
965 }; 965 CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict,
966 #define FORMFIELD_READONLY 0x01 966 const FX_CHAR* name,
967 #define FORMFIELD_REQUIRED 0x02 967 int nLevel = 0);
968 #define FORMFIELD_NOEXPORT 0x04 968 class CPDF_IconFit {
969 #define FORMRADIO_NOTOGGLEOFF 0x100 969 public:
970 #define FORMRADIO_UNISON 0x200 970 CPDF_IconFit(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; }
971 #define FORMTEXT_MULTILINE 0x100 971
972 #define FORMTEXT_PASSWORD 0x200 972 operator CPDF_Dictionary*() const { return m_pDict; }
973 #define FORMTEXT_NOSCROLL 0x400 973
974 #define FORMTEXT_COMB 0x800 974 enum ScaleMethod { Always = 0, Bigger, Smaller, Never };
975 #define FORMCOMBO_EDIT 0x100 975
976 #define FORMLIST_MULTISELECT 0x100 976 ScaleMethod GetScaleMethod();
977 class CPDF_FormField 977
978 { 978 FX_BOOL IsProportionalScale();
979 public: 979
980 980 void GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom);
981 enum Type { 981
982 Unknown, 982 FX_BOOL GetFittingBounds();
983 PushButton, 983
984 RadioButton, 984 CPDF_Dictionary* m_pDict;
985 CheckBox, 985 };
986 Text, 986
987 RichText, 987 #define TEXTPOS_CAPTION 0
988 File, 988 #define TEXTPOS_ICON 1
989 ListBox, 989 #define TEXTPOS_BELOW 2
990 ComboBox, 990 #define TEXTPOS_ABOVE 3
991 Sign 991 #define TEXTPOS_RIGHT 4
992 }; 992 #define TEXTPOS_LEFT 5
993 993 #define TEXTPOS_OVERLAID 6
994 CFX_WideString GetFullName(); 994 class CPDF_FormControl {
995 995 public:
996 Type GetType() 996 CPDF_FormField::Type GetType() { return m_pField->GetType(); }
997 { 997
998 return m_Type; 998 CPDF_InterForm* GetInterForm() const { return m_pForm; }
999 } 999
1000 1000 CPDF_FormField* GetField() const { return m_pField; }
1001 FX_DWORD GetFlags() 1001
1002 { 1002 CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; }
1003 return m_Flags; 1003
1004 } 1004 CFX_FloatRect GetRect();
1005 1005
1006 CPDF_InterForm* GetInterForm() const 1006 void DrawControl(CFX_RenderDevice* pDevice,
1007 { 1007 CFX_AffineMatrix* pMatrix,
1008 return m_pForm; 1008 CPDF_Page* pPage,
1009 } 1009 CPDF_Annot::AppearanceMode mode,
1010 1010 const CPDF_RenderOptions* pOptions = NULL);
1011 CPDF_Dictionary* GetFieldDict() const 1011
1012 { 1012 CFX_ByteString GetCheckedAPState();
1013 return m_pDict; 1013
1014 } 1014 CFX_WideString GetExportValue();
1015 1015
1016 void SetFieldDict(CPDF_Dictionary* pD ict) 1016 FX_BOOL IsChecked();
1017 { 1017
1018 m_pDict = pDict; 1018 FX_BOOL IsDefaultChecked();
1019 } 1019
1020 1020 enum HighlightingMode { None = 0, Invert, Outline, Push, Toggle };
1021 FX_BOOL ResetField(FX_BOOL bNotify = FAL SE); 1021
1022 1022 HighlightingMode GetHighlightingMode();
1023 1023
1024 1024 FX_BOOL HasMKEntry(CFX_ByteString csEntry);
1025 int CountControls() 1025
1026 { 1026 int GetRotation();
1027 return m_ControlList.GetSize(); 1027
1028 } 1028 inline FX_ARGB GetBorderColor(int& iColorType) {
1029 1029 return GetColor(iColorType, "BC");
1030 CPDF_FormControl* GetControl(int index) 1030 }
1031 { 1031
1032 return (CPDF_FormControl*)m_ControlList.GetAt(index); 1032 inline FX_FLOAT GetOriginalBorderColor(int index) {
1033 } 1033 return GetOriginalColor(index, "BC");
1034 1034 }
1035 int GetControlIndex(const CPDF_FormC ontrol* pControl); 1035
1036 1036 inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) {
1037 1037 GetOriginalColor(iColorType, fc, "BC");
1038 1038 }
1039 1039
1040 int GetFieldType(); 1040 inline FX_ARGB GetBackgroundColor(int& iColorType) {
1041 1041 return GetColor(iColorType, "BG");
1042 1042 }
1043 1043
1044 1044 inline FX_FLOAT GetOriginalBackgroundColor(int index) {
1045 CPDF_AAction GetAdditionalAction(); 1045 return GetOriginalColor(index, "BG");
1046 1046 }
1047 1047
1048 1048 inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) {
1049 1049 GetOriginalColor(iColorType, fc, "BG");
1050 CFX_WideString GetAlternateName(); 1050 }
1051 1051
1052 1052 inline CFX_WideString GetNormalCaption() { return GetCaption("CA"); }
1053 1053
1054 1054 inline CFX_WideString GetRolloverCaption() { return GetCaption("RC"); }
1055 CFX_WideString GetMappingName(); 1055
1056 1056 inline CFX_WideString GetDownCaption() { return GetCaption("AC"); }
1057 1057
1058 1058 inline CPDF_Stream* GetNormalIcon() { return GetIcon("I"); }
1059 1059
1060 FX_DWORD GetFieldFlags(); 1060 inline CPDF_Stream* GetRolloverIcon() { return GetIcon("RI"); }
1061 1061
1062 1062 inline CPDF_Stream* GetDownIcon() { return GetIcon("IX"); }
1063 1063
1064 1064 CPDF_IconFit GetIconFit();
1065 CFX_ByteString GetDefaultStyle(); 1065
1066 1066 int GetTextPosition();
1067 1067
1068 1068 CPDF_Action GetAction();
1069 1069
1070 CFX_WideString GetRichTextString(); 1070 CPDF_AAction GetAdditionalAction();
1071 1071
1072 1072 CPDF_DefaultAppearance GetDefaultAppearance();
1073 1073
1074 CFX_WideString GetValue(); 1074 CPDF_Font* GetDefaultControlFont();
1075 1075
1076 CFX_WideString GetDefaultValue(); 1076 int GetControlAlignment();
1077 1077
1078 FX_BOOL SetValue(const CFX_WideString& v alue, FX_BOOL bNotify = FALSE); 1078 protected:
1079 1079 CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict);
1080 1080
1081 1081 CFX_ByteString GetOnStateName();
1082 1082
1083 1083 void SetOnStateName(const CFX_ByteString& csOn);
1084 int GetMaxLen(); 1084
1085 1085 void CheckControl(FX_BOOL bChecked);
1086 1086
1087 1087 FX_ARGB GetColor(int& iColorType, CFX_ByteString csEntry);
1088 1088
1089 int CountSelectedItems(); 1089 FX_FLOAT GetOriginalColor(int index, CFX_ByteString csEntry);
1090 1090
1091 int GetSelectedIndex(int index); 1091 void GetOriginalColor(int& iColorType,
1092 1092 FX_FLOAT fc[4],
1093 FX_BOOL ClearSelection(FX_BOOL bNotify = FALSE); 1093 CFX_ByteString csEntry);
1094 1094
1095 FX_BOOL IsItemSelected(int index); 1095 CFX_WideString GetCaption(CFX_ByteString csEntry);
1096 1096
1097 FX_BOOL SetItemSelection(int index, FX_B OOL bSelected, FX_BOOL bNotify = FALSE); 1097 CPDF_Stream* GetIcon(CFX_ByteString csEntry);
1098 1098
1099 FX_BOOL IsItemDefaultSelected(int index) ; 1099 CPDF_ApSettings GetMK(FX_BOOL bCreate);
1100 1100
1101 int GetDefaultSelectedItem(); 1101 CPDF_InterForm* m_pForm;
1102 1102
1103 1103 CPDF_FormField* m_pField;
1104 1104
1105 1105 CPDF_Dictionary* m_pWidgetDict;
1106 int CountOptions(); 1106 friend class CPDF_InterForm;
1107 1107 friend class CPDF_FormField;
1108 CFX_WideString GetOptionLabel(int index); 1108 };
1109 1109 class CPDF_FormNotify {
1110 CFX_WideString GetOptionValue(int index); 1110 public:
1111 1111 virtual ~CPDF_FormNotify() {}
1112 int FindOption(CFX_WideString csOptL abel); 1112
1113 1113 virtual int BeforeValueChange(const CPDF_FormField* pField,
1114 int FindOptionValue(const CFX_WideSt ring& csOptValue, int iStartIndex = 0); 1114 CFX_WideString& csValue) {
1115 1115 return 0;
1116 1116 }
1117 1117
1118 1118 virtual int AfterValueChange(const CPDF_FormField* pField) { return 0; }
1119 FX_BOOL CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify = FALSE); 1119
1120 1120 virtual int BeforeSelectionChange(const CPDF_FormField* pField,
1121 1121 CFX_WideString& csValue) {
1122 1122 return 0;
1123 1123 }
1124 int GetTopVisibleIndex(); 1124
1125 1125 virtual int AfterSelectionChange(const CPDF_FormField* pField) { return 0; }
1126 1126
1127 1127 virtual int AfterCheckedStatusChange(const CPDF_FormField* pField,
1128 1128 const CFX_ByteArray& statusArray) {
1129 int CountSelectedOptions(); 1129 return 0;
1130 1130 }
1131 int GetSelectedOptionIndex(int index ); 1131
1132 1132 virtual int BeforeFormReset(const CPDF_InterForm* pForm) { return 0; }
1133 FX_BOOL IsOptionSelected(int iOptIndex); 1133
1134 1134 virtual int AfterFormReset(const CPDF_InterForm* pForm) { return 0; }
1135 FX_BOOL SelectOption(int iOptIndex, FX_B OOL bSelected, FX_BOOL bNotify = FALSE); 1135
1136 1136 virtual int BeforeFormImportData(const CPDF_InterForm* pForm) { return 0; }
1137 FX_BOOL ClearSelectedOptions(FX_BOOL bNo tify = FALSE); 1137
1138 1138 virtual int AfterFormImportData(const CPDF_InterForm* pForm) { return 0; }
1139 1139 };
1140 1140 FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict);
1141 1141 class CPDF_PageLabel {
1142 FX_FLOAT GetFontSize() 1142 public:
1143 { 1143 CPDF_PageLabel(CPDF_Document* pDocument) { m_pDocument = pDocument; }
1144 return m_FontSize; 1144
1145 } 1145 CFX_WideString GetLabel(int nPage) const;
1146 1146
1147 CPDF_Font* GetFont() 1147 int32_t GetPageByLabel(const CFX_ByteStringC& bsLabel) const;
1148 { 1148
1149 return m_pFont; 1149 int32_t GetPageByLabel(const CFX_WideStringC& wsLabel) const;
1150 } 1150
1151 1151 protected:
1152 protected: 1152 CPDF_Document* m_pDocument;
1153 1153 };
1154 CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict); 1154 class CPDF_Metadata {
1155 1155 public:
1156 ~CPDF_FormField(); 1156 CPDF_Metadata();
1157 1157
1158 CPDF_FormField::Type m_Type; 1158 ~CPDF_Metadata();
1159 1159
1160 FX_DWORD m_Flags; 1160 void LoadDoc(CPDF_Document* pDoc);
1161 1161
1162 CPDF_InterForm* m_pForm; 1162 int32_t GetString(const CFX_ByteStringC& bsItem, CFX_WideString& wsStr);
1163 1163
1164 CPDF_Dictionary* m_pDict; 1164 CXML_Element* GetRoot() const;
1165 1165
1166 CFX_PtrArray m_ControlList; 1166 CXML_Element* GetRDF() const;
1167 friend class CPDF_InterForm; 1167
1168 friend class CPDF_FormControl; 1168 protected:
1169 1169 void* m_pData;
1170 1170 };
1171 1171 class CPDF_ViewerPreferences {
1172 CFX_WideString GetValue(FX_BOOL bDefault); 1172 public:
1173 1173 CPDF_ViewerPreferences(CPDF_Document* pDoc);
1174 FX_BOOL SetValue(const CFX_WideString& v alue, FX_BOOL bDefault, FX_BOOL bNotify); 1174
1175 1175 ~CPDF_ViewerPreferences();
1176 1176
1177 void SyncFieldFlags(); 1177 FX_BOOL IsDirectionR2L() const;
1178 1178
1179 int FindListSel(CPDF_String* str); 1179 FX_BOOL PrintScaling() const;
1180 1180
1181 CFX_WideString GetOptionText(int index, int sub_index); 1181 int32_t NumCopies() const;
1182 1182
1183 void LoadDA(); 1183 CPDF_Array* PrintPageRange() const;
1184 1184
1185 void UpdateAP(CPDF_FormControl* pCont rol); 1185 CFX_ByteString Duplex() const;
1186 1186
1187 1187 protected:
1188 1188 CPDF_Document* m_pDoc;
1189 CFX_WideString GetCheckValue(FX_BOOL bDefault); 1189 };
1190 1190 class CPDF_ApSettings {
1191 FX_BOOL SetCheckValue(const CFX_WideStri ng& value, FX_BOOL bDefault, FX_BOOL bNotify); 1191 public:
1192 1192 CPDF_ApSettings(CPDF_Dictionary* pDict = NULL) { m_pDict = pDict; }
1193 1193
1194 FX_FLOAT m_FontSize; 1194 operator CPDF_Dictionary*() const { return m_pDict; }
1195 1195
1196 CPDF_Font* m_pFont; 1196 FX_BOOL HasMKEntry(const CFX_ByteStringC& csEntry);
1197 }; 1197
1198 CPDF_Object* FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* na me, int nLevel = 0); 1198 int GetRotation();
1199 class CPDF_IconFit 1199
1200 { 1200 inline FX_ARGB GetBorderColor(int& iColorType) {
1201 public: 1201 return GetColor(iColorType, FX_BSTRC("BC"));
1202 1202 }
1203 CPDF_IconFit(CPDF_Dictionary* pDict = NULL) 1203
1204 { 1204 inline FX_FLOAT GetOriginalBorderColor(int index) {
1205 m_pDict = pDict; 1205 return GetOriginalColor(index, FX_BSTRC("BC"));
1206 } 1206 }
1207 1207
1208 operator CPDF_Dictionary*() const 1208 inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4]) {
1209 { 1209 GetOriginalColor(iColorType, fc, FX_BSTRC("BC"));
1210 return m_pDict; 1210 }
1211 } 1211
1212 1212 inline FX_ARGB GetBackgroundColor(int& iColorType) {
1213 1213 return GetColor(iColorType, FX_BSTRC("BG"));
1214 1214 }
1215 1215
1216 enum ScaleMethod { 1216 inline FX_FLOAT GetOriginalBackgroundColor(int index) {
1217 Always = 0, 1217 return GetOriginalColor(index, FX_BSTRC("BG"));
1218 Bigger, 1218 }
1219 Smaller, 1219
1220 Never 1220 inline void GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4]) {
1221 }; 1221 GetOriginalColor(iColorType, fc, FX_BSTRC("BG"));
1222 1222 }
1223 ScaleMethod GetScaleMethod(); 1223
1224 1224 inline CFX_WideString GetNormalCaption() {
1225 1225 return GetCaption(FX_BSTRC("CA"));
1226 1226 }
1227 1227
1228 FX_BOOL IsProportionalScale(); 1228 inline CFX_WideString GetRolloverCaption() {
1229 1229 return GetCaption(FX_BSTRC("RC"));
1230 1230 }
1231 1231
1232 1232 inline CFX_WideString GetDownCaption() { return GetCaption(FX_BSTRC("AC")); }
1233 void GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom); 1233
1234 1234 inline CPDF_Stream* GetNormalIcon() { return GetIcon(FX_BSTRC("I")); }
1235 1235
1236 1236 inline CPDF_Stream* GetRolloverIcon() { return GetIcon(FX_BSTRC("RI")); }
1237 1237
1238 FX_BOOL GetFittingBounds(); 1238 inline CPDF_Stream* GetDownIcon() { return GetIcon(FX_BSTRC("IX")); }
1239 1239
1240 1240 CPDF_IconFit GetIconFit();
1241 CPDF_Dictionary* m_pDict; 1241
1242 }; 1242 int GetTextPosition();
1243 1243
1244 #define TEXTPOS_CAPTION 0 1244 CPDF_Dictionary* m_pDict;
1245 #define TEXTPOS_ICON 1 1245
1246 #define TEXTPOS_BELOW 2 1246 protected:
1247 #define TEXTPOS_ABOVE 3 1247 FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry);
1248 #define TEXTPOS_RIGHT 4 1248
1249 #define TEXTPOS_LEFT 5 1249 FX_FLOAT GetOriginalColor(int index, const CFX_ByteStringC& csEntry);
1250 #define TEXTPOS_OVERLAID 6 1250
1251 class CPDF_FormControl 1251 void GetOriginalColor(int& iColorType,
1252 { 1252 FX_FLOAT fc[4],
1253 public: 1253 const CFX_ByteStringC& csEntry);
1254 1254
1255 CPDF_FormField::Type GetType() 1255 CFX_WideString GetCaption(const CFX_ByteStringC& csEntry);
1256 { 1256
1257 return m_pField->GetType(); 1257 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry);
1258 } 1258 friend class CPDF_FormControl;
1259
1260 CPDF_InterForm* GetInterForm() const
1261 {
1262 return m_pForm;
1263 }
1264
1265 CPDF_FormField* GetField() const
1266 {
1267 return m_pField;
1268 }
1269
1270 CPDF_Dictionary* GetWidget() const
1271 {
1272 return m_pWidgetDict;
1273 }
1274
1275 CFX_FloatRect GetRect();
1276
1277 void DrawControl(CFX_RenderDevice* pD evice, CFX_AffineMatrix* pMatrix,
1278 CPDF_Page* pPage, CPDF_Annot::Appearance Mode mode, const CPDF_RenderOptions* pOptions = NULL);
1279
1280
1281
1282 CFX_ByteString GetCheckedAPState();
1283
1284 CFX_WideString GetExportValue();
1285
1286 FX_BOOL IsChecked();
1287
1288 FX_BOOL IsDefaultChecked();
1289
1290
1291
1292
1293 enum HighlightingMode {
1294 None = 0,
1295 Invert,
1296 Outline,
1297 Push,
1298 Toggle
1299 };
1300
1301 HighlightingMode GetHighlightingMode();
1302
1303
1304
1305
1306 FX_BOOL HasMKEntry(CFX_ByteString csEntr y);
1307
1308
1309
1310
1311 int GetRotation();
1312
1313
1314
1315
1316 inline FX_ARGB GetBorderColor(int& iColorType)
1317 {
1318 return GetColor(iColorType, "BC");
1319 }
1320
1321 inline FX_FLOAT GetOriginalBorderColor(int index)
1322 {
1323 return GetOriginalColor(index, "BC");
1324 }
1325
1326 inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4])
1327 {
1328 GetOriginalColor(iColorType, fc, "BC");
1329 }
1330
1331
1332
1333
1334 inline FX_ARGB GetBackgroundColor(int& iColorType)
1335 {
1336 return GetColor(iColorType, "BG");
1337 }
1338
1339 inline FX_FLOAT GetOriginalBackgroundColor(int index)
1340 {
1341 return GetOriginalColor(index, "BG");
1342 }
1343
1344 inline void GetOriginalBackgroundColor(int& iColorTy pe, FX_FLOAT fc[4])
1345 {
1346 GetOriginalColor(iColorType, fc, "BG");
1347 }
1348
1349
1350
1351
1352 inline CFX_WideString GetNormalCaption()
1353 {
1354 return GetCaption("CA");
1355 }
1356
1357
1358
1359
1360 inline CFX_WideString GetRolloverCaption()
1361 {
1362 return GetCaption("RC");
1363 }
1364
1365
1366
1367
1368 inline CFX_WideString GetDownCaption()
1369 {
1370 return GetCaption("AC");
1371 }
1372
1373
1374
1375
1376 inline CPDF_Stream* GetNormalIcon()
1377 {
1378 return GetIcon("I");
1379 }
1380
1381
1382
1383
1384 inline CPDF_Stream* GetRolloverIcon()
1385 {
1386 return GetIcon("RI");
1387 }
1388
1389
1390
1391
1392 inline CPDF_Stream* GetDownIcon()
1393 {
1394 return GetIcon("IX");
1395 }
1396
1397
1398
1399
1400 CPDF_IconFit GetIconFit();
1401
1402
1403
1404
1405 int GetTextPosition();
1406
1407
1408
1409
1410 CPDF_Action GetAction();
1411
1412
1413
1414
1415 CPDF_AAction GetAdditionalAction();
1416
1417
1418
1419
1420 CPDF_DefaultAppearance GetDefaultAppearance();
1421
1422 CPDF_Font* GetDefaultControlFont();
1423
1424
1425
1426
1427 int GetControlAlignment();
1428
1429 protected:
1430
1431 CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict);
1432
1433 CFX_ByteString GetOnStateName();
1434
1435 void SetOnStateName(const CFX_ByteStr ing& csOn);
1436
1437 void CheckControl(FX_BOOL bChecked);
1438
1439 FX_ARGB GetColor(int& iColorType, CFX_By teString csEntry);
1440
1441 FX_FLOAT GetOriginalColor(int index, CFX_ByteStri ng csEntry);
1442
1443 void GetOriginalColor(int& iColorType , FX_FLOAT fc[4], CFX_ByteString csEntry);
1444
1445 CFX_WideString GetCaption(CFX_ByteString csEntry);
1446
1447 CPDF_Stream* GetIcon(CFX_ByteString csEntry);
1448
1449 CPDF_ApSettings GetMK(FX_BOOL bCreate);
1450
1451 CPDF_InterForm* m_pForm;
1452
1453 CPDF_FormField* m_pField;
1454
1455 CPDF_Dictionary* m_pWidgetDict;
1456 friend class CPDF_InterForm;
1457 friend class CPDF_FormField;
1458 };
1459 class CPDF_FormNotify
1460 {
1461 public:
1462
1463 virtual ~CPDF_FormNotify() {}
1464
1465 virtual int BeforeValueChange(const CPDF_FormField* pField, CFX_Wide String& csValue)
1466 {
1467 return 0;
1468 }
1469
1470 virtual int AfterValueChange(const CPDF_FormField* pField)
1471 {
1472 return 0;
1473 }
1474
1475 virtual int BeforeSelectionChange(const CPDF_FormField* pField, CFX_ WideString& csValue)
1476 {
1477 return 0;
1478 }
1479
1480 virtual int AfterSelectionChange(const CPDF_FormField* pField)
1481 {
1482 return 0;
1483 }
1484
1485 virtual int AfterCheckedStatusChange(const CPDF_FormField* pField, c onst CFX_ByteArray& statusArray)
1486 {
1487 return 0;
1488 }
1489
1490 virtual int BeforeFormReset(const CPDF_InterForm* pForm)
1491 {
1492 return 0;
1493 }
1494
1495 virtual int AfterFormReset(const CPDF_InterForm* pForm)
1496 {
1497 return 0;
1498 }
1499
1500 virtual int BeforeFormImportData(const CPDF_InterForm* pForm)
1501 {
1502 return 0;
1503 }
1504
1505 virtual int AfterFormImportData(const CPDF_InterForm* pForm)
1506 {
1507 return 0;
1508 }
1509 };
1510 FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict );
1511 class CPDF_PageLabel
1512 {
1513 public:
1514
1515 CPDF_PageLabel(CPDF_Document* pDocument)
1516 {
1517 m_pDocument = pDocument;
1518 }
1519
1520
1521 CFX_WideString GetLabel(int nPage) cons t;
1522
1523 int32_t GetPageByLabel(const CFX _ByteStringC& bsLabel) const;
1524
1525
1526 int32_t GetPageByLabel(const CFX _WideStringC& wsLabel) const;
1527
1528 protected:
1529 CPDF_Document* m_pDocument;
1530 };
1531 class CPDF_Metadata
1532 {
1533 public:
1534
1535 CPDF_Metadata();
1536
1537
1538 ~CPDF_Metadata();
1539
1540 void LoadDoc(CPDF_Document *pDoc);
1541
1542
1543 int32_t GetString(const CFX_ByteStringC& bsItem, CFX_Wid eString &wsStr);
1544
1545 CXML_Element* GetRoot() const;
1546
1547 CXML_Element* GetRDF() const;
1548
1549 protected:
1550 void* m_pData;
1551 };
1552 class CPDF_ViewerPreferences
1553 {
1554 public:
1555
1556 CPDF_ViewerPreferences(CPDF_Document *pDoc);
1557
1558
1559 ~CPDF_ViewerPreferences();
1560
1561
1562 FX_BOOL IsDirectionR2L() const;
1563
1564 FX_BOOL PrintScaling() const;
1565
1566 int32_t NumCopies() const;
1567
1568 CPDF_Array* PrintPageRange() const;
1569
1570 CFX_ByteString Duplex() const;
1571
1572 protected:
1573 CPDF_Document* m_pDoc;
1574 };
1575 class CPDF_ApSettings
1576 {
1577 public:
1578
1579 CPDF_ApSettings(CPDF_Dictionary* pDict = NULL)
1580 {
1581 m_pDict = pDict;
1582 }
1583
1584 operator CPDF_Dictionary* () const
1585 {
1586 return m_pDict;
1587 }
1588
1589 FX_BOOL HasMKEntry(const CFX_ByteStringC & csEntry);
1590
1591
1592
1593 int GetRotation();
1594
1595
1596
1597
1598 inline FX_ARGB GetBorderColor(int& iColorType)
1599 {
1600 return GetColor(iColorType, FX_BSTRC("BC"));
1601 }
1602
1603 inline FX_FLOAT GetOriginalBorderColor(int index)
1604 {
1605 return GetOriginalColor(index, FX_BSTRC("BC"));
1606 }
1607
1608 inline void GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4])
1609 {
1610 GetOriginalColor(iColorType, fc, FX_BSTRC("BC"));
1611 }
1612
1613
1614
1615
1616 inline FX_ARGB GetBackgroundColor(int& iColorType)
1617 {
1618 return GetColor(iColorType, FX_BSTRC("BG"));
1619 }
1620
1621 inline FX_FLOAT GetOriginalBackgroundColor(int index)
1622 {
1623 return GetOriginalColor(index, FX_BSTRC("BG"));
1624 }
1625
1626 inline void GetOriginalBackgroundColor(int& iColorTy pe, FX_FLOAT fc[4])
1627 {
1628 GetOriginalColor(iColorType, fc, FX_BSTRC("BG"));
1629 }
1630
1631
1632
1633
1634 inline CFX_WideString GetNormalCaption()
1635 {
1636 return GetCaption(FX_BSTRC("CA"));
1637 }
1638
1639
1640
1641
1642 inline CFX_WideString GetRolloverCaption()
1643 {
1644 return GetCaption(FX_BSTRC("RC"));
1645 }
1646
1647
1648
1649
1650 inline CFX_WideString GetDownCaption()
1651 {
1652 return GetCaption(FX_BSTRC("AC"));
1653 }
1654
1655
1656
1657
1658 inline CPDF_Stream* GetNormalIcon()
1659 {
1660 return GetIcon(FX_BSTRC("I"));
1661 }
1662
1663
1664
1665
1666 inline CPDF_Stream* GetRolloverIcon()
1667 {
1668 return GetIcon(FX_BSTRC("RI"));
1669 }
1670
1671
1672
1673
1674 inline CPDF_Stream* GetDownIcon()
1675 {
1676 return GetIcon(FX_BSTRC("IX"));
1677 }
1678
1679
1680
1681
1682 CPDF_IconFit GetIconFit();
1683
1684
1685
1686
1687 int GetTextPosition();
1688
1689 CPDF_Dictionary* m_pDict;
1690 protected:
1691
1692 FX_ARGB GetColor(int& iColorType, const CFX_ByteStringC& csEntry);
1693
1694 FX_FLOAT GetOriginalColor(int index, const CFX_By teStringC& csEntry);
1695
1696 void GetOriginalColor(int& iColorType , FX_FLOAT fc[4], const CFX_ByteStringC& csEntry);
1697
1698 CFX_WideString GetCaption(const CFX_ByteStringC& csEntr y);
1699
1700 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry);
1701 friend class CPDF_FormControl;
1702 }; 1259 };
1703 1260
1704 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ 1261 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698