summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fpdfsdk/include/fsdk_mgr.h2
-rw-r--r--fpdfsdk/src/fsdk_baseform.cpp166
-rw-r--r--fpdfsdk/src/fsdk_mgr.cpp18
3 files changed, 68 insertions, 118 deletions
diff --git a/fpdfsdk/include/fsdk_mgr.h b/fpdfsdk/include/fsdk_mgr.h
index 97e5863f98..85a04c6eec 100644
--- a/fpdfsdk/include/fsdk_mgr.h
+++ b/fpdfsdk/include/fsdk_mgr.h
@@ -557,7 +557,7 @@ class CPDFSDK_PageView final {
CPDFSDK_Annot* AddAnnot(CPDF_Annot* pPDFAnnot);
CPDFSDK_Annot* AddAnnot(IXFA_Widget* pPDFAnnot);
FX_BOOL DeleteAnnot(CPDFSDK_Annot* pAnnot);
- int CountAnnots() const;
+ size_t CountAnnots() const;
CPDFSDK_Annot* GetAnnot(size_t nIndex);
CPDFSDK_Annot* GetAnnotByDict(CPDF_Dictionary* pDict);
CPDFSDK_Annot* GetAnnotByXFAWidget(IXFA_Widget* hWidget);
diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp
index 467e9429c1..54b607a382 100644
--- a/fpdfsdk/src/fsdk_baseform.cpp
+++ b/fpdfsdk/src/fsdk_baseform.cpp
@@ -3116,58 +3116,45 @@ int CBA_AnnotIterator::CompareByTop(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) {
}
void CBA_AnnotIterator::GenerateResults() {
- ASSERT(m_pPageView != NULL);
-
switch (m_nTabs) {
case BAI_STRUCTURE: {
for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) {
CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
-
if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType)
m_Annots.Add(pAnnot);
}
- } break;
+ break;
+ }
case BAI_ROW: {
CPDFSDK_SortAnnots sa;
-
- {
- for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) {
- CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
-
- if (pAnnot->GetType() == m_sType &&
- pAnnot->GetSubType() == m_sSubType)
- sa.Add(pAnnot);
- }
+ for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) {
+ CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
+ if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType)
+ sa.Add(pAnnot);
}
- if (sa.GetSize() > 0) {
+ if (sa.GetSize() > 0)
sa.Sort(CBA_AnnotIterator::CompareByLeft);
- }
while (sa.GetSize() > 0) {
int nLeftTopIndex = -1;
+ FX_FLOAT fTop = 0.0f;
- {
- FX_FLOAT fTop = 0.0f;
-
- for (int i = sa.GetSize() - 1; i >= 0; i--) {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
+ for (int i = sa.GetSize() - 1; i >= 0; i--) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot);
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- if (rcAnnot.top > fTop) {
- nLeftTopIndex = i;
- fTop = rcAnnot.top;
- }
+ if (rcAnnot.top > fTop) {
+ nLeftTopIndex = i;
+ fTop = rcAnnot.top;
}
}
if (nLeftTopIndex >= 0) {
CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
- ASSERT(pLeftTopAnnot != NULL);
+ ASSERT(pLeftTopAnnot);
CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
@@ -3176,80 +3163,61 @@ void CBA_AnnotIterator::GenerateResults() {
CFX_ArrayTemplate<int> aSelect;
- {
- for (int i = 0, sz = sa.GetSize(); i < sz; i++) {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
-
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
-
- FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f;
+ for (int i = 0, sz = sa.GetSize(); i < sz; ++i) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot);
- if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top)
- aSelect.Add(i);
- }
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ FX_FLOAT fCenterY = (rcAnnot.top + rcAnnot.bottom) / 2.0f;
+ if (fCenterY > rcLeftTop.bottom && fCenterY < rcLeftTop.top)
+ aSelect.Add(i);
}
- {
- for (int i = 0, sz = aSelect.GetSize(); i < sz; i++) {
- m_Annots.Add(sa[aSelect[i]]);
- }
- }
+ for (int i = 0, sz = aSelect.GetSize(); i < sz; ++i)
+ m_Annots.Add(sa[aSelect[i]]);
- {
- for (int i = aSelect.GetSize() - 1; i >= 0; i--) {
+ for (int i = aSelect.GetSize() - 1; i >= 0; --i)
sa.RemoveAt(aSelect[i]);
- }
- }
aSelect.RemoveAll();
}
}
sa.RemoveAll();
- } break;
+ break;
+ }
case BAI_COLUMN: {
CPDFSDK_SortAnnots sa;
-
- {
- for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) {
- CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
- ASSERT(pAnnot != NULL);
-
- if (pAnnot->GetType() == m_sType &&
- pAnnot->GetSubType() == m_sSubType)
- sa.Add(pAnnot);
- }
+ for (size_t i = 0; i < m_pPageView->CountAnnots(); ++i) {
+ CPDFSDK_Annot* pAnnot = m_pPageView->GetAnnot(i);
+ if (pAnnot->GetType() == m_sType && pAnnot->GetSubType() == m_sSubType)
+ sa.Add(pAnnot);
}
- if (sa.GetSize() > 0) {
+ if (sa.GetSize() > 0)
sa.Sort(CBA_AnnotIterator::CompareByTop, FALSE);
- }
while (sa.GetSize() > 0) {
int nLeftTopIndex = -1;
+ FX_FLOAT fLeft = -1.0f;
- {
- FX_FLOAT fLeft = -1.0f;
+ for (int i = sa.GetSize() - 1; i >= 0; --i) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot);
- for (int i = sa.GetSize() - 1; i >= 0; i--) {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
-
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
- if (fLeft < 0) {
- nLeftTopIndex = 0;
- fLeft = rcAnnot.left;
- } else if (rcAnnot.left < fLeft) {
- nLeftTopIndex = i;
- fLeft = rcAnnot.left;
- }
+ if (fLeft < 0) {
+ nLeftTopIndex = 0;
+ fLeft = rcAnnot.left;
+ } else if (rcAnnot.left < fLeft) {
+ nLeftTopIndex = i;
+ fLeft = rcAnnot.left;
}
}
if (nLeftTopIndex >= 0) {
CPDFSDK_Annot* pLeftTopAnnot = sa.GetAt(nLeftTopIndex);
- ASSERT(pLeftTopAnnot != NULL);
+ ASSERT(pLeftTopAnnot);
CPDF_Rect rcLeftTop = GetAnnotRect(pLeftTopAnnot);
@@ -3257,49 +3225,33 @@ void CBA_AnnotIterator::GenerateResults() {
sa.RemoveAt(nLeftTopIndex);
CFX_ArrayTemplate<int> aSelect;
+ for (int i = 0, sz = sa.GetSize(); i < sz; ++i) {
+ CPDFSDK_Annot* pAnnot = sa.GetAt(i);
+ ASSERT(pAnnot);
- {
- for (int i = 0, sz = sa.GetSize(); i < sz; i++) {
- CPDFSDK_Annot* pAnnot = sa.GetAt(i);
- ASSERT(pAnnot != NULL);
-
- CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
-
- FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f;
-
- if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right)
- aSelect.Add(i);
- }
+ CPDF_Rect rcAnnot = GetAnnotRect(pAnnot);
+ FX_FLOAT fCenterX = (rcAnnot.left + rcAnnot.right) / 2.0f;
+ if (fCenterX > rcLeftTop.left && fCenterX < rcLeftTop.right)
+ aSelect.Add(i);
}
- {
- for (int i = 0, sz = aSelect.GetSize(); i < sz; i++) {
- m_Annots.Add(sa[aSelect[i]]);
- }
- }
+ for (int i = 0, sz = aSelect.GetSize(); i < sz; ++i)
+ m_Annots.Add(sa[aSelect[i]]);
- {
- for (int i = aSelect.GetSize() - 1; i >= 0; i--) {
- sa.RemoveAt(aSelect[i]);
- }
- }
+ for (int i = aSelect.GetSize() - 1; i >= 0; --i)
+ sa.RemoveAt(aSelect[i]);
aSelect.RemoveAll();
}
}
sa.RemoveAll();
- } break;
+ break;
+ }
}
}
CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) {
- ASSERT(pAnnot != NULL);
-
- CPDF_Annot* pPDFAnnot = pAnnot->GetPDFAnnot();
- ASSERT(pPDFAnnot != NULL);
-
CPDF_Rect rcAnnot;
- pPDFAnnot->GetRect(rcAnnot);
-
+ pAnnot->GetPDFAnnot()->GetRect(rcAnnot);
return rcAnnot;
}
diff --git a/fpdfsdk/src/fsdk_mgr.cpp b/fpdfsdk/src/fsdk_mgr.cpp
index 383acbd4a9..7954d2620c 100644
--- a/fpdfsdk/src/fsdk_mgr.cpp
+++ b/fpdfsdk/src/fsdk_mgr.cpp
@@ -725,8 +725,8 @@ void CPDFSDK_PageView::PageView_OnDraw(CFX_RenderDevice* pDevice,
CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
FX_FLOAT pageY) {
- int nCount = CountAnnots();
- for (int i = 0; i < nCount; i++) {
+ const int nCount = m_pAnnotList->Count();
+ for (int i = 0; i < nCount; ++i) {
CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
CFX_FloatRect annotRect;
pAnnot->GetRect(annotRect);
@@ -738,7 +738,7 @@ CPDF_Annot* CPDFSDK_PageView::GetPDFAnnotAtPoint(FX_FLOAT pageX,
CPDF_Annot* CPDFSDK_PageView::GetPDFWidgetAtPoint(FX_FLOAT pageX,
FX_FLOAT pageY) {
- int nCount = CountAnnots();
+ const int nCount = m_pAnnotList->Count();
for (int i = 0; i < nCount; ++i) {
CPDF_Annot* pAnnot = m_pAnnotList->GetAt(i);
if (pAnnot->GetSubType() == "Widget") {
@@ -877,8 +877,8 @@ CPDF_Page* CPDFSDK_PageView::GetPDFPage() {
return NULL;
}
-int CPDFSDK_PageView::CountAnnots() const {
- return m_pAnnotList->Count();
+size_t CPDFSDK_PageView::CountAnnots() const {
+ return m_fxAnnotArray.size();
}
CPDFSDK_Annot* CPDFSDK_PageView::GetAnnot(size_t nIndex) {
@@ -1094,12 +1094,10 @@ void CPDFSDK_PageView::LoadFXAnnots() {
m_pAnnotList.reset(new CPDF_AnnotList(pPage));
CPDF_InterForm::EnableUpdateAP(enableAPUpdate);
- int nCount = m_pAnnotList->Count();
+ const int nCount = m_pAnnotList->Count();
for (int i = 0; i < nCount; i++) {
CPDF_Annot* pPDFAnnot = m_pAnnotList->GetAt(i);
- CPDF_Document* pDoc = GetPDFDocument();
-
- CheckUnSupportAnnot(pDoc, pPDFAnnot);
+ CheckUnSupportAnnot(GetPDFDocument(), pPDFAnnot);
CPDFSDK_Annot* pAnnot = pAnnotHandlerMgr->NewAnnot(pPDFAnnot, this);
if (!pAnnot)
@@ -1143,7 +1141,7 @@ FX_BOOL CPDFSDK_PageView::IsValidAnnot(CPDF_Annot* p) const {
if (!p)
return FALSE;
- int nCount = CountAnnots();
+ const int nCount = m_pAnnotList->Count();
for (int i = 0; i < nCount; ++i) {
if (m_pAnnotList->GetAt(i) == p)
return TRUE;