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

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

Issue 1406543004: Introduce CPDFPageFromFPDFPage() (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: rebase. Created 5 years, 2 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/fpdfeditpage.cpp ('k') | fpdfsdk/src/fpdftext.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 #include "../../public/fpdf_formfill.h" 7 #include "../../public/fpdf_formfill.h"
8 #include "../../public/fpdfview.h" 8 #include "../../public/fpdfview.h"
9 #include "../../third_party/base/nonstd_unique_ptr.h" 9 #include "../../third_party/base/nonstd_unique_ptr.h"
10 #include "../include/fsdk_define.h" 10 #include "../include/fsdk_define.h"
11 #include "../include/fsdk_mgr.h" 11 #include "../include/fsdk_mgr.h"
12 12
13 namespace { 13 namespace {
14 14
15 CPDFSDK_Document* FormHandleToSDKDoc(FPDF_FORMHANDLE hHandle) { 15 CPDFSDK_Document* FormHandleToSDKDoc(FPDF_FORMHANDLE hHandle) {
16 CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; 16 CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle;
17 return pEnv ? pEnv->GetSDKDocument() : nullptr; 17 return pEnv ? pEnv->GetSDKDocument() : nullptr;
18 } 18 }
19 19
20 CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle) { 20 CPDFSDK_InterForm* FormHandleToInterForm(FPDF_FORMHANDLE hHandle) {
21 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle); 21 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
22 return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr; 22 return pSDKDoc ? pSDKDoc->GetInterForm() : nullptr;
23 } 23 }
24 24
25 CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle, 25 CPDFSDK_PageView* FormHandleToPageView(FPDF_FORMHANDLE hHandle,
26 FPDF_PAGE page) { 26 FPDF_PAGE page) {
27 if (!page) 27 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
28 if (!pPage)
28 return nullptr; 29 return nullptr;
29 30
30 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle); 31 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
31 return pSDKDoc ? pSDKDoc->GetPageView((CPDF_Page*)page, TRUE) : nullptr; 32 return pSDKDoc ? pSDKDoc->GetPageView(pPage, TRUE) : nullptr;
32 } 33 }
33 34
34 } // namespace 35 } // namespace
35 36
36 DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, 37 DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
37 FPDF_PAGE page, 38 FPDF_PAGE page,
38 double page_x, 39 double page_x,
39 double page_y) { 40 double page_y) {
40 if (!page || !hHandle) 41 if (!hHandle)
41 return -1; 42 return -1;
42 43 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
43 CPDF_Page* pPage = (CPDF_Page*)page; 44 if (!pPage)
45 return -1;
44 CPDF_InterForm interform(pPage->m_pDocument, FALSE); 46 CPDF_InterForm interform(pPage->m_pDocument, FALSE);
45 CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint( 47 CPDF_FormControl* pFormCtrl = interform.GetControlAtPoint(
46 pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr); 48 pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, nullptr);
47 if (!pFormCtrl) 49 if (!pFormCtrl)
48 return -1; 50 return -1;
49 51
50 CPDF_FormField* pFormField = pFormCtrl->GetField(); 52 CPDF_FormField* pFormField = pFormCtrl->GetField();
51 if (!pFormField) 53 return pFormField ? pFormField->GetFieldType() : -1;
52 return -1;
53
54 return pFormField->GetFieldType();
55 } 54 }
56 55
57 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, 56 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle,
58 FPDF_PAGE page, 57 FPDF_PAGE page,
59 double page_x, 58 double page_x,
60 double page_y) { 59 double page_y) {
61 return FPDFPage_HasFormFieldAtPoint(hHandle, page, page_x, page_y); 60 return FPDFPage_HasFormFieldAtPoint(hHandle, page, page_x, page_y);
62 } 61 }
63 62
64 DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle, 63 DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle,
65 FPDF_PAGE page, 64 FPDF_PAGE page,
66 double page_x, 65 double page_x,
67 double page_y) { 66 double page_y) {
68 if (!page || !hHandle) 67 if (!hHandle)
69 return -1; 68 return -1;
70 69 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
71 CPDF_Page* pPage = (CPDF_Page*)page; 70 if (!pPage)
71 return -1;
72 CPDF_InterForm interform(pPage->m_pDocument, FALSE); 72 CPDF_InterForm interform(pPage->m_pDocument, FALSE);
73 int z_order = -1; 73 int z_order = -1;
74 (void)interform.GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y, 74 (void)interform.GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y,
75 &z_order); 75 &z_order);
76 return z_order; 76 return z_order;
77 } 77 }
78 78
79 DLLEXPORT FPDF_FORMHANDLE STDCALL 79 DLLEXPORT FPDF_FORMHANDLE STDCALL
80 FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document, 80 FPDFDOC_InitFormFillEnvironment(FPDF_DOCUMENT document,
81 FPDF_FORMFILLINFO* formInfo) { 81 FPDF_FORMFILLINFO* formInfo) {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 185
186 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, 186 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle,
187 FPDF_BITMAP bitmap, 187 FPDF_BITMAP bitmap,
188 FPDF_PAGE page, 188 FPDF_PAGE page,
189 int start_x, 189 int start_x,
190 int start_y, 190 int start_y,
191 int size_x, 191 int size_x,
192 int size_y, 192 int size_y,
193 int rotate, 193 int rotate,
194 int flags) { 194 int flags) {
195 if (!hHandle || !page) 195 if (!hHandle)
196 return; 196 return;
197 197
198 CPDF_Page* pPage = (CPDF_Page*)page; 198 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
199 if (!pPage)
200 return;
201
199 CPDF_RenderOptions options; 202 CPDF_RenderOptions options;
200 if (flags & FPDF_LCD_TEXT) 203 if (flags & FPDF_LCD_TEXT)
201 options.m_Flags |= RENDER_CLEARTYPE; 204 options.m_Flags |= RENDER_CLEARTYPE;
202 else 205 else
203 options.m_Flags &= ~RENDER_CLEARTYPE; 206 options.m_Flags &= ~RENDER_CLEARTYPE;
204 207
205 // Grayscale output 208 // Grayscale output
206 if (flags & FPDF_GRAYSCALE) { 209 if (flags & FPDF_GRAYSCALE) {
207 options.m_ColorMode = RENDER_COLOR_GRAY; 210 options.m_ColorMode = RENDER_COLOR_GRAY;
208 options.m_ForeColor = 0; 211 options.m_ForeColor = 0;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 } 259 }
257 260
258 DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, 261 DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page,
259 FPDF_FORMHANDLE hHandle) { 262 FPDF_FORMHANDLE hHandle) {
260 if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page)) 263 if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page))
261 pPageView->SetValid(TRUE); 264 pPageView->SetValid(TRUE);
262 } 265 }
263 266
264 DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, 267 DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page,
265 FPDF_FORMHANDLE hHandle) { 268 FPDF_FORMHANDLE hHandle) {
266 if (!hHandle || !page) 269 if (!hHandle)
267 return; 270 return;
268 271
269 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument(); 272 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
270 if (!pSDKDoc) 273 if (!pSDKDoc)
271 return; 274 return;
272 275
273 CPDF_Page* pPage = (CPDF_Page*)page; 276 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
277 if (!pPage)
278 return;
279
274 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); 280 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
275 if (pPageView) { 281 if (pPageView) {
276 pPageView->SetValid(FALSE); 282 pPageView->SetValid(FALSE);
277 // ReMovePageView() takes care of the delete for us. 283 // ReMovePageView() takes care of the delete for us.
278 pSDKDoc->ReMovePageView(pPage); 284 pSDKDoc->ReMovePageView(pPage);
279 } 285 }
280 } 286 }
281 287
282 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) { 288 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) {
283 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle); 289 CPDFSDK_Document* pSDKDoc = FormHandleToSDKDoc(hHandle);
(...skipping 25 matching lines...) Expand all
309 ((CPDFDoc_Environment*)hHandle)->GetActionHander(); 315 ((CPDFDoc_Environment*)hHandle)->GetActionHander();
310 ASSERT(pActionHandler != NULL); 316 ASSERT(pActionHandler != NULL);
311 pActionHandler->DoAction_Document(action, (CPDF_AAction::AActionType)aaType, 317 pActionHandler->DoAction_Document(action, (CPDF_AAction::AActionType)aaType,
312 pSDKDoc); 318 pSDKDoc);
313 } 319 }
314 } 320 }
315 321
316 DLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page, 322 DLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page,
317 FPDF_FORMHANDLE hHandle, 323 FPDF_FORMHANDLE hHandle,
318 int aaType) { 324 int aaType) {
319 if (!hHandle || !page) 325 if (!hHandle)
320 return; 326 return;
321 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument(); 327 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetSDKDocument();
322 CPDF_Page* pPage = (CPDF_Page*)page; 328 CPDF_Page* pPage = CPDFPageFromFPDFPage(page);
329 if (!pPage)
330 return;
323 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); 331 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE);
324 if (pPageView) { 332 if (pPageView) {
325 CPDFDoc_Environment* pEnv = pSDKDoc->GetEnv(); 333 CPDFDoc_Environment* pEnv = pSDKDoc->GetEnv();
326 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander(); 334 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
327 CPDF_Dictionary* pPageDict = pPage->m_pFormDict; 335 CPDF_Dictionary* pPageDict = pPage->m_pFormDict;
328 CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA")); 336 CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA"));
329 337
330 FX_BOOL bExistOAAction = FALSE; 338 FX_BOOL bExistOAAction = FALSE;
331 FX_BOOL bExistCAAction = FALSE; 339 FX_BOOL bExistCAAction = FALSE;
332 if (FPDFPAGE_AACTION_OPEN == aaType) { 340 if (FPDFPAGE_AACTION_OPEN == aaType) {
333 bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage); 341 bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage);
334 if (bExistOAAction) { 342 if (bExistOAAction) {
335 CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage); 343 CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage);
336 pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc); 344 pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc);
337 } 345 }
338 } else { 346 } else {
339 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage); 347 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage);
340 if (bExistCAAction) { 348 if (bExistCAAction) {
341 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); 349 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage);
342 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc); 350 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc);
343 } 351 }
344 } 352 }
345 } 353 }
346 } 354 }
OLDNEW
« no previous file with comments | « fpdfsdk/src/fpdfeditpage.cpp ('k') | fpdfsdk/src/fpdftext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698