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.h46
1 files changed, 44 insertions, 2 deletions
diff --git a/src/pdf_bridge.h b/src/pdf_bridge.h
index cda426aa..e3514437 100644
--- a/src/pdf_bridge.h
+++ b/src/pdf_bridge.h
@@ -222,8 +222,9 @@ int pardes_pdf_measure_render(
* MuPDF wraps but never owns or frees samples. Every successful pixel is
* opaque unless transparent_paper is nonzero. That mode preserves content
* coverage and returns straight-alpha RGBA over an unpainted page.
- * The CTM does not depend on the band, so a band's rows are bit-identical to
- * the same rows of the whole page: it is a clip, not a different rendering.
+ * The CTM does not depend on the band, so a band is a clip of the same
+ * rendering -- but not a bit-exact one: its edge rows and resampled images can
+ * differ from the whole page's (see pardes_pdf_render_into).
*/
int pardes_pdf_render_into(
pardes_pdf_document *document,
@@ -244,6 +245,47 @@ int pardes_pdf_render_into(
int transparent_paper
);
+/*
+ * The highlight pass of `pardes_pdf_render_into` alone, over caller-supplied
+ * rows of that page's opaque raster: render_into(h) == paint(render_into({}), h)
+ * row for row, because a render draws its highlights over the finished page.
+ */
+int pardes_pdf_paint_highlights(
+ pardes_pdf_document *document,
+ int page,
+ int dpi,
+ int minimum_width,
+ int minimum_height,
+ int max_dimension,
+ const pardes_pdf_highlight *highlights,
+ size_t highlight_count,
+ unsigned char *samples,
+ size_t samples_len,
+ int width,
+ int height,
+ int stride,
+ int band_y,
+ int band_height
+);
+
+/*
+ * The raster rows [*row_start, *row_end) that painting `highlights` can touch
+ * under the same request, in the coordinates `pardes_pdf_render_into` bands
+ * use. An empty set (or only transparent ones) yields start == end == 0.
+ */
+int pardes_pdf_highlight_rows(
+ pardes_pdf_document *document,
+ int page,
+ int dpi,
+ int minimum_width,
+ int minimum_height,
+ int max_dimension,
+ const pardes_pdf_highlight *highlights,
+ size_t highlight_count,
+ int *row_start,
+ int *row_end
+);
+
int pardes_pdf_page_text(
pardes_pdf_document *document,
int page,