From bdf72c353af5b8a34ef5efdeddfff36d2089a158 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 14 Aug 2015 19:24:08 -0700 Subject: Merge to XFA: Add new public APIs to find the z-order for links and widgets. - Implement FPDFLink_GetLinkZOrderAtPoint(). - Implement FPDFPage_FormFieldZOrderAtPoint(). - Mark FPDPage_HasFormFieldAtPoint() as deprecated. - Modify CPDF_LinkList and CPDF_InterForm to support new APIs. - Clean up dead code in CPDF_LinkList and CPDF_InterForm. BUG=chromium:515837 R=jun_fang@foxitsoftware.com, tsepez@chromium.org Review URL: https://codereview.chromium.org/1278053004 . (cherry picked from commit 24fbf134d43a7ec4226de3db601f0a617bbe428b) Review URL: https://codereview.chromium.org/1295893005 . --- public/fpdf_doc.h | 49 +++++++++++++++++++++++++++++++++++++------------ public/fpdf_formfill.h | 45 ++++++++++++++++++++++++++++++++++++--------- 2 files changed, 73 insertions(+), 21 deletions(-) (limited to 'public') diff --git a/public/fpdf_doc.h b/public/fpdf_doc.h index 9e3f0af6d1..ca16d26627 100644 --- a/public/fpdf_doc.h +++ b/public/fpdf_doc.h @@ -177,27 +177,52 @@ DLLEXPORT unsigned long STDCALL FPDFDest_GetPageIndex(FPDF_DOCUMENT document, FPDF_DEST dest); // Function: FPDFLink_GetLinkAtPoint -// Find a link at specified point on a document page. +// Find a link at specified point on a document page. // Parameters: -// page - Handle to the document page. -// x - The x coordinate of the point, specified in page -// coordinate system. -// y - The y coordinate of the point, specified in page -// coordinate system. +// page - Handle to the document page. +// x - The x coordinate of the point, specified in page +// coordinate system. +// y - The y coordinate of the point, specified in page +// coordinate system. // Return value: -// Handle to the link. NULL if no link found at that point. +// Handle to the link. NULL if no link found at that point. // Comments: -// The point coordinates are specified in page coordinate system. You -// can convert coordinates -// from screen system to page system using FPDF_DeviceToPage functions. +// The point coordinates are specified in page coordinate system. You can +// convert coordinates from screen system to page system using +// FPDF_DeviceToPage(). +// // Notes: -// The method can not support this feature for the document consists of -// dynamic XFA fields. +// The method can not support this feature for the document consists of +// dynamic XFA fields. // DLLEXPORT FPDF_LINK STDCALL FPDFLink_GetLinkAtPoint(FPDF_PAGE page, double x, double y); +// Function: FPDFLink_GetLinkZOrderAtPoint +// Find the z-order of a link at specified point on a document page. +// Parameters: +// page - Handle to the document page. +// x - The x coordinate of the point, specified in page +// coordinate system. +// y - The y coordinate of the point, specified in page +// coordinate system. +// Return value: +// Z-order of the link, or -1 if no link found at that point. +// Higher numbers are closer to the front. +// Comments: +// The point coordinates are specified in page coordinate system. You can +// convert coordinates from screen system to page system using +// FPDF_DeviceToPage(). +// +// Notes: +// The method can not support this feature for the document consists of +// dynamic XFA fields. +// +// +DLLEXPORT int STDCALL +FPDFLink_GetLinkZOrderAtPoint(FPDF_PAGE page, double x, double y); + // Function: FPDFLink_GetDest // Get destination info of a link. // Parameters: diff --git a/public/fpdf_formfill.h b/public/fpdf_formfill.h index 73fe491435..7be678cd47 100644 --- a/public/fpdf_formfill.h +++ b/public/fpdf_formfill.h @@ -1311,23 +1311,50 @@ DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle); #define FPDF_FORMFIELD_XFA 7 // text field type. /** - * Function: FPDPage_HasFormFieldAtPoint - * Check the form filed position by point. + * Function: FPDFPage_HasFormFieldAtPoint + * Get the form field type by point. * Parameters: - * hHandle - Handle to the form fill module. Returned by - *FPDFDOC_InitFormFillEnvironment. - * page - Handle to the page. Returned by FPDF_LoadPage - *function. - * page_x - X position in PDF "user space". - * page_y - Y position in PDF "user space". + * hHandle - Handle to the form fill module. Returned by + * FPDFDOC_InitFormFillEnvironment(). + * page - Handle to the page. Returned by FPDF_LoadPage(). + * page_x - X position in PDF "user space". + * page_y - Y position in PDF "user space". * Return Value: - * Return the type of the formfiled; -1 indicates no fields. + * Return the type of the form field; -1 indicates no field. + * See field types above. + **/ +DLLEXPORT int STDCALL FPDFPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, + FPDF_PAGE page, + double page_x, + double page_y); + +/** + * Function: FPDPage_HasFormFieldAtPoint + * DEPRECATED. Please use FPDFPage_HasFormFieldAtPoint. **/ DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, FPDF_PAGE page, double page_x, double page_y); +/** + * Function: FPDFPage_FormFieldZOrderAtPoint + * Get the form field z-order by point. + * Parameters: + * hHandle - Handle to the form fill module. Returned by + * FPDFDOC_InitFormFillEnvironment(). + * page - Handle to the page. Returned by FPDF_LoadPage(). + * page_x - X position in PDF "user space". + * page_y - Y position in PDF "user space". + * Return Value: + * Return the z-order of the form field; -1 indicates no field. + * Higher numbers are closer to the front. + **/ +DLLEXPORT int STDCALL FPDFPage_FormFieldZOrderAtPoint(FPDF_FORMHANDLE hHandle, + FPDF_PAGE page, + double page_x, + double page_y); + /** * Function: FPDF_SetFormFieldHighlightColor * Set the highlight color of specified or all the form fields in the -- cgit v1.2.3