function LinkZOrderAtPoint(X, Y: Double): Integer;
| X, Y | Double。PDF ページ単位の点です。原点はページの左下コーナーです |
| Result | Integer。ネイティブのヒットテストが報告する、その点を覆うリンクの z-order です。リンクが覆っていない場合は -1 です |
LinkAtPoint の姉妹呼び出しです。単純な yes/no の代わりに、ネイティブのヒットテスト (FPDFLink_GetLinkZOrderAtPoint) がその座標で見つかったリンクの z-order を返します。複数のリンクが重なっている場合、z-order によってその位置でビューアが反応すべきリンクが特定されます
テストは PDFium の内部で実行されるため、LinkAnnotation が公開する外接矩形ではなく、リンク注釈の実際の quad-point ジオメトリが尊重されます。折り返されたテキストに続くリンクは、その実際の形状で一致します
結果が -1 の場合、その点はどのリンク上にもありません。この呼び出しには現在のページがアクティブであることが必要です。マウス位置をページ単位へ変換するには、まず DeviceToPage を使用してください
var PX, PY: Double;
begin
if Pdf1.DeviceToPage(MouseX, MouseY, 0, 0, W, H, ro0, PX, PY) then
begin
Memo1.Lines.Add('Link z-order: ' + IntToStr(Pdf1.LinkZOrderAtPoint(PX, PY)));
// -1 means the point is not covered by any link
end;
end;