OLD | NEW |
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> |
| 11 #include <vector> |
11 | 12 |
12 #include "../fpdfapi/fpdf_parser.h" | 13 #include "../fpdfapi/fpdf_parser.h" |
13 #include "../fpdfapi/fpdf_render.h" | 14 #include "../fpdfapi/fpdf_render.h" |
14 | 15 |
15 class CFieldTree; | 16 class CFieldTree; |
16 class CPDF_AAction; | 17 class CPDF_AAction; |
17 class CPDF_Action; | 18 class CPDF_Action; |
18 class CPDF_ActionFields; | 19 class CPDF_ActionFields; |
19 class CPDF_Annot; | 20 class CPDF_Annot; |
20 class CPDF_AnnotList; | 21 class CPDF_AnnotList; |
21 class CPDF_ApSettings; | 22 class CPDF_ApSettings; |
22 class CPDF_Bookmark; | 23 class CPDF_Bookmark; |
23 class CPDF_BookmarkTree; | 24 class CPDF_BookmarkTree; |
24 class CPDF_DefaultAppearance; | 25 class CPDF_DefaultAppearance; |
25 class CPDF_Dest; | 26 class CPDF_Dest; |
26 class CPDF_DocJSActions; | 27 class CPDF_DocJSActions; |
27 class CPDF_FileSpec; | 28 class CPDF_FileSpec; |
28 class CPDF_FormControl; | 29 class CPDF_FormControl; |
29 class CPDF_FormField; | 30 class CPDF_FormField; |
30 class CPDF_FormNotify; | 31 class CPDF_FormNotify; |
31 class CPDF_IconFit; | 32 class CPDF_IconFit; |
32 class CPDF_InterForm; | 33 class CPDF_InterForm; |
33 class CPDF_Link; | 34 class CPDF_Link; |
34 class CPDF_LinkList; | |
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 |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 | 350 |
351 FX_BOOL GetFileName(CFX_WideString& wsFileName) const; | 351 FX_BOOL GetFileName(CFX_WideString& wsFileName) const; |
352 | 352 |
353 CPDF_Stream* GetFileStream() const; | 353 CPDF_Stream* GetFileStream() const; |
354 | 354 |
355 void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); | 355 void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); |
356 | 356 |
357 protected: | 357 protected: |
358 CPDF_Object* m_pObj; | 358 CPDF_Object* m_pObj; |
359 }; | 359 }; |
| 360 |
360 class CPDF_LinkList { | 361 class CPDF_LinkList { |
361 public: | 362 public: |
362 CPDF_LinkList(CPDF_Document* pDoc) { m_pDocument = pDoc; } | 363 CPDF_LinkList(); |
363 | |
364 ~CPDF_LinkList(); | 364 ~CPDF_LinkList(); |
365 | 365 |
366 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); | 366 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, |
| 367 FX_FLOAT pdf_x, |
| 368 FX_FLOAT pdf_y, |
| 369 int* z_order); |
367 | 370 |
368 int CountLinks(CPDF_Page* pPage); | 371 private: |
| 372 const std::vector<CPDF_Dictionary*>* GetPageLinks(CPDF_Page* pPage); |
369 | 373 |
370 CPDF_Link GetLink(CPDF_Page* pPage, int index); | 374 void LoadPageLinks(CPDF_Page* pPage, std::vector<CPDF_Dictionary*>* pList); |
371 | 375 |
372 CPDF_Document* GetDocument() const { return m_pDocument; } | 376 std::map<FX_DWORD, std::vector<CPDF_Dictionary*>> m_PageMap; |
| 377 }; |
373 | 378 |
374 protected: | |
375 CPDF_Document* m_pDocument; | |
376 | |
377 CFX_MapPtrToPtr m_PageMap; | |
378 | |
379 CFX_PtrArray* GetPageLinks(CPDF_Page* pPage); | |
380 | |
381 void LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList); | |
382 }; | |
383 class CPDF_Link { | 379 class CPDF_Link { |
384 public: | 380 public: |
385 CPDF_Link() : m_pDict(nullptr) {} | 381 CPDF_Link() : m_pDict(nullptr) {} |
386 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {} | 382 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {} |
387 | 383 |
388 CPDF_Dictionary* GetDict() const { return m_pDict; } | 384 CPDF_Dictionary* GetDict() const { return m_pDict; } |
389 | 385 |
390 CFX_FloatRect GetRect(); | 386 CFX_FloatRect GetRect(); |
391 CPDF_Dest GetDest(CPDF_Document* pDoc); | 387 CPDF_Dest GetDest(CPDF_Document* pDoc); |
392 CPDF_Action GetAction(); | 388 CPDF_Action GetAction(); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
636 | 632 |
637 CPDF_FormField* GetField(FX_DWORD index, | 633 CPDF_FormField* GetField(FX_DWORD index, |
638 const CFX_WideString& csFieldName = L""); | 634 const CFX_WideString& csFieldName = L""); |
639 | 635 |
640 void GetAllFieldNames(CFX_WideStringArray& allFieldNames); | 636 void GetAllFieldNames(CFX_WideStringArray& allFieldNames); |
641 | 637 |
642 FX_BOOL IsValidFormField(const void* pField); | 638 FX_BOOL IsValidFormField(const void* pField); |
643 | 639 |
644 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const; | 640 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const; |
645 | 641 |
646 FX_DWORD CountControls(CFX_WideString csFieldName = L""); | |
647 | |
648 CPDF_FormControl* GetControl(FX_DWORD index, | |
649 CFX_WideString csFieldName = L""); | |
650 | |
651 FX_BOOL IsValidFormControl(const void* pControl); | |
652 | |
653 int CountPageControls(CPDF_Page* pPage) const; | |
654 | |
655 CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) const; | |
656 | |
657 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, | 642 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, |
658 FX_FLOAT pdf_x, | 643 FX_FLOAT pdf_x, |
659 FX_FLOAT pdf_y) const; | 644 FX_FLOAT pdf_y, |
| 645 int* z_order) const; |
660 | 646 |
661 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const; | 647 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const; |
662 | 648 |
663 FX_DWORD CountInternalFields(const CFX_WideString& csFieldName = L"") const; | |
664 | |
665 CPDF_Dictionary* GetInternalField( | |
666 FX_DWORD index, | |
667 const CFX_WideString& csFieldName = L"") const; | |
668 | |
669 CPDF_Document* GetDocument() const { return m_pDocument; } | 649 CPDF_Document* GetDocument() const { return m_pDocument; } |
670 | 650 |
671 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; } | 651 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; } |
672 | 652 |
673 FX_BOOL NeedConstructAP(); | 653 FX_BOOL NeedConstructAP(); |
674 | 654 |
675 void NeedConstructAP(FX_BOOL bNeedAP); | 655 void NeedConstructAP(FX_BOOL bNeedAP); |
676 | 656 |
677 int CountFieldsInCalculationOrder(); | 657 int CountFieldsInCalculationOrder(); |
678 | 658 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
732 FX_BOOL bSimpleFileSpec = FALSE) const; | 712 FX_BOOL bSimpleFileSpec = FALSE) const; |
733 | 713 |
734 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE); | 714 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE); |
735 | 715 |
736 FX_BOOL ResetForm(const CFX_PtrArray& fields, | 716 FX_BOOL ResetForm(const CFX_PtrArray& fields, |
737 FX_BOOL bIncludeOrExclude = TRUE, | 717 FX_BOOL bIncludeOrExclude = TRUE, |
738 FX_BOOL bNotify = FALSE); | 718 FX_BOOL bNotify = FALSE); |
739 | 719 |
740 FX_BOOL ResetForm(FX_BOOL bNotify = FALSE); | 720 FX_BOOL ResetForm(FX_BOOL bNotify = FALSE); |
741 | 721 |
742 void ReloadForm(); | |
743 | |
744 CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; } | 722 CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; } |
745 | 723 |
746 void SetFormNotify(const CPDF_FormNotify* pNotify); | 724 void SetFormNotify(const CPDF_FormNotify* pNotify); |
747 | 725 |
748 int GetPageWithWidget(int iCurPage, FX_BOOL bNext); | |
749 | |
750 FX_BOOL IsUpdated() { return m_bUpdated; } | 726 FX_BOOL IsUpdated() { return m_bUpdated; } |
751 | 727 |
752 void ClearUpdatedFlag() { m_bUpdated = FALSE; } | 728 void ClearUpdatedFlag() { m_bUpdated = FALSE; } |
753 | 729 |
754 FX_BOOL HasXFAForm() const; | 730 FX_BOOL HasXFAForm() const; |
755 | 731 |
756 void FixPageFields(const CPDF_Page* pPage); | 732 void FixPageFields(const CPDF_Page* pPage); |
757 | 733 |
758 protected: | 734 protected: |
759 static FX_BOOL m_bUpdateAP; | 735 static FX_BOOL m_bUpdateAP; |
(...skipping 22 matching lines...) Expand all Loading... |
782 | 758 |
783 int CompareFieldName(const CFX_ByteString& name1, | 759 int CompareFieldName(const CFX_ByteString& name1, |
784 const CFX_ByteString& name2); | 760 const CFX_ByteString& name2); |
785 | 761 |
786 CPDF_Document* m_pDocument; | 762 CPDF_Document* m_pDocument; |
787 | 763 |
788 FX_BOOL m_bGenerateAP; | 764 FX_BOOL m_bGenerateAP; |
789 | 765 |
790 CPDF_Dictionary* m_pFormDict; | 766 CPDF_Dictionary* m_pFormDict; |
791 | 767 |
792 CFX_MapPtrToPtr m_ControlMap; | 768 std::map<const CPDF_Dictionary*, CPDF_FormControl*> m_ControlMap; |
793 | 769 |
794 CFieldTree* m_pFieldTree; | 770 CFieldTree* m_pFieldTree; |
795 | 771 |
796 CFX_ByteString m_bsEncoding; | 772 CFX_ByteString m_bsEncoding; |
797 | 773 |
798 CPDF_FormNotify* m_pFormNotify; | 774 CPDF_FormNotify* m_pFormNotify; |
799 | 775 |
800 FX_BOOL m_bUpdated; | 776 FX_BOOL m_bUpdated; |
801 friend class CPDF_FormControl; | 777 friend class CPDF_FormControl; |
802 friend class CPDF_FormField; | 778 friend class CPDF_FormField; |
(...skipping 23 matching lines...) Expand all Loading... |
826 ComboBox, | 802 ComboBox, |
827 Sign | 803 Sign |
828 }; | 804 }; |
829 | 805 |
830 CFX_WideString GetFullName(); | 806 CFX_WideString GetFullName(); |
831 | 807 |
832 Type GetType() { return m_Type; } | 808 Type GetType() { return m_Type; } |
833 | 809 |
834 FX_DWORD GetFlags() { return m_Flags; } | 810 FX_DWORD GetFlags() { return m_Flags; } |
835 | 811 |
836 CPDF_InterForm* GetInterForm() const { return m_pForm; } | |
837 | |
838 CPDF_Dictionary* GetFieldDict() const { return m_pDict; } | 812 CPDF_Dictionary* GetFieldDict() const { return m_pDict; } |
839 | 813 |
840 void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; } | 814 void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; } |
841 | 815 |
842 FX_BOOL ResetField(FX_BOOL bNotify = FALSE); | 816 FX_BOOL ResetField(FX_BOOL bNotify = FALSE); |
843 | 817 |
844 int CountControls() { return m_ControlList.GetSize(); } | 818 int CountControls() { return m_ControlList.GetSize(); } |
845 | 819 |
846 CPDF_FormControl* GetControl(int index) { | 820 CPDF_FormControl* GetControl(int index) { |
847 return (CPDF_FormControl*)m_ControlList.GetAt(index); | 821 return (CPDF_FormControl*)m_ControlList.GetAt(index); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
994 class CPDF_FormControl { | 968 class CPDF_FormControl { |
995 public: | 969 public: |
996 CPDF_FormField::Type GetType() { return m_pField->GetType(); } | 970 CPDF_FormField::Type GetType() { return m_pField->GetType(); } |
997 | 971 |
998 CPDF_InterForm* GetInterForm() const { return m_pForm; } | 972 CPDF_InterForm* GetInterForm() const { return m_pForm; } |
999 | 973 |
1000 CPDF_FormField* GetField() const { return m_pField; } | 974 CPDF_FormField* GetField() const { return m_pField; } |
1001 | 975 |
1002 CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; } | 976 CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; } |
1003 | 977 |
1004 CFX_FloatRect GetRect(); | 978 CFX_FloatRect GetRect() const; |
1005 | 979 |
1006 void DrawControl(CFX_RenderDevice* pDevice, | 980 void DrawControl(CFX_RenderDevice* pDevice, |
1007 CFX_AffineMatrix* pMatrix, | 981 CFX_AffineMatrix* pMatrix, |
1008 CPDF_Page* pPage, | 982 CPDF_Page* pPage, |
1009 CPDF_Annot::AppearanceMode mode, | 983 CPDF_Annot::AppearanceMode mode, |
1010 const CPDF_RenderOptions* pOptions = NULL); | 984 const CPDF_RenderOptions* pOptions = NULL); |
1011 | 985 |
1012 CFX_ByteString GetCheckedAPState(); | 986 CFX_ByteString GetCheckedAPState(); |
1013 | 987 |
1014 CFX_WideString GetExportValue(); | 988 CFX_WideString GetExportValue(); |
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1252 FX_FLOAT fc[4], | 1226 FX_FLOAT fc[4], |
1253 const CFX_ByteStringC& csEntry); | 1227 const CFX_ByteStringC& csEntry); |
1254 | 1228 |
1255 CFX_WideString GetCaption(const CFX_ByteStringC& csEntry); | 1229 CFX_WideString GetCaption(const CFX_ByteStringC& csEntry); |
1256 | 1230 |
1257 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry); | 1231 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry); |
1258 friend class CPDF_FormControl; | 1232 friend class CPDF_FormControl; |
1259 }; | 1233 }; |
1260 | 1234 |
1261 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ | 1235 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ |
OLD | NEW |