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

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

Issue 1295893005: Merge to XFA: Add new public APIs to find the z-order for links and widgets. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: self review 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
« no previous file with comments | « no previous file | core/src/fpdfdoc/doc_form.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>
11 #include <vector>
11 12
12 #include "../../../third_party/base/nonstd_unique_ptr.h" 13 #include "../../../third_party/base/nonstd_unique_ptr.h"
13 #include "../fpdfapi/fpdf_parser.h" 14 #include "../fpdfapi/fpdf_parser.h"
14 #include "../fpdfapi/fpdf_render.h" 15 #include "../fpdfapi/fpdf_render.h"
15 16
16 class CFieldTree; 17 class CFieldTree;
17 class CPDF_AAction; 18 class CPDF_AAction;
18 class CPDF_Action; 19 class CPDF_Action;
19 class CPDF_ActionFields; 20 class CPDF_ActionFields;
20 class CPDF_Annot; 21 class CPDF_Annot;
21 class CPDF_AnnotList; 22 class CPDF_AnnotList;
22 class CPDF_ApSettings; 23 class CPDF_ApSettings;
23 class CPDF_Bookmark; 24 class CPDF_Bookmark;
24 class CPDF_BookmarkTree; 25 class CPDF_BookmarkTree;
25 class CPDF_DefaultAppearance; 26 class CPDF_DefaultAppearance;
26 class CPDF_Dest; 27 class CPDF_Dest;
27 class CPDF_DocJSActions; 28 class CPDF_DocJSActions;
28 class CPDF_FileSpec; 29 class CPDF_FileSpec;
29 class CPDF_FormControl; 30 class CPDF_FormControl;
30 class CPDF_FormField; 31 class CPDF_FormField;
31 class CPDF_FormNotify; 32 class CPDF_FormNotify;
32 class CPDF_IconFit; 33 class CPDF_IconFit;
33 class CPDF_InterForm; 34 class CPDF_InterForm;
34 class CPDF_Link; 35 class CPDF_Link;
35 class CPDF_LinkList;
36 class CPDF_LWinParam; 36 class CPDF_LWinParam;
37 class CPDF_Metadata; 37 class CPDF_Metadata;
38 class CPDF_NumberTree; 38 class CPDF_NumberTree;
39 class CPDF_OCContext; 39 class CPDF_OCContext;
40 class CPDF_Page; 40 class CPDF_Page;
41 class CPDF_RenderOptions; 41 class CPDF_RenderOptions;
42 class CPDF_TextObject; 42 class CPDF_TextObject;
43 class CPDF_ViewerPreferences; 43 class CPDF_ViewerPreferences;
44 class CXML_Element; 44 class CXML_Element;
45 45
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 351
352 FX_BOOL GetFileName(CFX_WideString& wsFileName) const; 352 FX_BOOL GetFileName(CFX_WideString& wsFileName) const;
353 353
354 CPDF_Stream* GetFileStream() const; 354 CPDF_Stream* GetFileStream() const;
355 355
356 void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE); 356 void SetFileName(const CFX_WideStringC& wsFileName, FX_BOOL bURL = FALSE);
357 357
358 protected: 358 protected:
359 CPDF_Object* m_pObj; 359 CPDF_Object* m_pObj;
360 }; 360 };
361
361 class CPDF_LinkList { 362 class CPDF_LinkList {
362 public: 363 public:
363 CPDF_LinkList(CPDF_Document* pDoc) { m_pDocument = pDoc; } 364 CPDF_LinkList();
364
365 ~CPDF_LinkList(); 365 ~CPDF_LinkList();
366 366
367 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y); 367 CPDF_Link GetLinkAtPoint(CPDF_Page* pPage,
368 FX_FLOAT pdf_x,
369 FX_FLOAT pdf_y,
370 int* z_order);
368 371
369 int CountLinks(CPDF_Page* pPage); 372 private:
373 const std::vector<CPDF_Dictionary*>* GetPageLinks(CPDF_Page* pPage);
370 374
371 CPDF_Link GetLink(CPDF_Page* pPage, int index); 375 void LoadPageLinks(CPDF_Page* pPage, std::vector<CPDF_Dictionary*>* pList);
372 376
373 CPDF_Document* GetDocument() const { return m_pDocument; } 377 std::map<FX_DWORD, std::vector<CPDF_Dictionary*>> m_PageMap;
378 };
374 379
375 protected:
376 CPDF_Document* m_pDocument;
377
378 CFX_MapPtrToPtr m_PageMap;
379
380 CFX_PtrArray* GetPageLinks(CPDF_Page* pPage);
381
382 void LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList);
383 };
384 class CPDF_Link { 380 class CPDF_Link {
385 public: 381 public:
386 CPDF_Link() : m_pDict(nullptr) {} 382 CPDF_Link() : m_pDict(nullptr) {}
387 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {} 383 explicit CPDF_Link(CPDF_Dictionary* pDict) : m_pDict(pDict) {}
388 384
389 CPDF_Dictionary* GetDict() const { return m_pDict; } 385 CPDF_Dictionary* GetDict() const { return m_pDict; }
390 386
391 CFX_FloatRect GetRect(); 387 CFX_FloatRect GetRect();
392 CPDF_Dest GetDest(CPDF_Document* pDoc); 388 CPDF_Dest GetDest(CPDF_Document* pDoc);
393 CPDF_Action GetAction(); 389 CPDF_Action GetAction();
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 633
638 CPDF_FormField* GetField(FX_DWORD index, 634 CPDF_FormField* GetField(FX_DWORD index,
639 const CFX_WideString& csFieldName = L""); 635 const CFX_WideString& csFieldName = L"");
640 636
641 void GetAllFieldNames(CFX_WideStringArray& allFieldNames); 637 void GetAllFieldNames(CFX_WideStringArray& allFieldNames);
642 638
643 FX_BOOL IsValidFormField(const void* pField); 639 FX_BOOL IsValidFormField(const void* pField);
644 640
645 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const; 641 CPDF_FormField* GetFieldByDict(CPDF_Dictionary* pFieldDict) const;
646 642
647 FX_DWORD CountControls(CFX_WideString csFieldName = L"");
648
649 CPDF_FormControl* GetControl(FX_DWORD index,
650 CFX_WideString csFieldName = L"");
651
652 FX_BOOL IsValidFormControl(const void* pControl);
653
654 int CountPageControls(CPDF_Page* pPage) const;
655
656 CPDF_FormControl* GetPageControl(CPDF_Page* pPage, int index) const;
657
658 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage, 643 CPDF_FormControl* GetControlAtPoint(CPDF_Page* pPage,
659 FX_FLOAT pdf_x, 644 FX_FLOAT pdf_x,
660 FX_FLOAT pdf_y) const; 645 FX_FLOAT pdf_y,
646 int* z_order) const;
661 647
662 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const; 648 CPDF_FormControl* GetControlByDict(CPDF_Dictionary* pWidgetDict) const;
663 649
664 FX_DWORD CountInternalFields(const CFX_WideString& csFieldName = L"") const;
665
666 CPDF_Dictionary* GetInternalField(
667 FX_DWORD index,
668 const CFX_WideString& csFieldName = L"") const;
669
670 CPDF_Document* GetDocument() const { return m_pDocument; } 650 CPDF_Document* GetDocument() const { return m_pDocument; }
671 651
672 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; } 652 CPDF_Dictionary* GetFormDict() const { return m_pFormDict; }
673 653
674 FX_BOOL NeedConstructAP(); 654 FX_BOOL NeedConstructAP();
675 655
676 void NeedConstructAP(FX_BOOL bNeedAP); 656 void NeedConstructAP(FX_BOOL bNeedAP);
677 657
678 int CountFieldsInCalculationOrder(); 658 int CountFieldsInCalculationOrder();
679 659
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
733 FX_BOOL bSimpleFileSpec = FALSE) const; 713 FX_BOOL bSimpleFileSpec = FALSE) const;
734 714
735 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE); 715 FX_BOOL ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE);
736 716
737 FX_BOOL ResetForm(const CFX_PtrArray& fields, 717 FX_BOOL ResetForm(const CFX_PtrArray& fields,
738 FX_BOOL bIncludeOrExclude = TRUE, 718 FX_BOOL bIncludeOrExclude = TRUE,
739 FX_BOOL bNotify = FALSE); 719 FX_BOOL bNotify = FALSE);
740 720
741 FX_BOOL ResetForm(FX_BOOL bNotify = FALSE); 721 FX_BOOL ResetForm(FX_BOOL bNotify = FALSE);
742 722
743 void ReloadForm();
744
745 CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; } 723 CPDF_FormNotify* GetFormNotify() const { return m_pFormNotify; }
746 724
747 void SetFormNotify(const CPDF_FormNotify* pNotify); 725 void SetFormNotify(const CPDF_FormNotify* pNotify);
748 726
749 int GetPageWithWidget(int iCurPage, FX_BOOL bNext);
750
751 FX_BOOL IsUpdated() { return m_bUpdated; } 727 FX_BOOL IsUpdated() { return m_bUpdated; }
752 728
753 void ClearUpdatedFlag() { m_bUpdated = FALSE; } 729 void ClearUpdatedFlag() { m_bUpdated = FALSE; }
754 730
755 FX_BOOL HasXFAForm() const; 731 FX_BOOL HasXFAForm() const;
756 732
757 void FixPageFields(const CPDF_Page* pPage); 733 void FixPageFields(const CPDF_Page* pPage);
758 734
759 protected: 735 protected:
760 static FX_BOOL m_bUpdateAP; 736 static FX_BOOL m_bUpdateAP;
(...skipping 22 matching lines...) Expand all
783 759
784 int CompareFieldName(const CFX_ByteString& name1, 760 int CompareFieldName(const CFX_ByteString& name1,
785 const CFX_ByteString& name2); 761 const CFX_ByteString& name2);
786 762
787 CPDF_Document* m_pDocument; 763 CPDF_Document* m_pDocument;
788 764
789 FX_BOOL m_bGenerateAP; 765 FX_BOOL m_bGenerateAP;
790 766
791 CPDF_Dictionary* m_pFormDict; 767 CPDF_Dictionary* m_pFormDict;
792 768
793 CFX_MapPtrToPtr m_ControlMap; 769 std::map<const CPDF_Dictionary*, CPDF_FormControl*> m_ControlMap;
794 770
795 CFieldTree* m_pFieldTree; 771 CFieldTree* m_pFieldTree;
796 772
797 CFX_ByteString m_bsEncoding; 773 CFX_ByteString m_bsEncoding;
798 774
799 CPDF_FormNotify* m_pFormNotify; 775 CPDF_FormNotify* m_pFormNotify;
800 776
801 FX_BOOL m_bUpdated; 777 FX_BOOL m_bUpdated;
802 friend class CPDF_FormControl; 778 friend class CPDF_FormControl;
803 friend class CPDF_FormField; 779 friend class CPDF_FormField;
(...skipping 23 matching lines...) Expand all
827 ComboBox, 803 ComboBox,
828 Sign 804 Sign
829 }; 805 };
830 806
831 CFX_WideString GetFullName(); 807 CFX_WideString GetFullName();
832 808
833 Type GetType() { return m_Type; } 809 Type GetType() { return m_Type; }
834 810
835 FX_DWORD GetFlags() { return m_Flags; } 811 FX_DWORD GetFlags() { return m_Flags; }
836 812
837 CPDF_InterForm* GetInterForm() const { return m_pForm; }
838
839 CPDF_Dictionary* GetFieldDict() const { return m_pDict; } 813 CPDF_Dictionary* GetFieldDict() const { return m_pDict; }
840 814
841 void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; } 815 void SetFieldDict(CPDF_Dictionary* pDict) { m_pDict = pDict; }
842 816
843 FX_BOOL ResetField(FX_BOOL bNotify = FALSE); 817 FX_BOOL ResetField(FX_BOOL bNotify = FALSE);
844 818
845 int CountControls() { return m_ControlList.GetSize(); } 819 int CountControls() { return m_ControlList.GetSize(); }
846 820
847 CPDF_FormControl* GetControl(int index) { 821 CPDF_FormControl* GetControl(int index) {
848 return (CPDF_FormControl*)m_ControlList.GetAt(index); 822 return (CPDF_FormControl*)m_ControlList.GetAt(index);
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 class CPDF_FormControl { 975 class CPDF_FormControl {
1002 public: 976 public:
1003 CPDF_FormField::Type GetType() { return m_pField->GetType(); } 977 CPDF_FormField::Type GetType() { return m_pField->GetType(); }
1004 978
1005 CPDF_InterForm* GetInterForm() const { return m_pForm; } 979 CPDF_InterForm* GetInterForm() const { return m_pForm; }
1006 980
1007 CPDF_FormField* GetField() const { return m_pField; } 981 CPDF_FormField* GetField() const { return m_pField; }
1008 982
1009 CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; } 983 CPDF_Dictionary* GetWidget() const { return m_pWidgetDict; }
1010 984
1011 CFX_FloatRect GetRect(); 985 CFX_FloatRect GetRect() const;
1012 986
1013 void DrawControl(CFX_RenderDevice* pDevice, 987 void DrawControl(CFX_RenderDevice* pDevice,
1014 CFX_AffineMatrix* pMatrix, 988 CFX_AffineMatrix* pMatrix,
1015 CPDF_Page* pPage, 989 CPDF_Page* pPage,
1016 CPDF_Annot::AppearanceMode mode, 990 CPDF_Annot::AppearanceMode mode,
1017 const CPDF_RenderOptions* pOptions = NULL); 991 const CPDF_RenderOptions* pOptions = NULL);
1018 992
1019 CFX_ByteString GetCheckedAPState(); 993 CFX_ByteString GetCheckedAPState();
1020 994
1021 CFX_WideString GetExportValue(); 995 CFX_WideString GetExportValue();
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1254 FX_FLOAT fc[4], 1228 FX_FLOAT fc[4],
1255 const CFX_ByteStringC& csEntry); 1229 const CFX_ByteStringC& csEntry);
1256 1230
1257 CFX_WideString GetCaption(const CFX_ByteStringC& csEntry); 1231 CFX_WideString GetCaption(const CFX_ByteStringC& csEntry);
1258 1232
1259 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry); 1233 CPDF_Stream* GetIcon(const CFX_ByteStringC& csEntry);
1260 friend class CPDF_FormControl; 1234 friend class CPDF_FormControl;
1261 }; 1235 };
1262 1236
1263 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_ 1237 #endif // CORE_INCLUDE_FPDFDOC_FPDF_DOC_H_
OLDNEW
« no previous file with comments | « no previous file | core/src/fpdfdoc/doc_form.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698