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

Side by Side Diff: fpdfsdk/src/fpdfformfill.cpp

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 | « fpdfsdk/src/fpdfdoc.cpp ('k') | fpdfsdk/src/fpdfview_c_api_test.c » ('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 #include "../../public/fpdf_formfill.h" 7 #include "../../public/fpdf_formfill.h"
8 #include "../../public/fpdfview.h" 8 #include "../../public/fpdfview.h"
9 #include "../include/fsdk_define.h" 9 #include "../include/fsdk_define.h"
10 #include "../include/fpdfxfa/fpdfxfa_doc.h" 10 #include "../include/fpdfxfa/fpdfxfa_doc.h"
(...skipping 19 matching lines...) Expand all
30 FPDF_PAGE page) { 30 FPDF_PAGE page) {
31 if (!page) 31 if (!page)
32 return nullptr; 32 return nullptr;
33 33
34 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle); 34 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
35 return pSDKDoc ? pSDKDoc->GetPageView((CPDFXFA_Page*)page, TRUE) : nullptr; 35 return pSDKDoc ? pSDKDoc->GetPageView((CPDFXFA_Page*)page, TRUE) : nullptr;
36 } 36 }
37 37
38 } // namespace 38 } // namespace
39 39
40 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, 40 DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
41 FPDF_PAGE page, 41 FPDF_PAGE page,
42 double page_x, 42 double page_x,
43 double page_y) { 43 double page_y) {
44 if (!page || !hHandle) 44 if (!page || !hHandle)
45 return -1; 45 return -1;
46
46 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage(); 47 CPDF_Page* pPage = ((CPDFXFA_Page*)page)->GetPDFPage();
47 if (pPage) { 48 if (pPage) {
48 CPDF_InterForm* pInterForm = NULL; 49 CPDF_InterForm interform(pPage->m_pDocument, FALSE);
49 pInterForm = new CPDF_InterForm(pPage->m_pDocument, FALSE); 50 CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint(
50 if (!pInterForm) 51 pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr);
52 if (!pFormCtrl)
51 return -1; 53 return -1;
52 CPDF_FormControl* pFormCtrl = pInterForm->GetControlAtPoint( 54
53 pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y); 55 CPDF_FormField* pFormField = pFormCtrl->GetField();
54 if (!pFormCtrl) { 56 if (!pFormField)
55 delete pInterForm;
56 return -1; 57 return -1;
57 }
58 CPDF_FormField* pFormField = pFormCtrl->GetField();
59 if (!pFormField) {
60 delete pInterForm;
61 return -1;
62 }
63 58
64 int nType = pFormField->GetFieldType(); 59 int nType = pFormField->GetFieldType();
65 delete pInterForm;
66 return nType; 60 return nType;
67 } 61 }
68 62
69 IXFA_PageView* pPageView = ((CPDFXFA_Page*)page)->GetXFAPageView(); 63 IXFA_PageView* pPageView = ((CPDFXFA_Page*)page)->GetXFAPageView();
70 if (pPageView) { 64 if (pPageView) {
71 IXFA_WidgetHandler* pWidgetHandler = NULL; 65 IXFA_WidgetHandler* pWidgetHandler = NULL;
72 IXFA_DocView* pDocView = pPageView->GetDocView(); 66 IXFA_DocView* pDocView = pPageView->GetDocView();
73 if (!pDocView) 67 if (!pDocView)
74 return -1; 68 return -1;
75 69
(...skipping 26 matching lines...) Expand all
102 } 96 }
103 pXFAAnnot = pWidgetIterator->MoveToNext(); 97 pXFAAnnot = pWidgetIterator->MoveToNext();
104 } 98 }
105 99
106 pWidgetIterator->Release(); 100 pWidgetIterator->Release();
107 } 101 }
108 102
109 return -1; 103 return -1;
110 } 104 }
111 105
106 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
107 FPDF_PAGE page,
108 double page_x,
109 double page_y) {
110 return FPDFPage_HasFormFieldAtPoint(hHandle, page, page_x, page_y);
111 }
112
113 DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle,
114 FPDF_PAGE page,
115 double page_x,
116 double page_y) {
117 if (!page || !hHandle)
118 return -1;
119
120 CPDF_Page* pPage = (CPDF_Page*)page;
121 CPDF_InterForm interform(pPage->m_pDocument, FALSE);
122 int z_order = -1;
123 (void)interform.GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y,
124 &z_order);
125 return z_order;
126 }
127
112 DLLEXPORT FPDF_FORMHANDLE STDCALL 128 DLLEXPORT FPDF_FORMHANDLE STDCALL
113 FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document, 129 FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document,
114 FPDF_FORMFILLINFO* formInfo) { 130 FPDF_FORMFILLINFO* formInfo) {
115 if (!document || !formInfo || formInfo->version != 2) 131 if (!document || !formInfo || formInfo->version != 2)
116 return nullptr; 132 return nullptr;
117 133
118 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document; 134 CPDFXFA_Document* pDocument = (CPDFXFA_Document*)document;
119 CPDFDoc_Environment* pEnv = new CPDFDoc_Environment(pDocument, formInfo); 135 CPDFDoc_Environment* pEnv = new CPDFDoc_Environment(pDocument, formInfo);
120 pEnv->SetSDKDocument(pDocument->GetSDKDocument(pEnv)); 136 pEnv->SetSDKDocument(pDocument->GetSDKDocument(pEnv));
121 137
(...skipping 536 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 } 674 }
659 } else { 675 } else {
660 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage); 676 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage);
661 if (bExistCAAction) { 677 if (bExistCAAction) {
662 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); 678 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage);
663 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc); 679 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc);
664 } 680 }
665 } 681 }
666 } 682 }
667 } 683 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdfdoc.cpp ('k') | fpdfsdk/src/fpdfview_c_api_test.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698