summaryrefslogtreecommitdiff
path: root/src/pdf_bridge.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pdf_bridge.h')
-rw-r--r--src/pdf_bridge.h30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/pdf_bridge.h b/src/pdf_bridge.h
index 81287578..8c73f688 100644
--- a/src/pdf_bridge.h
+++ b/src/pdf_bridge.h
@@ -149,6 +149,20 @@ typedef struct pardes_pdf_outline_result {
size_t bytes_len;
} pardes_pdf_outline_result;
+/* URI borrows the current page's lazily loaded link list. Copy it before any
+ * other document operation. A NULL URI means the point has no usable link. */
+typedef struct pardes_pdf_link {
+ const unsigned char *uri;
+ size_t uri_len;
+ pardes_pdf_quad quad;
+ int destination_kind;
+ int page;
+ float x;
+ float y;
+ unsigned char has_x;
+ unsigned char has_y;
+} pardes_pdf_link;
+
enum {
PARDES_PDF_OK = 0,
PARDES_PDF_ERROR = -1,
@@ -168,7 +182,8 @@ enum {
/* Outline conversion is atomic: crossing any bound returns no rows. */
PARDES_PDF_MAX_OUTLINE_ITEMS = 8192,
PARDES_PDF_MAX_OUTLINE_DEPTH = 64,
- PARDES_PDF_MAX_OUTLINE_BYTES = 4 * 1024 * 1024
+ PARDES_PDF_MAX_OUTLINE_BYTES = 4 * 1024 * 1024,
+ PARDES_PDF_MAX_LINK_URI_BYTES = 64 * 1024
};
pardes_pdf_document *pardes_pdf_open(const char *path, int *page_count);
@@ -282,6 +297,19 @@ void pardes_pdf_drop_outline_result(
void *outline
);
+int pardes_pdf_link_at(
+ pardes_pdf_document *document,
+ int page_number,
+ pardes_pdf_point point,
+ pardes_pdf_link *out
+);
+int pardes_pdf_copy_rectangle(
+ pardes_pdf_document *document,
+ int page_number,
+ pardes_pdf_quad quad,
+ pardes_pdf_owned_text *out
+);
+
#ifdef __cplusplus
}
#endif