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

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

Issue 1473503002: Introduce "underlying types" to abstract XFA differences. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: rebase past Jun's CL. Created 5 years 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 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 <algorithm> 7 #include <algorithm>
8 8
9 #include "fpdfsdk/include/fsdk_mgr.h" 9 #include "fpdfsdk/include/fsdk_mgr.h"
10 10
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 private: 88 private:
89 CPDFDoc_Environment* m_pEnv; 89 CPDFDoc_Environment* m_pEnv;
90 int m_nCharSet; 90 int m_nCharSet;
91 }; 91 };
92 92
93 void CFX_SystemHandler::SetCursor(int32_t nCursorType) { 93 void CFX_SystemHandler::SetCursor(int32_t nCursorType) {
94 m_pEnv->FFI_SetCursor(nCursorType); 94 m_pEnv->FFI_SetCursor(nCursorType);
95 } 95 }
96 96
97 void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect) { 97 void CFX_SystemHandler::InvalidateRect(FX_HWND hWnd, FX_RECT rect) {
98 // g_pFormFillApp->FFI_Invalidate();
99 CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd; 98 CPDFSDK_Annot* pSDKAnnot = (CPDFSDK_Annot*)hWnd;
100 CPDFXFA_Page* pPage = NULL; 99 CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView();
101 CPDFSDK_PageView* pPageView = NULL; 100 UnderlyingPageType* pPage = pSDKAnnot->GetUnderlyingPage();
102 pPageView = pSDKAnnot->GetPageView();
103 pPage = pSDKAnnot->GetPDFXFAPage();
104 if (!pPage || !pPageView) 101 if (!pPage || !pPageView)
105 return; 102 return;
106 CPDF_Matrix page2device; 103 CPDF_Matrix page2device;
107 pPageView->GetCurrentMatrix(page2device); 104 pPageView->GetCurrentMatrix(page2device);
108 CPDF_Matrix device2page; 105 CPDF_Matrix device2page;
109 device2page.SetReverse(page2device); 106 device2page.SetReverse(page2device);
110 FX_FLOAT left, top, right, bottom; 107 FX_FLOAT left, top, right, bottom;
111 device2page.Transform((FX_FLOAT)rect.left, (FX_FLOAT)rect.top, left, top); 108 device2page.Transform((FX_FLOAT)rect.left, (FX_FLOAT)rect.top, left, top);
112 device2page.Transform((FX_FLOAT)rect.right, (FX_FLOAT)rect.bottom, right, 109 device2page.Transform((FX_FLOAT)rect.right, (FX_FLOAT)rect.bottom, right,
113 bottom); 110 bottom);
114 CPDF_Rect rcPDF(left, bottom, right, top); 111 CPDF_Rect rcPDF(left, bottom, right, top);
115 rcPDF.Normalize(); 112 rcPDF.Normalize();
116 113
117 m_pEnv->FFI_Invalidate(pPage, rcPDF.left, rcPDF.top, rcPDF.right, 114 m_pEnv->FFI_Invalidate(pPage, rcPDF.left, rcPDF.top, rcPDF.right,
118 rcPDF.bottom); 115 rcPDF.bottom);
119 } 116 }
120 void CFX_SystemHandler::OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) { 117 void CFX_SystemHandler::OutputSelectedRect(void* pFormFiller, CPDF_Rect& rect) {
121 CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller; 118 CFFL_FormFiller* pFFL = (CFFL_FormFiller*)pFormFiller;
122 if (pFFL) { 119 if (pFFL) {
123 CPDF_Point leftbottom = CPDF_Point(rect.left, rect.bottom); 120 CPDF_Point leftbottom = CPDF_Point(rect.left, rect.bottom);
124 CPDF_Point righttop = CPDF_Point(rect.right, rect.top); 121 CPDF_Point righttop = CPDF_Point(rect.right, rect.top);
125 CPDF_Point ptA = pFFL->PWLtoFFL(leftbottom); 122 CPDF_Point ptA = pFFL->PWLtoFFL(leftbottom);
126 CPDF_Point ptB = pFFL->PWLtoFFL(righttop); 123 CPDF_Point ptB = pFFL->PWLtoFFL(righttop);
127
128 CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot(); 124 CPDFSDK_Annot* pAnnot = pFFL->GetSDKAnnot();
129 ASSERT(pAnnot); 125 UnderlyingPageType* pPage = pAnnot->GetUnderlyingPage();
130 CPDFXFA_Page* pPage = pAnnot->GetPDFXFAPage();
131 ASSERT(pPage); 126 ASSERT(pPage);
132 m_pEnv->FFI_OutputSelectedRect(pPage, ptA.x, ptB.y, ptB.x, ptA.y); 127 m_pEnv->FFI_OutputSelectedRect(pPage, ptA.x, ptB.y, ptB.x, ptA.y);
133 } 128 }
134 } 129 }
135 130
136 FX_BOOL CFX_SystemHandler::IsSelectionImplemented() { 131 FX_BOOL CFX_SystemHandler::IsSelectionImplemented() {
137 if (m_pEnv) { 132 if (m_pEnv) {
138 FPDF_FORMFILLINFO* pInfo = m_pEnv->GetFormFillInfo(); 133 FPDF_FORMFILLINFO* pInfo = m_pEnv->GetFormFillInfo();
139 if (pInfo && pInfo->FFI_OutputSelectedRect) 134 if (pInfo && pInfo->FFI_OutputSelectedRect)
140 return TRUE; 135 return TRUE;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 return m_pEnv->FFI_SetTimer(uElapse, lpTimerFunc); 198 return m_pEnv->FFI_SetTimer(uElapse, lpTimerFunc);
204 } 199 }
205 void CFX_SystemHandler::KillTimer(int32_t nID) { 200 void CFX_SystemHandler::KillTimer(int32_t nID) {
206 m_pEnv->FFI_KillTimer(nID); 201 m_pEnv->FFI_KillTimer(nID);
207 } 202 }
208 203
209 FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime() { 204 FX_SYSTEMTIME CFX_SystemHandler::GetLocalTime() {
210 return m_pEnv->FFI_GetLocalTime(); 205 return m_pEnv->FFI_GetLocalTime();
211 } 206 }
212 207
213 CPDFDoc_Environment::CPDFDoc_Environment(CPDFXFA_Document* pDoc, 208 CPDFDoc_Environment::CPDFDoc_Environment(UnderlyingDocumentType* pDoc,
214 FPDF_FORMFILLINFO* pFFinfo) 209 FPDF_FORMFILLINFO* pFFinfo)
215 : m_pInfo(pFFinfo), m_pSDKDoc(NULL), m_pXFADoc(pDoc) { 210 : m_pInfo(pFFinfo), m_pSDKDoc(NULL), m_pUnderlyingDoc(pDoc) {
216 m_pSysHandler.reset(new CFX_SystemHandler(this)); 211 m_pSysHandler.reset(new CFX_SystemHandler(this));
217 } 212 }
218 213
219 CPDFDoc_Environment::~CPDFDoc_Environment() { 214 CPDFDoc_Environment::~CPDFDoc_Environment() {
220 CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance(); 215 CPDFXFA_App* pProvider = CPDFXFA_App::GetInstance();
221 if (pProvider->m_pEnvList.GetSize() == 0) 216 if (pProvider->m_pEnvList.GetSize() == 0)
222 pProvider->SetJavaScriptInitialized(FALSE); 217 pProvider->SetJavaScriptInitialized(FALSE);
223 } 218 }
224 219
225 int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg, 220 int CPDFDoc_Environment::JS_appAlert(const FX_WCHAR* Msg,
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 m_pActionHandler.reset(new CPDFSDK_ActionHandler()); 378 m_pActionHandler.reset(new CPDFSDK_ActionHandler());
384 return m_pActionHandler.get(); 379 return m_pActionHandler.get();
385 } 380 }
386 381
387 CFFL_IFormFiller* CPDFDoc_Environment::GetIFormFiller() { 382 CFFL_IFormFiller* CPDFDoc_Environment::GetIFormFiller() {
388 if (!m_pIFormFiller) 383 if (!m_pIFormFiller)
389 m_pIFormFiller.reset(new CFFL_IFormFiller(this)); 384 m_pIFormFiller.reset(new CFFL_IFormFiller(this));
390 return m_pIFormFiller.get(); 385 return m_pIFormFiller.get();
391 } 386 }
392 387
393 CPDFSDK_Document::CPDFSDK_Document(CPDFXFA_Document* pDoc, 388 CPDFSDK_Document::CPDFSDK_Document(UnderlyingDocumentType* pDoc,
394 CPDFDoc_Environment* pEnv) 389 CPDFDoc_Environment* pEnv)
395 : m_pDoc(pDoc), 390 : m_pDoc(pDoc),
396 m_pFocusAnnot(nullptr), 391 m_pFocusAnnot(nullptr),
397 m_pEnv(pEnv), 392 m_pEnv(pEnv),
398 m_bChangeMask(FALSE), 393 m_bChangeMask(FALSE),
399 m_bBeingDestroyed(FALSE) { 394 m_bBeingDestroyed(FALSE) {}
400 }
401 395
402 CPDFSDK_Document::~CPDFSDK_Document() { 396 CPDFSDK_Document::~CPDFSDK_Document() {
403 m_bBeingDestroyed = TRUE; 397 m_bBeingDestroyed = TRUE;
404 398
405 for (auto& it : m_pageMap) 399 for (auto& it : m_pageMap)
406 it.second->KillFocusAnnotIfNeeded(); 400 it.second->KillFocusAnnotIfNeeded();
407 401
408 for (auto& it : m_pageMap) 402 for (auto& it : m_pageMap)
409 delete it.second; 403 delete it.second;
410 m_pageMap.clear(); 404 m_pageMap.clear();
411 } 405 }
412 406
413 CPDFSDK_PageView* CPDFSDK_Document::GetPageView(CPDFXFA_Page* pPDFXFAPage, 407 CPDFSDK_PageView* CPDFSDK_Document::GetPageView(
414 FX_BOOL ReNew) { 408 UnderlyingPageType* pUnderlyingPage,
415 auto it = m_pageMap.find(pPDFXFAPage); 409 FX_BOOL ReNew) {
410 auto it = m_pageMap.find(pUnderlyingPage);
416 if (it != m_pageMap.end()) 411 if (it != m_pageMap.end())
417 return it->second; 412 return it->second;
418 413
419 if (!ReNew) 414 if (!ReNew)
420 return nullptr; 415 return nullptr;
421 416
422 CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pPDFXFAPage); 417 CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pUnderlyingPage);
423 m_pageMap[pPDFXFAPage] = pPageView; 418 m_pageMap[pUnderlyingPage] = pPageView;
424 // Delay to load all the annotations, to avoid endless loop. 419 // Delay to load all the annotations, to avoid endless loop.
425 pPageView->LoadFXAnnots(); 420 pPageView->LoadFXAnnots();
426 return pPageView; 421 return pPageView;
427 } 422 }
428 423
429 CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() { 424 CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() {
430 CPDFXFA_Page* pPage = (CPDFXFA_Page*)m_pEnv->FFI_GetCurrentPage(m_pDoc); 425 UnderlyingPageType* pPage =
426 UnderlyingFromFPDFPage(m_pEnv->FFI_GetCurrentPage(m_pDoc));
431 return pPage ? GetPageView(pPage, TRUE) : nullptr; 427 return pPage ? GetPageView(pPage, TRUE) : nullptr;
432 } 428 }
433 429
434 CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex) { 430 CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex) {
435 CPDFXFA_Page* pTempPage = (CPDFXFA_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex); 431 UnderlyingPageType* pTempPage =
432 UnderlyingFromFPDFPage(m_pEnv->FFI_GetPage(m_pDoc, nIndex));
436 if (!pTempPage) 433 if (!pTempPage)
437 return nullptr; 434 return nullptr;
438 435
439 auto it = m_pageMap.find(pTempPage); 436 auto it = m_pageMap.find(pTempPage);
440 return it->second; 437 return it->second;
441 } 438 }
442 439
443 void CPDFSDK_Document::ProcJavascriptFun() { 440 void CPDFSDK_Document::ProcJavascriptFun() {
444 CPDFXFA_Document* pPDFDoc = GetDocument(); 441 CPDF_Document* pPDFDoc = GetPDFDocument();
445 CPDF_DocJSActions docJS(pPDFDoc->GetPDFDoc()); 442 CPDF_DocJSActions docJS(pPDFDoc);
446 int iCount = docJS.CountJSActions(); 443 int iCount = docJS.CountJSActions();
447 if (iCount < 1) 444 if (iCount < 1)
448 return; 445 return;
449 for (int i = 0; i < iCount; i++) { 446 for (int i = 0; i < iCount; i++) {
450 CFX_ByteString csJSName; 447 CFX_ByteString csJSName;
451 CPDF_Action jsAction = docJS.GetJSAction(i, csJSName); 448 CPDF_Action jsAction = docJS.GetJSAction(i, csJSName);
452 if (m_pEnv->GetActionHander()) 449 if (m_pEnv->GetActionHander())
453 m_pEnv->GetActionHander()->DoAction_JavaScript( 450 m_pEnv->GetActionHander()->DoAction_JavaScript(
454 jsAction, CFX_WideString::FromLocal(csJSName), this); 451 jsAction, CFX_WideString::FromLocal(csJSName), this);
455 } 452 }
456 } 453 }
457 454
458 FX_BOOL CPDFSDK_Document::ProcOpenAction() { 455 FX_BOOL CPDFSDK_Document::ProcOpenAction() {
459 if (!m_pDoc) 456 if (!m_pDoc)
460 return FALSE; 457 return FALSE;
461 458
462 CPDF_Dictionary* pRoot = m_pDoc->GetPDFDoc()->GetRoot(); 459 CPDF_Dictionary* pRoot = GetPDFDocument()->GetRoot();
463 if (!pRoot) 460 if (!pRoot)
464 return FALSE; 461 return FALSE;
465 462
466 CPDF_Object* pOpenAction = pRoot->GetDict("OpenAction"); 463 CPDF_Object* pOpenAction = pRoot->GetDict("OpenAction");
467 if (!pOpenAction) 464 if (!pOpenAction)
468 pOpenAction = pRoot->GetArray("OpenAction"); 465 pOpenAction = pRoot->GetArray("OpenAction");
469 466
470 if (!pOpenAction) 467 if (!pOpenAction)
471 return FALSE; 468 return FALSE;
472 469
473 if (pOpenAction->IsArray()) 470 if (pOpenAction->IsArray())
474 return TRUE; 471 return TRUE;
475 472
476 if (CPDF_Dictionary* pDict = pOpenAction->AsDictionary()) { 473 if (CPDF_Dictionary* pDict = pOpenAction->AsDictionary()) {
477 CPDF_Action action(pDict); 474 CPDF_Action action(pDict);
478 if (m_pEnv->GetActionHander()) 475 if (m_pEnv->GetActionHander())
479 m_pEnv->GetActionHander()->DoAction_DocOpen(action, this); 476 m_pEnv->GetActionHander()->DoAction_DocOpen(action, this);
480 return TRUE; 477 return TRUE;
481 } 478 }
482 return FALSE; 479 return FALSE;
483 } 480 }
484 481
485 CPDF_OCContext* CPDFSDK_Document::GetOCContext() { 482 CPDF_OCContext* CPDFSDK_Document::GetOCContext() {
486 if (!m_pOccontent) 483 if (!m_pOccontent)
487 m_pOccontent.reset(new CPDF_OCContext(m_pDoc->GetPDFDoc())); 484 m_pOccontent.reset(new CPDF_OCContext(GetPDFDocument()));
488 return m_pOccontent.get(); 485 return m_pOccontent.get();
489 } 486 }
490 487
491 void CPDFSDK_Document::ReMovePageView(CPDFXFA_Page* pPDFXFAPage) { 488 void CPDFSDK_Document::RemovePageView(UnderlyingPageType* pUnderlyingPage) {
492 auto it = m_pageMap.find(pPDFXFAPage); 489 auto it = m_pageMap.find(pUnderlyingPage);
493 if (it == m_pageMap.end()) 490 if (it == m_pageMap.end())
494 return; 491 return;
495 492
496 CPDFSDK_PageView* pPageView = it->second; 493 CPDFSDK_PageView* pPageView = it->second;
497 if (pPageView->IsLocked()) 494 if (pPageView->IsLocked())
498 return; 495 return;
499 496
500 pPageView->KillFocusAnnotIfNeeded(); 497 pPageView->KillFocusAnnotIfNeeded();
501 delete pPageView; 498 delete pPageView;
502 m_pageMap.erase(it); 499 m_pageMap.erase(it);
503 } 500 }
504 501
505 CPDFXFA_Page* CPDFSDK_Document::GetPage(int nIndex) { 502 UnderlyingPageType* CPDFSDK_Document::GetPage(int nIndex) {
506 CPDFXFA_Page* pTempPage = (CPDFXFA_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex); 503 return UnderlyingFromFPDFPage(m_pEnv->FFI_GetPage(m_pDoc, nIndex));
507 if (!pTempPage)
508 return NULL;
509 return pTempPage;
510 } 504 }
511 505
512 CPDFSDK_InterForm* CPDFSDK_Document::GetInterForm() { 506 CPDFSDK_InterForm* CPDFSDK_Document::GetInterForm() {
513 if (!m_pInterForm) 507 if (!m_pInterForm)
514 m_pInterForm.reset(new CPDFSDK_InterForm(this)); 508 m_pInterForm.reset(new CPDFSDK_InterForm(this));
515 return m_pInterForm.get(); 509 return m_pInterForm.get();
516 } 510 }
517 511
518 void CPDFSDK_Document::UpdateAllViews(CPDFSDK_PageView* pSender, 512 void CPDFSDK_Document::UpdateAllViews(CPDFSDK_PageView* pSender,
519 CPDFSDK_Annot* pAnnot) { 513 CPDFSDK_Annot* pAnnot) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 577
584 if (!m_pFocusAnnot) 578 if (!m_pFocusAnnot)
585 return TRUE; 579 return TRUE;
586 } else { 580 } else {
587 m_pFocusAnnot = pFocusAnnot; 581 m_pFocusAnnot = pFocusAnnot;
588 } 582 }
589 } 583 }
590 return FALSE; 584 return FALSE;
591 } 585 }
592 586
593 FX_BOOL CPDFSDK_Document::DeletePages(int nStart, int nCount) {
594 if (nStart < 0 || nStart >= GetPageCount() || nCount <= 0) {
595 return FALSE;
596 }
597
598 CPDFXFA_Page* pTempPage = NULL;
599 for (int i = nCount - 1; i >= 0; i--) {
600 pTempPage = GetPage(nStart + i);
601 if (pTempPage != NULL) {
602 ReMovePageView(pTempPage);
603 }
604 }
605 return TRUE;
606 }
607
608 void CPDFSDK_Document::OnCloseDocument() { 587 void CPDFSDK_Document::OnCloseDocument() {
609 KillFocusAnnot(); 588 KillFocusAnnot();
610 } 589 }
611 590
612 FX_BOOL CPDFSDK_Document::GetPermissions(int nFlag) { 591 FX_BOOL CPDFSDK_Document::GetPermissions(int nFlag) {
613 FX_DWORD dwPermissions = m_pDoc->GetPDFDoc()->GetUserPermissions(); 592 FX_DWORD dwPermissions = m_pDoc->GetPDFDoc()->GetUserPermissions();
614 return dwPermissions & nFlag; 593 return dwPermissions & nFlag;
615 } 594 }
616 595
617 IJS_Runtime* CPDFSDK_Document::GetJsRuntime() { 596 IJS_Runtime* CPDFSDK_Document::GetJsRuntime() {
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag) { 983 FX_BOOL CPDFSDK_PageView::OnKeyUp(int nKeyCode, int nFlag) {
1005 return FALSE; 984 return FALSE;
1006 } 985 }
1007 986
1008 void CPDFSDK_PageView::LoadFXAnnots() { 987 void CPDFSDK_PageView::LoadFXAnnots() {
1009 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 988 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
1010 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr(); 989 CPDFSDK_AnnotHandlerMgr* pAnnotHandlerMgr = pEnv->GetAnnotHandlerMgr();
1011 990
1012 SetLock(TRUE); 991 SetLock(TRUE);
1013 m_page->AddRef(); 992 m_page->AddRef();
1014 if (m_pSDKDoc->GetDocument()->GetDocType() == DOCTYPE_DYNIMIC_XFA) { 993 if (m_pSDKDoc->GetXFADocument()->GetDocType() == DOCTYPE_DYNIMIC_XFA) {
1015 IXFA_PageView* pageView = NULL; 994 IXFA_PageView* pageView = NULL;
1016 pageView = m_page->GetXFAPageView(); 995 pageView = m_page->GetXFAPageView();
1017 ASSERT(pageView != NULL); 996 ASSERT(pageView != NULL);
1018 997
1019 IXFA_WidgetIterator* pWidgetHander = pageView->CreateWidgetIterator( 998 IXFA_WidgetIterator* pWidgetHander = pageView->CreateWidgetIterator(
1020 XFA_TRAVERSEWAY_Form, XFA_WIDGETFILTER_Visible | 999 XFA_TRAVERSEWAY_Form, XFA_WIDGETFILTER_Visible |
1021 XFA_WIDGETFILTER_Viewable | 1000 XFA_WIDGETFILTER_Viewable |
1022 XFA_WIDGETFILTER_AllType); 1001 XFA_WIDGETFILTER_AllType);
1023 if (!pWidgetHander) { 1002 if (!pWidgetHander) {
1024 m_page->Release(); 1003 m_page->Release();
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1074 void CPDFSDK_PageView::UpdateView(CPDFSDK_Annot* pAnnot) { 1053 void CPDFSDK_PageView::UpdateView(CPDFSDK_Annot* pAnnot) {
1075 CPDF_Rect rcWindow = pAnnot->GetRect(); 1054 CPDF_Rect rcWindow = pAnnot->GetRect();
1076 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv(); 1055 CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
1077 pEnv->FFI_Invalidate(m_page, rcWindow.left, rcWindow.top, rcWindow.right, 1056 pEnv->FFI_Invalidate(m_page, rcWindow.left, rcWindow.top, rcWindow.right,
1078 rcWindow.bottom); 1057 rcWindow.bottom);
1079 } 1058 }
1080 1059
1081 int CPDFSDK_PageView::GetPageIndex() { 1060 int CPDFSDK_PageView::GetPageIndex() {
1082 if (m_page) { 1061 if (m_page) {
1083 CPDF_Dictionary* pDic = m_page->GetPDFPage()->m_pFormDict; 1062 CPDF_Dictionary* pDic = m_page->GetPDFPage()->m_pFormDict;
1084 CPDFXFA_Document* pDoc = m_pSDKDoc->GetDocument(); 1063 CPDF_Document* pDoc = m_pSDKDoc->GetPDFDocument();
1085 if (pDoc && pDic) { 1064 if (pDoc && pDic) {
1086 return pDoc->GetPDFDoc()->GetPageIndex(pDic->GetObjNum()); 1065 return pDoc->GetPageIndex(pDic->GetObjNum());
1087 } 1066 }
1088 } 1067 }
1089 return -1; 1068 return -1;
1090 } 1069 }
1091 1070
1092 bool CPDFSDK_PageView::IsValidAnnot(const CPDF_Annot* p) const { 1071 bool CPDFSDK_PageView::IsValidAnnot(const CPDF_Annot* p) const {
1093 if (!p) 1072 if (!p)
1094 return false; 1073 return false;
1095 1074
1096 const auto& annots = m_pAnnotList->All(); 1075 const auto& annots = m_pAnnotList->All();
1097 return std::find(annots.begin(), annots.end(), p) != annots.end(); 1076 return std::find(annots.begin(), annots.end(), p) != annots.end();
1098 } 1077 }
1099 1078
1100 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() { 1079 CPDFSDK_Annot* CPDFSDK_PageView::GetFocusAnnot() {
1101 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot(); 1080 CPDFSDK_Annot* pFocusAnnot = m_pSDKDoc->GetFocusAnnot();
1102 if (!pFocusAnnot) 1081 if (!pFocusAnnot)
1103 return nullptr; 1082 return nullptr;
1104 1083
1105 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) { 1084 for (CPDFSDK_Annot* pAnnot : m_fxAnnotArray) {
1106 if (pAnnot == pFocusAnnot) 1085 if (pAnnot == pFocusAnnot)
1107 return pAnnot; 1086 return pAnnot;
1108 } 1087 }
1109 return nullptr; 1088 return nullptr;
1110 } 1089 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698