DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y) { CPDF_Page* pPage = (CPDF_Page*)page; CPDF_LinkList* pLinkList = GetLinkList(pPage); if (!pLinkList) return nullptr; return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y, nullptr) .GetDict(); }
DLLEXPORT int STDCALL FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, double x, double y) { CPDF_Page* pPage = (CPDF_Page*)page; CPDF_LinkList* pLinkList = GetLinkList(pPage); if (!pLinkList) return -1; int z_order = -1; pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y, &z_order); return z_order; }
DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y) { if (page == NULL) return NULL; CPDF_Page* pPage = (CPDF_Page*)page; // Link list is stored with the document CPDF_Document* pDoc = pPage->m_pDocument; CPDF_LinkList* pLinkList = (CPDF_LinkList*)pDoc->GetPrivateData(&this_module); if (pLinkList == NULL) { pLinkList = FX_NEW CPDF_LinkList(pDoc); pDoc->SetPrivateData(&this_module, pLinkList, ReleaseLinkList); } return pLinkList->GetLinkAtPoint(pPage, (FX_FLOAT)x, (FX_FLOAT)y); }
FPDF_EXPORT FPDF_LINK FPDF_CALLCONV FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y) { CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage) return nullptr; CPDF_LinkList* pLinkList = GetLinkList(pPage); if (!pLinkList) return nullptr; CPDF_Link link = pLinkList->GetLinkAtPoint( pPage, CFX_PointF(static_cast<float>(x), static_cast<float>(y)), nullptr); return FPDFLinkFromCPDFDictionary(link.GetDict()); }
FPDF_EXPORT int FPDF_CALLCONV FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, double x, double y) { CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage) return -1; CPDF_LinkList* pLinkList = GetLinkList(pPage); if (!pLinkList) return -1; int z_order = -1; pLinkList->GetLinkAtPoint( pPage, CFX_PointF(static_cast<float>(x), static_cast<float>(y)), &z_order); return z_order; }