OLD | NEW |
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 "fpdfsdk/include/fsdk_annothandler.h" | 7 #include "fpdfsdk/include/fsdk_annothandler.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <vector> | 10 #include <vector> |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::NewAnnot(CXFA_FFWidget* pAnnot, | 81 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::NewAnnot(CXFA_FFWidget* pAnnot, |
82 CPDFSDK_PageView* pPageView) { | 82 CPDFSDK_PageView* pPageView) { |
83 ASSERT(pAnnot); | 83 ASSERT(pAnnot); |
84 ASSERT(pPageView); | 84 ASSERT(pPageView); |
85 | 85 |
86 if (IPDFSDK_AnnotHandler* pAnnotHandler = | 86 if (IPDFSDK_AnnotHandler* pAnnotHandler = |
87 GetAnnotHandler(FSDK_XFAWIDGET_TYPENAME)) { | 87 GetAnnotHandler(FSDK_XFAWIDGET_TYPENAME)) { |
88 return pAnnotHandler->NewAnnot(pAnnot, pPageView); | 88 return pAnnotHandler->NewAnnot(pAnnot, pPageView); |
89 } | 89 } |
90 | 90 |
91 return NULL; | 91 return nullptr; |
92 } | 92 } |
93 #endif // PDF_ENABLE_XFA | 93 #endif // PDF_ENABLE_XFA |
94 | 94 |
95 void CPDFSDK_AnnotHandlerMgr::ReleaseAnnot(CPDFSDK_Annot* pAnnot) { | 95 void CPDFSDK_AnnotHandlerMgr::ReleaseAnnot(CPDFSDK_Annot* pAnnot) { |
96 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) { | 96 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) { |
97 pAnnotHandler->OnRelease(pAnnot); | 97 pAnnotHandler->OnRelease(pAnnot); |
98 pAnnotHandler->ReleaseAnnot(pAnnot); | 98 pAnnotHandler->ReleaseAnnot(pAnnot); |
99 } else { | 99 } else { |
100 delete (CPDFSDK_Annot*)pAnnot; | 100 delete (CPDFSDK_Annot*)pAnnot; |
101 } | 101 } |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 return pAnnotHandler->HitTest(pPageView, pAnnot, point); | 360 return pAnnotHandler->HitTest(pPageView, pAnnot, point); |
361 } | 361 } |
362 return FALSE; | 362 return FALSE; |
363 } | 363 } |
364 | 364 |
365 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot, | 365 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot, |
366 FX_BOOL bNext) { | 366 FX_BOOL bNext) { |
367 #ifdef PDF_ENABLE_XFA | 367 #ifdef PDF_ENABLE_XFA |
368 CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView(); | 368 CPDFSDK_PageView* pPageView = pSDKAnnot->GetPageView(); |
369 CPDFXFA_Page* pPage = pPageView->GetPDFXFAPage(); | 369 CPDFXFA_Page* pPage = pPageView->GetPDFXFAPage(); |
370 if (pPage == NULL) | 370 if (!pPage) |
371 return NULL; | 371 return nullptr; |
372 if (pPage->GetPDFPage()) { // for pdf annots. | 372 if (pPage->GetPDFPage()) { // for pdf annots. |
373 CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), pSDKAnnot->GetType(), ""); | 373 CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), pSDKAnnot->GetType(), ""); |
374 CPDFSDK_Annot* pNext = | 374 CPDFSDK_Annot* pNext = |
375 bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot); | 375 bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot); |
376 return pNext; | 376 return pNext; |
377 } | 377 } |
378 // for xfa annots | 378 // for xfa annots |
379 std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator( | 379 std::unique_ptr<IXFA_WidgetIterator> pWidgetIterator( |
380 pPage->GetXFAPageView()->CreateWidgetIterator( | 380 pPage->GetXFAPageView()->CreateWidgetIterator( |
381 XFA_TRAVERSEWAY_Tranvalse, XFA_WidgetStatus_Visible | | 381 XFA_TRAVERSEWAY_Tranvalse, XFA_WidgetStatus_Visible | |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 434 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
435 if (pPDFInterForm && pPDFInterForm->NeedConstructAP()) | 435 if (pPDFInterForm && pPDFInterForm->NeedConstructAP()) |
436 pWidget->ResetAppearance(nullptr, FALSE); | 436 pWidget->ResetAppearance(nullptr, FALSE); |
437 | 437 |
438 return pWidget; | 438 return pWidget; |
439 } | 439 } |
440 | 440 |
441 #ifdef PDF_ENABLE_XFA | 441 #ifdef PDF_ENABLE_XFA |
442 CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CXFA_FFWidget* hWidget, | 442 CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CXFA_FFWidget* hWidget, |
443 CPDFSDK_PageView* pPage) { | 443 CPDFSDK_PageView* pPage) { |
444 return NULL; | 444 return nullptr; |
445 } | 445 } |
446 #endif // PDF_ENABLE_XFA | 446 #endif // PDF_ENABLE_XFA |
447 | 447 |
448 void CPDFSDK_BFAnnotHandler::ReleaseAnnot(CPDFSDK_Annot* pAnnot) { | 448 void CPDFSDK_BFAnnotHandler::ReleaseAnnot(CPDFSDK_Annot* pAnnot) { |
449 ASSERT(pAnnot); | 449 ASSERT(pAnnot); |
450 | 450 |
451 if (m_pFormFiller) | 451 if (m_pFormFiller) |
452 m_pFormFiller->OnDelete(pAnnot); | 452 m_pFormFiller->OnDelete(pAnnot); |
453 | 453 |
454 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 454 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
646 m_pFormFiller->OnCreate(pAnnot); | 646 m_pFormFiller->OnCreate(pAnnot); |
647 } | 647 } |
648 } | 648 } |
649 | 649 |
650 void CPDFSDK_BFAnnotHandler::OnLoad(CPDFSDK_Annot* pAnnot) { | 650 void CPDFSDK_BFAnnotHandler::OnLoad(CPDFSDK_Annot* pAnnot) { |
651 if (pAnnot->GetSubType() == BFFT_SIGNATURE) | 651 if (pAnnot->GetSubType() == BFFT_SIGNATURE) |
652 return; | 652 return; |
653 | 653 |
654 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 654 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
655 if (!pWidget->IsAppearanceValid()) | 655 if (!pWidget->IsAppearanceValid()) |
656 pWidget->ResetAppearance(NULL, FALSE); | 656 pWidget->ResetAppearance(nullptr, FALSE); |
657 | 657 |
658 int nFieldType = pWidget->GetFieldType(); | 658 int nFieldType = pWidget->GetFieldType(); |
659 if (nFieldType == FIELDTYPE_TEXTFIELD || nFieldType == FIELDTYPE_COMBOBOX) { | 659 if (nFieldType == FIELDTYPE_TEXTFIELD || nFieldType == FIELDTYPE_COMBOBOX) { |
660 FX_BOOL bFormated = FALSE; | 660 FX_BOOL bFormated = FALSE; |
661 CFX_WideString sValue = pWidget->OnFormat(bFormated); | 661 CFX_WideString sValue = pWidget->OnFormat(bFormated); |
662 if (bFormated && nFieldType == FIELDTYPE_COMBOBOX) { | 662 if (bFormated && nFieldType == FIELDTYPE_COMBOBOX) { |
663 pWidget->ResetAppearance(sValue.c_str(), FALSE); | 663 pWidget->ResetAppearance(sValue.c_str(), FALSE); |
664 } | 664 } |
665 } | 665 } |
666 | 666 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
729 CPDFSDK_Annot* CPDFSDK_XFAAnnotHandler::NewAnnot(CXFA_FFWidget* pAnnot, | 729 CPDFSDK_Annot* CPDFSDK_XFAAnnotHandler::NewAnnot(CXFA_FFWidget* pAnnot, |
730 CPDFSDK_PageView* pPage) { | 730 CPDFSDK_PageView* pPage) { |
731 CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument(); | 731 CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument(); |
732 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm(); | 732 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm(); |
733 CPDFSDK_XFAWidget* pWidget = new CPDFSDK_XFAWidget(pAnnot, pPage, pInterForm); | 733 CPDFSDK_XFAWidget* pWidget = new CPDFSDK_XFAWidget(pAnnot, pPage, pInterForm); |
734 pInterForm->AddXFAMap(pAnnot, pWidget); | 734 pInterForm->AddXFAMap(pAnnot, pWidget); |
735 return pWidget; | 735 return pWidget; |
736 } | 736 } |
737 | 737 |
738 FX_BOOL CPDFSDK_XFAAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot) { | 738 FX_BOOL CPDFSDK_XFAAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot) { |
739 return pAnnot->GetXFAWidget() != NULL; | 739 return !!pAnnot->GetXFAWidget(); |
740 } | 740 } |
741 | 741 |
742 void CPDFSDK_XFAAnnotHandler::OnDraw(CPDFSDK_PageView* pPageView, | 742 void CPDFSDK_XFAAnnotHandler::OnDraw(CPDFSDK_PageView* pPageView, |
743 CPDFSDK_Annot* pAnnot, | 743 CPDFSDK_Annot* pAnnot, |
744 CFX_RenderDevice* pDevice, | 744 CFX_RenderDevice* pDevice, |
745 CFX_Matrix* pUser2Device, | 745 CFX_Matrix* pUser2Device, |
746 uint32_t dwFlags) { | 746 uint32_t dwFlags) { |
747 ASSERT(pPageView != NULL); | 747 ASSERT(pPageView); |
748 ASSERT(pAnnot != NULL); | 748 ASSERT(pAnnot); |
749 | 749 |
750 CPDFSDK_Document* pSDKDoc = pPageView->GetSDKDocument(); | 750 CPDFSDK_Document* pSDKDoc = pPageView->GetSDKDocument(); |
751 CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot); | 751 CXFA_FFWidgetHandler* pWidgetHandler = GetXFAWidgetHandler(pAnnot); |
752 | 752 |
753 CFX_Graphics gs; | 753 CFX_Graphics gs; |
754 gs.Create(pDevice); | 754 gs.Create(pDevice); |
755 | 755 |
756 CFX_Matrix mt; | 756 CFX_Matrix mt; |
757 mt = *(CFX_Matrix*)pUser2Device; | 757 mt = *(CFX_Matrix*)pUser2Device; |
758 | 758 |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 return TRUE; | 975 return TRUE; |
976 } | 976 } |
977 | 977 |
978 FX_BOOL CPDFSDK_XFAAnnotHandler::OnKillFocus(CPDFSDK_Annot* pAnnot, | 978 FX_BOOL CPDFSDK_XFAAnnotHandler::OnKillFocus(CPDFSDK_Annot* pAnnot, |
979 uint32_t nFlag) { | 979 uint32_t nFlag) { |
980 return TRUE; | 980 return TRUE; |
981 } | 981 } |
982 | 982 |
983 FX_BOOL CPDFSDK_XFAAnnotHandler::OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot, | 983 FX_BOOL CPDFSDK_XFAAnnotHandler::OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot, |
984 CPDFSDK_Annot* pNewAnnot) { | 984 CPDFSDK_Annot* pNewAnnot) { |
985 CXFA_FFWidgetHandler* pWidgetHandler = NULL; | 985 CXFA_FFWidgetHandler* pWidgetHandler = nullptr; |
986 | 986 |
987 if (pOldAnnot) | 987 if (pOldAnnot) |
988 pWidgetHandler = GetXFAWidgetHandler(pOldAnnot); | 988 pWidgetHandler = GetXFAWidgetHandler(pOldAnnot); |
989 else if (pNewAnnot) | 989 else if (pNewAnnot) |
990 pWidgetHandler = GetXFAWidgetHandler(pNewAnnot); | 990 pWidgetHandler = GetXFAWidgetHandler(pNewAnnot); |
991 | 991 |
992 if (pWidgetHandler) { | 992 if (pWidgetHandler) { |
993 FX_BOOL bRet = TRUE; | 993 FX_BOOL bRet = TRUE; |
994 CXFA_FFWidget* hWidget = pNewAnnot ? pNewAnnot->GetXFAWidget() : NULL; | 994 CXFA_FFWidget* hWidget = pNewAnnot ? pNewAnnot->GetXFAWidget() : nullptr; |
995 if (hWidget) { | 995 if (hWidget) { |
996 CXFA_FFPageView* pXFAPageView = hWidget->GetPageView(); | 996 CXFA_FFPageView* pXFAPageView = hWidget->GetPageView(); |
997 if (pXFAPageView) { | 997 if (pXFAPageView) { |
998 bRet = pXFAPageView->GetDocView()->SetFocus(hWidget); | 998 bRet = pXFAPageView->GetDocView()->SetFocus(hWidget); |
999 if (pXFAPageView->GetDocView()->GetFocusWidget() == hWidget) | 999 if (pXFAPageView->GetDocView()->GetFocusWidget() == hWidget) |
1000 bRet = TRUE; | 1000 bRet = TRUE; |
1001 } | 1001 } |
1002 } | 1002 } |
1003 return bRet; | 1003 return bRet; |
1004 } | 1004 } |
1005 | 1005 |
1006 return TRUE; | 1006 return TRUE; |
1007 } | 1007 } |
1008 | 1008 |
1009 CXFA_FFWidgetHandler* CPDFSDK_XFAAnnotHandler::GetXFAWidgetHandler( | 1009 CXFA_FFWidgetHandler* CPDFSDK_XFAAnnotHandler::GetXFAWidgetHandler( |
1010 CPDFSDK_Annot* pAnnot) { | 1010 CPDFSDK_Annot* pAnnot) { |
1011 if (!pAnnot) | 1011 if (!pAnnot) |
1012 return NULL; | 1012 return nullptr; |
1013 | 1013 |
1014 CPDFSDK_PageView* pPageView = pAnnot->GetPageView(); | 1014 CPDFSDK_PageView* pPageView = pAnnot->GetPageView(); |
1015 if (!pPageView) | 1015 if (!pPageView) |
1016 return NULL; | 1016 return nullptr; |
1017 | 1017 |
1018 CPDFSDK_Document* pSDKDoc = pPageView->GetSDKDocument(); | 1018 CPDFSDK_Document* pSDKDoc = pPageView->GetSDKDocument(); |
1019 if (!pSDKDoc) | 1019 if (!pSDKDoc) |
1020 return NULL; | 1020 return nullptr; |
1021 | 1021 |
1022 CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument(); | 1022 CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument(); |
1023 if (!pDoc) | 1023 if (!pDoc) |
1024 return NULL; | 1024 return nullptr; |
1025 | 1025 |
1026 CXFA_FFDocView* pDocView = pDoc->GetXFADocView(); | 1026 CXFA_FFDocView* pDocView = pDoc->GetXFADocView(); |
1027 if (!pDocView) | 1027 if (!pDocView) |
1028 return NULL; | 1028 return nullptr; |
1029 | 1029 |
1030 return pDocView->GetWidgetHandler(); | 1030 return pDocView->GetWidgetHandler(); |
1031 } | 1031 } |
1032 | 1032 |
1033 #define FWL_KEYFLAG_Ctrl (1 << 0) | 1033 #define FWL_KEYFLAG_Ctrl (1 << 0) |
1034 #define FWL_KEYFLAG_Alt (1 << 1) | 1034 #define FWL_KEYFLAG_Alt (1 << 1) |
1035 #define FWL_KEYFLAG_Shift (1 << 2) | 1035 #define FWL_KEYFLAG_Shift (1 << 2) |
1036 #define FWL_KEYFLAG_LButton (1 << 3) | 1036 #define FWL_KEYFLAG_LButton (1 << 3) |
1037 #define FWL_KEYFLAG_RButton (1 << 4) | 1037 #define FWL_KEYFLAG_RButton (1 << 4) |
1038 #define FWL_KEYFLAG_MButton (1 << 5) | 1038 #define FWL_KEYFLAG_MButton (1 << 5) |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 | 1091 |
1092 CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot() { | 1092 CPDFSDK_Annot* CPDFSDK_AnnotIterator::PrevAnnot() { |
1093 if (m_pos < m_iteratorAnnotList.size()) | 1093 if (m_pos < m_iteratorAnnotList.size()) |
1094 return m_iteratorAnnotList[m_iteratorAnnotList.size() - ++m_pos]; | 1094 return m_iteratorAnnotList[m_iteratorAnnotList.size() - ++m_pos]; |
1095 return nullptr; | 1095 return nullptr; |
1096 } | 1096 } |
1097 | 1097 |
1098 CPDFSDK_Annot* CPDFSDK_AnnotIterator::Next() { | 1098 CPDFSDK_Annot* CPDFSDK_AnnotIterator::Next() { |
1099 return m_bReverse ? PrevAnnot() : NextAnnot(); | 1099 return m_bReverse ? PrevAnnot() : NextAnnot(); |
1100 } | 1100 } |
OLD | NEW |