diff options
Diffstat (limited to 'fpdfsdk/src')
-rw-r--r-- | fpdfsdk/src/formfiller/FFL_FormFiller.cpp | 106 | ||||
-rw-r--r-- | fpdfsdk/src/formfiller/FFL_IFormFiller.cpp | 106 | ||||
-rw-r--r-- | fpdfsdk/src/formfiller/FFL_ListBox.cpp | 52 | ||||
-rw-r--r-- | fpdfsdk/src/fpdfformfill.cpp | 1 | ||||
-rw-r--r-- | fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp | 2 | ||||
-rw-r--r-- | fpdfsdk/src/fsdk_baseform.cpp | 71 | ||||
-rw-r--r-- | fpdfsdk/src/fsdk_mgr.cpp | 100 | ||||
-rw-r--r-- | fpdfsdk/src/pdfwindow/PWL_Wnd.cpp | 44 |
8 files changed, 203 insertions, 279 deletions
diff --git a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp index 540619692b..7a70493d4c 100644 --- a/fpdfsdk/src/formfiller/FFL_FormFiller.cpp +++ b/fpdfsdk/src/formfiller/FFL_FormFiller.cpp @@ -28,23 +28,14 @@ CFFL_FormFiller::CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnno CFFL_FormFiller::~CFFL_FormFiller() { - FX_POSITION pos = m_Maps.GetStartPosition(); - while (pos) - { - CPDFSDK_PageView * pPageView = NULL; - CPWL_Wnd* pWnd = NULL; - m_Maps.GetNextAssoc(pos, pPageView, pWnd); - - if (pWnd) - { - CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); - pWnd->Destroy(); - delete pWnd; - delete pData; - } - } - m_Maps.RemoveAll(); - + for (auto& it : m_Maps) { + CPWL_Wnd* pWnd = it.second; + CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); + pWnd->Destroy(); + delete pWnd; + delete pData; + } + m_Maps.clear(); } void CFFL_FormFiller::SetWindowRect(CPDFSDK_PageView* pPageView, const CPDF_Rect& rcWindow) @@ -430,64 +421,53 @@ PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam() CPWL_Wnd* CFFL_FormFiller::GetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bNew) { - ASSERT(pPageView != NULL); - ASSERT(m_pWidget != NULL); + ASSERT(pPageView); - CPWL_Wnd* pWnd = NULL; - m_Maps.Lookup(pPageView, pWnd); + auto it = m_Maps.find(pPageView); + const bool found = it != m_Maps.end(); + CPWL_Wnd* pWnd = found ? it->second : nullptr; + if (!bNew) + return pWnd; - if (bNew) - { - if (pWnd) - { - CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pWnd->GetAttachedData(); - ASSERT(pPrivateData != NULL); + if (found) { + CFFL_PrivateData* pPrivateData = + (CFFL_PrivateData*)pWnd->GetAttachedData(); + if (pPrivateData->nWidgetAge != m_pWidget->GetAppearanceAge()) { + return ResetPDFWindow( + pPageView, m_pWidget->GetValueAge() == pPrivateData->nValueAge); + } + } else { + PWL_CREATEPARAM cp = GetCreateParam(); + cp.hAttachedWnd = (FX_HWND)m_pWidget; - if (pPrivateData->nWidgetAge != m_pWidget->GetAppearanceAge()) - { - return ResetPDFWindow(pPageView, m_pWidget->GetValueAge() == pPrivateData->nValueAge); - } - } - else - { - PWL_CREATEPARAM cp = GetCreateParam(); - cp.hAttachedWnd = (FX_HWND)m_pWidget; + CFFL_PrivateData* pPrivateData = new CFFL_PrivateData; + pPrivateData->pWidget = m_pWidget; + pPrivateData->pPageView = pPageView; + pPrivateData->nWidgetAge = m_pWidget->GetAppearanceAge(); + pPrivateData->nValueAge = 0; - CFFL_PrivateData* pPrivateData = new CFFL_PrivateData; - pPrivateData->pWidget = m_pWidget; - pPrivateData->pPageView = pPageView; - pPrivateData->nWidgetAge = m_pWidget->GetAppearanceAge(); - pPrivateData->nValueAge = 0; + cp.pAttachedData = pPrivateData; - cp.pAttachedData = pPrivateData; + pWnd = NewPDFWindow(cp, pPageView); + m_Maps[pPageView] = pWnd; + } - pWnd = NewPDFWindow(cp, pPageView); - - if (pWnd) - { - m_Maps.SetAt(pPageView, pWnd); - } - } - } - - return pWnd; + return pWnd; } void CFFL_FormFiller::DestroyPDFWindow(CPDFSDK_PageView* pPageView) { - CPWL_Wnd* pWnd = NULL; - m_Maps.Lookup(pPageView, pWnd); + auto it = m_Maps.find(pPageView); + if (it == m_Maps.end()) + return; - if (pWnd) - { - CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); - pData->pPageView = NULL; - pWnd->Destroy(); - delete pWnd; - delete pData; - } + CPWL_Wnd* pWnd = it->second; + CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); + pWnd->Destroy(); + delete pWnd; + delete pData; - m_Maps.RemoveKey(pPageView); + m_Maps.erase(it); } CPDF_Matrix CFFL_FormFiller::GetWindowMatrix(void* pAttachedData) diff --git a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp index d4ca0235b3..66ae237a31 100644 --- a/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp +++ b/fpdfsdk/src/formfiller/FFL_IFormFiller.cpp @@ -28,15 +28,9 @@ CFFL_IFormFiller::CFFL_IFormFiller(CPDFDoc_Environment* pApp) : CFFL_IFormFiller::~CFFL_IFormFiller() { - FX_POSITION pos = m_Maps.GetStartPosition(); - while (pos) - { - CPDFSDK_Annot * pAnnot = NULL; - CFFL_FormFiller * pFormFiller = NULL; - m_Maps.GetNextAssoc(pos,pAnnot,pFormFiller); - delete pFormFiller; - } - m_Maps.RemoveAll(); + for (auto& it : m_Maps) + delete it.second; + m_Maps.clear(); } FX_BOOL CFFL_IFormFiller::Annot_HitTest(CPDFSDK_PageView* pPageView,CPDFSDK_Annot* pAnnot, CPDF_Point point) @@ -648,53 +642,46 @@ FX_BOOL CFFL_IFormFiller::IsFillingAllowed(CPDFSDK_Widget* pWidget) CFFL_FormFiller* CFFL_IFormFiller::GetFormFiller(CPDFSDK_Annot* pAnnot, FX_BOOL bRegister) { -// ASSERT(pAnnot != NULL); -// ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget"); - - CFFL_FormFiller * pFormFiller = NULL; - m_Maps.Lookup(pAnnot, pFormFiller); - - if (pFormFiller) - return pFormFiller; - - if (bRegister) - { - CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; - - int nFieldType = pWidget->GetFieldType(); - switch(nFieldType) - { - case FIELDTYPE_PUSHBUTTON: - pFormFiller = new CFFL_PushButton(m_pApp, pWidget); - break; - case FIELDTYPE_CHECKBOX: - pFormFiller = new CFFL_CheckBox(m_pApp, pWidget); - break; - case FIELDTYPE_RADIOBUTTON: - pFormFiller = new CFFL_RadioButton(m_pApp, pWidget); - break; - case FIELDTYPE_TEXTFIELD: - pFormFiller = new CFFL_TextField(m_pApp, pWidget); - break; - case FIELDTYPE_LISTBOX: - pFormFiller = new CFFL_ListBox(m_pApp, pWidget); - break; - case FIELDTYPE_COMBOBOX: - pFormFiller = new CFFL_ComboBox(m_pApp, pWidget); - break; - case FIELDTYPE_UNKNOWN: - default: - pFormFiller = NULL; - break; - } + auto it = m_Maps.find(pAnnot); + if (it != m_Maps.end()) + return it->second; + + if (!bRegister) + return nullptr; + + CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; + int nFieldType = pWidget->GetFieldType(); + CFFL_FormFiller* pFormFiller; + switch (nFieldType) { + case FIELDTYPE_PUSHBUTTON: + pFormFiller = new CFFL_PushButton(m_pApp, pWidget); + break; + case FIELDTYPE_CHECKBOX: + pFormFiller = new CFFL_CheckBox(m_pApp, pWidget); + break; + case FIELDTYPE_RADIOBUTTON: + pFormFiller = new CFFL_RadioButton(m_pApp, pWidget); + break; + case FIELDTYPE_TEXTFIELD: + pFormFiller = new CFFL_TextField(m_pApp, pWidget); + break; + case FIELDTYPE_LISTBOX: + pFormFiller = new CFFL_ListBox(m_pApp, pWidget); + break; + case FIELDTYPE_COMBOBOX: + pFormFiller = new CFFL_ComboBox(m_pApp, pWidget); + break; + case FIELDTYPE_UNKNOWN: + default: + pFormFiller = nullptr; + break; + } - if (pFormFiller) - { - m_Maps.SetAt(pAnnot, pFormFiller); - } - } + if (!pFormFiller) + return nullptr; - return pFormFiller; + m_Maps[pAnnot] = pFormFiller; + return pFormFiller; } void CFFL_IFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot) @@ -707,11 +694,12 @@ void CFFL_IFormFiller::RemoveFormFiller(CPDFSDK_Annot* pAnnot) void CFFL_IFormFiller::UnRegisterFormFiller(CPDFSDK_Annot* pAnnot) { - CFFL_FormFiller* pFormFiller = nullptr; - if (m_Maps.Lookup(pAnnot,pFormFiller)) { - delete pFormFiller; - m_Maps.RemoveKey(pAnnot); - } + auto it = m_Maps.find(pAnnot); + if (it == m_Maps.end()) + return; + + delete it->second; + m_Maps.erase(it); } void CFFL_IFormFiller::SetFocusAnnotTab(CPDFSDK_Annot* pWidget, FX_BOOL bSameField, FX_BOOL bNext) diff --git a/fpdfsdk/src/formfiller/FFL_ListBox.cpp b/fpdfsdk/src/formfiller/FFL_ListBox.cpp index 4622d4fcef..28dcf340ad 100644 --- a/fpdfsdk/src/formfiller/FFL_ListBox.cpp +++ b/fpdfsdk/src/formfiller/FFL_ListBox.cpp @@ -75,7 +75,7 @@ CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView if (pWnd->HasFlag(PLBS_MULTIPLESEL)) { - m_OriginSelections.RemoveAll(); + m_OriginSelections.clear(); FX_BOOL bSetCaret = FALSE; for (int32_t i=0,sz=m_pWidget->CountOptions(); i<sz; i++) @@ -88,7 +88,7 @@ CPWL_Wnd* CFFL_ListBox::NewPDFWindow(const PWL_CREATEPARAM& cp, CPDFSDK_PageView bSetCaret = TRUE; } pWnd->Select(i); - m_OriginSelections.SetAt(i, NULL); + m_OriginSelections.insert(i); } } } @@ -115,36 +115,26 @@ FX_BOOL CFFL_ListBox::OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlag return CFFL_FormFiller::OnChar(pAnnot, nChar, nFlags); } -FX_BOOL CFFL_ListBox::IsDataChanged(CPDFSDK_PageView* pPageView) +FX_BOOL CFFL_ListBox::IsDataChanged(CPDFSDK_PageView* pPageView) { - ASSERT(m_pWidget != NULL); - - if (CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE)) - { - if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) - { - int nSelCount = 0; - for (int32_t i=0,sz=pListBox->GetCount(); i<sz; i++) - { - if (pListBox->IsItemSelected(i)) - { - void* p = NULL; - if (!m_OriginSelections.Lookup(i, p)) - return TRUE; - - nSelCount++; - } - } - - return nSelCount != m_OriginSelections.GetCount(); - } - else - { - return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0); - } - } - - return FALSE; + CPWL_ListBox* pListBox = (CPWL_ListBox*)GetPDFWindow(pPageView, FALSE); + if (!pListBox) + return FALSE; + + if (m_pWidget->GetFieldFlags() & FIELDFLAG_MULTISELECT) { + int nSelCount = 0; + for (int32_t i = 0, sz = pListBox->GetCount(); i < sz; ++i) { + if (pListBox->IsItemSelected(i)) { + if (m_OriginSelections.count(i) == 0) + return TRUE; + + nSelCount++; + } + } + + return nSelCount != m_OriginSelections.size(); + } + return pListBox->GetCurSel() != m_pWidget->GetSelectedIndex(0); } void CFFL_ListBox::SaveData(CPDFSDK_PageView* pPageView) diff --git a/fpdfsdk/src/fpdfformfill.cpp b/fpdfsdk/src/fpdfformfill.cpp index 9e89ea002b..8087bb1d70 100644 --- a/fpdfsdk/src/fpdfformfill.cpp +++ b/fpdfsdk/src/fpdfformfill.cpp @@ -630,7 +630,6 @@ DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) return; if( CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc()) { - pSDKDoc->InitPageView(); if(((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) pSDKDoc->ProcJavascriptFun(); } diff --git a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp index b4ac5f0e17..81f1edcc27 100644 --- a/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp +++ b/fpdfsdk/src/fpdfxfa/fpdfxfa_doc.cpp @@ -578,8 +578,6 @@ void CPDFXFA_Document::WidgetEvent(IXFA_Widget* hWidget, CXFA_WidgetAcc* pWidget if (m_iDocType != DOCTYPE_DYNIMIC_XFA || NULL == hWidget)
return;
- int pageViewCount = m_pSDKDoc->GetPageViewCount();
-
CPDFDoc_Environment* pEnv = m_pSDKDoc->GetEnv();
if (pEnv == NULL)
return;
diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp index 262e5f8c7b..cff6a38c14 100644 --- a/fpdfsdk/src/fsdk_baseform.cpp +++ b/fpdfsdk/src/fsdk_baseform.cpp @@ -2397,11 +2397,11 @@ CPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument) CPDFSDK_InterForm::~CPDFSDK_InterForm() { - delete m_pInterForm; - m_pInterForm = NULL; + delete m_pInterForm; + m_pInterForm = nullptr; - m_Map.RemoveAll(); - m_XFAMap.RemoveAll(); + m_Map.clear(); + m_XFAMap.RemoveAll(); } FX_BOOL CPDFSDK_InterForm::HighlightWidgets() @@ -2420,45 +2420,40 @@ CPDFSDK_Widget* CPDFSDK_InterForm::GetSibling(CPDFSDK_Widget* pWidget, FX_BOOL b return (CPDFSDK_Widget*)pIterator->GetPrevAnnot(pWidget); } -CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const +CPDFSDK_Widget* CPDFSDK_InterForm::GetWidget(CPDF_FormControl* pControl) const { - if(!pControl || !m_pInterForm) return NULL; + if (!pControl || !m_pInterForm) + return nullptr; - CPDFSDK_Widget* pWidget = NULL; - m_Map.Lookup(pControl, pWidget); + CPDFSDK_Widget* pWidget = nullptr; + const auto it = m_Map.find(pControl); + if (it != m_Map.end()) + pWidget = it->second; - if (pWidget) return pWidget; + if (pWidget) + return pWidget; - CPDF_Dictionary* pControlDict = pControl->GetWidget(); - ASSERT(pControlDict != NULL); + CPDF_Dictionary* pControlDict = pControl->GetWidget(); + CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc(); + CPDFSDK_PageView* pPage = nullptr; - ASSERT(m_pDocument != NULL); - CPDF_Document* pDocument = m_pDocument->GetDocument()->GetPDFDoc(); - - CPDFSDK_PageView* pPage = NULL; - - if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) - { - int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); - if (nPageIndex >= 0) - { - pPage = m_pDocument->GetPageView(nPageIndex); - } - } - - if (!pPage) - { - int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); - if (nPageIndex >= 0) - { - pPage = m_pDocument->GetPageView(nPageIndex); - } - } + if (CPDF_Dictionary* pPageDict = pControlDict->GetDict("P")) { + int nPageIndex = pDocument->GetPageIndex(pPageDict->GetObjNum()); + if (nPageIndex >= 0) { + pPage = m_pDocument->GetPageView(nPageIndex); + } + } - if (pPage) - return (CPDFSDK_Widget*)pPage->GetAnnotByDict(pControlDict); + if (!pPage) { + int nPageIndex = GetPageIndexByAnnotDict(pDocument, pControlDict); + if (nPageIndex >= 0) { + pPage = m_pDocument->GetPageView(nPageIndex); + } + } - return NULL; + if (!pPage) + return nullptr; + return (CPDFSDK_Widget*)pPage->GetAnnotByDict(pControlDict); } void CPDFSDK_InterForm::GetWidgets(const CFX_WideString& sFieldName, CFX_PtrArray& widgets) @@ -2518,12 +2513,12 @@ int CPDFSDK_InterForm::GetPageIndexByAnnotDict(CPDF_Document* pDocument, CPDF_Di void CPDFSDK_InterForm::AddMap(CPDF_FormControl* pControl, CPDFSDK_Widget* pWidget) { - m_Map.SetAt(pControl, pWidget); + m_Map[pControl] = pWidget; } void CPDFSDK_InterForm::RemoveMap(CPDF_FormControl* pControl) { - m_Map.RemoveKey(pControl); + m_Map.erase(pControl); } void CPDFSDK_InterForm::AddXFAMap(IXFA_Widget* hWidget, CPDFSDK_XFAWidget* pWidget) diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp index 0f71e6eaa0..1169d79a22 100644 --- a/fpdfsdk/src/fsdk_mgr.cpp +++ b/fpdfsdk/src/fsdk_mgr.cpp @@ -315,15 +315,9 @@ CPDFSDK_Document::CPDFSDK_Document(CPDFXFA_Document* pDoc,CPDFDoc_Environment* p CPDFSDK_Document::~CPDFSDK_Document() { - FX_POSITION pos = m_pageMap.GetStartPosition(); - while(pos) - { - CPDFXFA_Page* pPage = NULL; - CPDFSDK_PageView* pPageView = NULL; - m_pageMap.GetNextAssoc(pos, pPage, pPageView); - delete pPageView; - } - m_pageMap.RemoveAll(); + for (auto& it : m_pageMap) + delete it.second; + m_pageMap.clear(); delete m_pInterForm; m_pInterForm = nullptr; @@ -332,36 +326,20 @@ CPDFSDK_Document::~CPDFSDK_Document() m_pOccontent = nullptr; } -void CPDFSDK_Document::InitPageView() -{ - int nCount = m_pDoc->GetPageCount(); - for(int i=0; i<nCount; i++) - { - // To do -// CPDF_Dictionary* pDic = m_pDoc->GetPage(i); -// m_pageMap.SetAt(pDic, pPageView); - } -} - -void CPDFSDK_Document::AddPageView(CPDFXFA_Page* pPDFXFAPage, CPDFSDK_PageView* pPageView) -{ - m_pageMap.SetAt(pPDFXFAPage, pPageView); -} - CPDFSDK_PageView* CPDFSDK_Document::GetPageView(CPDFXFA_Page* pPDFXFAPage, FX_BOOL ReNew) { - CPDFSDK_PageView* pPageView = (CPDFSDK_PageView*)m_pageMap.GetValueAt(pPDFXFAPage); - if(pPageView != NULL) - return pPageView; - if(ReNew) - { - pPageView = new CPDFSDK_PageView(this,pPDFXFAPage); - m_pageMap.SetAt(pPDFXFAPage, pPageView); - //Delay to load all the annotations, to avoid endless loop. - pPageView->LoadFXAnnots(); - } - return pPageView; + auto it = m_pageMap.find(pPDFXFAPage); + if (it != m_pageMap.end()) + return it->second; + if (!ReNew) + return nullptr; + + CPDFSDK_PageView* pPageView = new CPDFSDK_PageView(this, pPDFXFAPage); + m_pageMap[pPDFXFAPage] = pPageView; + // Delay to load all the annotations, to avoid endless loop. + pPageView->LoadFXAnnots(); + return pPageView; } CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() @@ -372,16 +350,13 @@ CPDFSDK_PageView* CPDFSDK_Document::GetCurrentView() CPDFSDK_PageView* CPDFSDK_Document::GetPageView(int nIndex) { - CPDFSDK_PageView * pTempPageView = NULL; - CPDFXFA_Page * pTempPage = (CPDFXFA_Page*)m_pEnv->FFI_GetPage(m_pDoc,nIndex); - if(!pTempPage) - return NULL; - - m_pageMap.Lookup(pTempPage, pTempPageView); + CPDFXFA_Page* pTempPage = + (CPDFXFA_Page*)m_pEnv->FFI_GetPage(m_pDoc, nIndex); + if (!pTempPage) + return nullptr; - ASSERT(pTempPageView != NULL); - - return pTempPageView; + auto it = m_pageMap.find(pTempPage); + return it->second; } void CPDFSDK_Document:: ProcJavascriptFun() @@ -439,12 +414,16 @@ CPDF_OCContext* CPDFSDK_Document::GetOCContext() void CPDFSDK_Document::ReMovePageView(CPDFXFA_Page* pPDFXFAPage) { - CPDFSDK_PageView* pPageView = (CPDFSDK_PageView*)m_pageMap.GetValueAt(pPDFXFAPage); - if(pPageView && !pPageView->IsLocked()) - { - delete pPageView; - m_pageMap.RemoveKey(pPDFXFAPage); - } + auto it = m_pageMap.find(pPDFXFAPage); + if (it == m_pageMap.end()) + return; + + CPDFSDK_PageView* pPageView = it->second; + if (pPageView->IsLocked()) + return; + + delete pPageView; + m_pageMap.erase(it); } CPDFXFA_Page * CPDFSDK_Document::GetPage(int nIndex) @@ -464,19 +443,12 @@ CPDFSDK_InterForm* CPDFSDK_Document::GetInterForm() void CPDFSDK_Document::UpdateAllViews(CPDFSDK_PageView* pSender, CPDFSDK_Annot* pAnnot) { - - FX_POSITION pos = m_pageMap.GetStartPosition(); - CPDFXFA_Page * pPage = NULL; - CPDFSDK_PageView * pPageView = NULL; - while(pos) - { - m_pageMap.GetNextAssoc(pos, pPage, pPageView); - - if(pPageView != pSender) - { - pPageView->UpdateView(pAnnot); - } - } + for (const auto& it : m_pageMap) { + CPDFSDK_PageView* pPageView = it.second; + if (pPageView != pSender) { + pPageView->UpdateView(pAnnot); + } + } } CPDFSDK_Annot* CPDFSDK_Document::GetFocusAnnot() diff --git a/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp b/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp index dcc6e409a4..89d4babcd7 100644 --- a/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp +++ b/fpdfsdk/src/pdfwindow/PWL_Wnd.cpp @@ -4,6 +4,8 @@ // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com +#include <map> + #include "../../include/pdfwindow/PDFWindow.h" #include "../../include/pdfwindow/PWL_Wnd.h" #include "../../include/pdfwindow/PWL_Utils.h" @@ -11,10 +13,10 @@ /* -------------------------- CPWL_Timer -------------------------- */ -static CFX_MapPtrTemplate<int32_t, CPWL_Timer*>& GetPWLTimeMap() +static std::map<int32_t, CPWL_Timer*>& GetPWLTimeMap() { // Leak the object at shutdown. - static auto timeMap = new CFX_MapPtrTemplate<int32_t, CPWL_Timer*>; + static auto timeMap = new std::map<int32_t, CPWL_Timer*>; return *timeMap; } @@ -34,33 +36,33 @@ CPWL_Timer::~CPWL_Timer() int32_t CPWL_Timer::SetPWLTimer(int32_t nElapse) { - if (m_nTimerID != 0) KillPWLTimer(); - m_nTimerID = m_pSystemHandler->SetTimer(nElapse, TimerProc); - GetPWLTimeMap().SetAt(m_nTimerID, this); - return m_nTimerID; + if (m_nTimerID != 0) + KillPWLTimer(); + m_nTimerID = m_pSystemHandler->SetTimer(nElapse, TimerProc); + + GetPWLTimeMap()[m_nTimerID] = this; + return m_nTimerID; } void CPWL_Timer::KillPWLTimer() { - if (m_nTimerID != 0) - { - m_pSystemHandler->KillTimer(m_nTimerID); - GetPWLTimeMap().RemoveKey(m_nTimerID); - m_nTimerID = 0; - } + if (m_nTimerID == 0) + return; + + m_pSystemHandler->KillTimer(m_nTimerID); + GetPWLTimeMap().erase(m_nTimerID); + m_nTimerID = 0; } void CPWL_Timer::TimerProc(int32_t idEvent) { - CPWL_Timer* pTimer = NULL; - if (GetPWLTimeMap().Lookup(idEvent, pTimer)) - { - if (pTimer) - { - if (pTimer->m_pAttached) - pTimer->m_pAttached->TimerProc(); - } - } + auto it = GetPWLTimeMap().find(idEvent); + if (it == GetPWLTimeMap().end()) + return; + + CPWL_Timer* pTimer = it->second; + if (pTimer->m_pAttached) + pTimer->m_pAttached->TimerProc(); } /* -------------------------- CPWL_TimerHandler -------------------------- */ |