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

Side by Side Diff: fpdfsdk/cpdfsdk_pageview.cpp

Issue 2410893002: Merge CPDFSDK_Document into CPDFSDK_FormFillEnvironment (Closed)
Patch Set: Rebase to master Created 4 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
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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 "fpdfsdk/cpdfsdk_pageview.h" 7 #include "fpdfsdk/cpdfsdk_pageview.h"
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
(...skipping 24 matching lines...) Expand all
35 m_pFormFillEnv(pFormFillEnv), 35 m_pFormFillEnv(pFormFillEnv),
36 #ifndef PDF_ENABLE_XFA 36 #ifndef PDF_ENABLE_XFA
37 m_bOwnsPage(false), 37 m_bOwnsPage(false),
38 #endif // PDF_ENABLE_XFA 38 #endif // PDF_ENABLE_XFA
39 m_bEnterWidget(FALSE), 39 m_bEnterWidget(FALSE),
40 m_bExitWidget(FALSE), 40 m_bExitWidget(FALSE),
41 m_bOnWidget(FALSE), 41 m_bOnWidget(FALSE),
42 m_bValid(FALSE), 42 m_bValid(FALSE),
43 m_bLocked(FALSE), 43 m_bLocked(FALSE),
44 m_bBeingDestroyed(false) { 44 m_bBeingDestroyed(false) {
45 CPDFSDK_InterForm* pInterForm = 45 CPDFSDK_InterForm* pInterForm = pFormFillEnv->GetInterForm();
46 pFormFillEnv->GetSDKDocument()->GetInterForm();
47 if (pInterForm) { 46 if (pInterForm) {
48 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); 47 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
49 #ifdef PDF_ENABLE_XFA 48 #ifdef PDF_ENABLE_XFA
50 if (page->GetPDFPage()) 49 if (page->GetPDFPage())
51 pPDFInterForm->FixPageFields(page->GetPDFPage()); 50 pPDFInterForm->FixPageFields(page->GetPDFPage());
52 #else // PDF_ENABLE_XFA 51 #else // PDF_ENABLE_XFA
53 pPDFInterForm->FixPageFields(page); 52 pPDFInterForm->FixPageFields(page);
54 #endif // PDF_ENABLE_XFA 53 #endif // PDF_ENABLE_XFA
55 } 54 }
56 #ifndef PDF_ENABLE_XFA 55 #ifndef PDF_ENABLE_XFA
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 189
191 FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) { 190 FX_BOOL CPDFSDK_PageView::DeleteAnnot(CPDFSDK_Annot* pAnnot) {
192 if (!pAnnot) 191 if (!pAnnot)
193 return FALSE; 192 return FALSE;
194 CPDFXFA_Page* pPage = pAnnot->GetPDFXFAPage(); 193 CPDFXFA_Page* pPage = pAnnot->GetPDFXFAPage();
195 if (!pPage || (pPage->GetDocument()->GetDocType() != DOCTYPE_STATIC_XFA && 194 if (!pPage || (pPage->GetDocument()->GetDocType() != DOCTYPE_STATIC_XFA &&
196 pPage->GetDocument()->GetDocType() != DOCTYPE_DYNAMIC_XFA)) 195 pPage->GetDocument()->GetDocType() != DOCTYPE_DYNAMIC_XFA))
197 return FALSE; 196 return FALSE;
198 197
199 if (GetFocusAnnot() == pAnnot) 198 if (GetFocusAnnot() == pAnnot)
200 m_pFormFillEnv->GetSDKDocument()->KillFocusAnnot(0); 199 m_pFormFillEnv->KillFocusAnnot(0);
201 CPDFSDK_AnnotHandlerMgr* pAnnotHandler = m_pFormFillEnv->GetAnnotHandlerMgr(); 200 CPDFSDK_AnnotHandlerMgr* pAnnotHandler = m_pFormFillEnv->GetAnnotHandlerMgr();
202 if (pAnnotHandler) 201 if (pAnnotHandler)
203 pAnnotHandler->ReleaseAnnot(pAnnot); 202 pAnnotHandler->ReleaseAnnot(pAnnot);
204 203
205 auto it = std::find(m_SDKAnnotArray.begin(), m_SDKAnnotArray.end(), pAnnot); 204 auto it = std::find(m_SDKAnnotArray.begin(), m_SDKAnnotArray.end(), pAnnot);
206 if (it != m_SDKAnnotArray.end()) 205 if (it != m_SDKAnnotArray.end())
207 m_SDKAnnotArray.erase(it); 206 m_SDKAnnotArray.erase(it);
208 if (m_pCaptureWidget.Get() == pAnnot) 207 if (m_pCaptureWidget.Get() == pAnnot)
209 m_pCaptureWidget.Reset(); 208 m_pCaptureWidget.Reset();
210 209
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 return pAnnot; 248 return pAnnot;
250 } 249 }
251 return nullptr; 250 return nullptr;
252 } 251 }
253 #endif // PDF_ENABLE_XFA 252 #endif // PDF_ENABLE_XFA
254 253
255 FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CFX_FloatPoint& point, 254 FX_BOOL CPDFSDK_PageView::OnLButtonDown(const CFX_FloatPoint& point,
256 uint32_t nFlag) { 255 uint32_t nFlag) {
257 CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point.x, point.y)); 256 CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point.x, point.y));
258 if (!pAnnot) { 257 if (!pAnnot) {
259 m_pFormFillEnv->GetSDKDocument()->KillFocusAnnot(nFlag); 258 m_pFormFillEnv->KillFocusAnnot(nFlag);
260 return FALSE; 259 return FALSE;
261 } 260 }
262 261
263 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = 262 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
264 m_pFormFillEnv->GetAnnotHandlerMgr(); 263 m_pFormFillEnv->GetAnnotHandlerMgr();
265 if (!pAnnotHandlerMgr->Annot_OnLButtonDown(this, &pAnnot, nFlag, point)) 264 if (!pAnnotHandlerMgr->Annot_OnLButtonDown(this, &pAnnot, nFlag, point))
266 return FALSE; 265 return FALSE;
267 266
268 if (!pAnnot) 267 if (!pAnnot)
269 return FALSE; 268 return FALSE;
270 269
271 m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pAnnot); 270 m_pFormFillEnv->SetFocusAnnot(&pAnnot);
272 return TRUE; 271 return TRUE;
273 } 272 }
274 273
275 #ifdef PDF_ENABLE_XFA 274 #ifdef PDF_ENABLE_XFA
276 FX_BOOL CPDFSDK_PageView::OnRButtonDown(const CFX_FloatPoint& point, 275 FX_BOOL CPDFSDK_PageView::OnRButtonDown(const CFX_FloatPoint& point,
277 uint32_t nFlag) { 276 uint32_t nFlag) {
278 CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point.x, point.y)); 277 CPDFSDK_Annot::ObservedPtr pAnnot(GetFXWidgetAtPoint(point.x, point.y));
279 if (!pAnnot) 278 if (!pAnnot)
280 return FALSE; 279 return FALSE;
281 280
282 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = 281 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
283 m_pFormFillEnv->GetAnnotHandlerMgr(); 282 m_pFormFillEnv->GetAnnotHandlerMgr();
284 FX_BOOL ok = 283 FX_BOOL ok =
285 pAnnotHandlerMgr->Annot_OnRButtonDown(this, &pAnnot, nFlag, point); 284 pAnnotHandlerMgr->Annot_OnRButtonDown(this, &pAnnot, nFlag, point);
286 if (!pAnnot) 285 if (!pAnnot)
287 return FALSE; 286 return FALSE;
288 287
289 if (ok) 288 if (ok)
290 m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pAnnot); 289 m_pFormFillEnv->SetFocusAnnot(&pAnnot);
291 290
292 return TRUE; 291 return TRUE;
293 } 292 }
294 293
295 FX_BOOL CPDFSDK_PageView::OnRButtonUp(const CFX_FloatPoint& point, 294 FX_BOOL CPDFSDK_PageView::OnRButtonUp(const CFX_FloatPoint& point,
296 uint32_t nFlag) { 295 uint32_t nFlag) {
297 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = 296 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
298 m_pFormFillEnv->GetAnnotHandlerMgr(); 297 m_pFormFillEnv->GetAnnotHandlerMgr();
299 CPDFSDK_Annot::ObservedPtr pFXAnnot(GetFXWidgetAtPoint(point.x, point.y)); 298 CPDFSDK_Annot::ObservedPtr pFXAnnot(GetFXWidgetAtPoint(point.x, point.y));
300 if (!pFXAnnot) 299 if (!pFXAnnot)
301 return FALSE; 300 return FALSE;
302 301
303 if (pAnnotHandlerMgr->Annot_OnRButtonUp(this, &pFXAnnot, nFlag, point)) 302 if (pAnnotHandlerMgr->Annot_OnRButtonUp(this, &pFXAnnot, nFlag, point))
304 m_pFormFillEnv->GetSDKDocument()->SetFocusAnnot(&pFXAnnot); 303 m_pFormFillEnv->SetFocusAnnot(&pFXAnnot);
305 304
306 return TRUE; 305 return TRUE;
307 } 306 }
308 #endif // PDF_ENABLE_XFA 307 #endif // PDF_ENABLE_XFA
309 308
310 FX_BOOL CPDFSDK_PageView::OnLButtonUp(const CFX_FloatPoint& point, 309 FX_BOOL CPDFSDK_PageView::OnLButtonUp(const CFX_FloatPoint& point,
311 uint32_t nFlag) { 310 uint32_t nFlag) {
312 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = 311 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
313 m_pFormFillEnv->GetAnnotHandlerMgr(); 312 m_pFormFillEnv->GetAnnotHandlerMgr();
314 CPDFSDK_Annot::ObservedPtr pFXAnnot(GetFXWidgetAtPoint(point.x, point.y)); 313 CPDFSDK_Annot::ObservedPtr pFXAnnot(GetFXWidgetAtPoint(point.x, point.y));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 } 391 }
393 392
394 void CPDFSDK_PageView::LoadFXAnnots() { 393 void CPDFSDK_PageView::LoadFXAnnots() {
395 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = 394 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr =
396 m_pFormFillEnv->GetAnnotHandlerMgr(); 395 m_pFormFillEnv->GetAnnotHandlerMgr();
397 396
398 SetLock(TRUE); 397 SetLock(TRUE);
399 398
400 #ifdef PDF_ENABLE_XFA 399 #ifdef PDF_ENABLE_XFA
401 CFX_RetainPtr<CPDFXFA_Page> protector(m_page); 400 CFX_RetainPtr<CPDFXFA_Page> protector(m_page);
402 if (m_pFormFillEnv->GetSDKDocument()->GetXFADocument()->GetDocType() == 401 if (m_pFormFillEnv->GetXFADocument()->GetDocType() == DOCTYPE_DYNAMIC_XFA) {
403 DOCTYPE_DYNAMIC_XFA) {
404 CXFA_FFPageView* pageView = m_page->GetXFAPageView(); 402 CXFA_FFPageView* pageView = m_page->GetXFAPageView();
405 std::unique_ptr<IXFA_WidgetIterator> pWidgetHander( 403 std::unique_ptr<IXFA_WidgetIterator> pWidgetHander(
406 pageView->CreateWidgetIterator( 404 pageView->CreateWidgetIterator(
407 XFA_TRAVERSEWAY_Form, 405 XFA_TRAVERSEWAY_Form,
408 XFA_WidgetStatus_Visible | XFA_WidgetStatus_Viewable)); 406 XFA_WidgetStatus_Visible | XFA_WidgetStatus_Viewable));
409 if (!pWidgetHander) { 407 if (!pWidgetHander) {
410 SetLock(FALSE); 408 SetLock(FALSE);
411 return; 409 return;
412 } 410 }
413 411
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 return it != annots.end(); 489 return it != annots.end();
492 } 490 }
493 491
494 bool CPDFSDK_PageView::IsValidSDKAnnot(const CPDFSDK_Annot* p) const { 492 bool CPDFSDK_PageView::IsValidSDKAnnot(const CPDFSDK_Annot* p) const {
495 if (!p) 493 if (!p)
496 return false; 494 return false;
497 return pdfium::ContainsValue(m_SDKAnnotArray, p); 495 return pdfium::ContainsValue(m_SDKAnnotArray, p);
498 } 496 }
499 497
500 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() { 498 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
501 CPDFSDK_Annot* pFocusAnnot = 499 CPDFSDK_Annot* pFocusAnnot = m_pFormFillEnv->GetFocusAnnot();
502 m_pFormFillEnv->GetSDKDocument()->GetFocusAnnot();
503 return IsValidSDKAnnot(pFocusAnnot) ? pFocusAnnot : nullptr; 500 return IsValidSDKAnnot(pFocusAnnot) ? pFocusAnnot : nullptr;
504 } 501 }
505 502
506 int CPDFSDK_PageView::GetPageIndexForStaticPDF() const { 503 int CPDFSDK_PageView::GetPageIndexForStaticPDF() const {
507 CPDF_Dictionary* pDict = GetPDFPage()->m_pFormDict; 504 CPDF_Dictionary* pDict = GetPDFPage()->m_pFormDict;
508 CPDF_Document* pDoc = m_pFormFillEnv->GetSDKDocument()->GetPDFDocument(); 505 CPDF_Document* pDoc = m_pFormFillEnv->GetPDFDocument();
509 return (pDoc && pDict) ? pDoc->GetPageIndex(pDict->GetObjNum()) : -1; 506 return (pDoc && pDict) ? pDoc->GetPageIndex(pDict->GetObjNum()) : -1;
510 } 507 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698