CPDF_Link CPDF_LinkList::GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y, int* z_order) { const std::vector<CPDF_Dictionary*>* pPageLinkList = GetPageLinks(pPage); if (!pPageLinkList) return CPDF_Link(); for (size_t i = pPageLinkList->size(); i > 0; --i) { size_t annot_index = i - 1; CPDF_Dictionary* pAnnot = (*pPageLinkList)[annot_index]; if (!pAnnot) continue; CPDF_Link link(pAnnot); CFX_FloatRect rect = link.GetRect(); if (!rect.Contains(pdf_x, pdf_y)) continue; if (z_order) *z_order = annot_index; return link; } return CPDF_Link(); }
CPDF_Link CPDF_LinkList::GetLink(CPDF_Page* pPage, int index) { CFX_PtrArray* pPageLinkList = GetPageLinks(pPage); if (pPageLinkList == NULL) { return NULL; } return (CPDF_Dictionary*)pPageLinkList->GetAt(index); }
int CPDF_LinkList::CountLinks(CPDF_Page* pPage) { CFX_PtrArray* pPageLinkList = GetPageLinks(pPage); if (pPageLinkList == NULL) { return 0; } return pPageLinkList->GetSize(); }
CPDF_Link CPDF_LinkList::GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y) { CFX_PtrArray* pPageLinkList = GetPageLinks(pPage); if (pPageLinkList == NULL) { return NULL; } int size = pPageLinkList->GetSize(); for (int i = 0; i < size; i ++) { CPDF_Link Link = (CPDF_Dictionary*)pPageLinkList->GetAt(i); CPDF_Rect rect = Link.GetRect(); if (rect.Contains(pdf_x, pdf_y)) { return Link; } } return NULL; }