summaryrefslogtreecommitdiff
path: root/src/pdf_bridge.h
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-08-02 23:29:50 -0300
committerGabriel Schneider <[email protected]>2026-08-10 09:17:07 -0300
commit90eed6a89c66d6243ea43e799113409244308563 (patch)
tree70b2842ae1a98ba829aae23c6bee47eb640e6aa1 /src/pdf_bridge.h
parentf7f18f483483140f1ad0ff0edbe0fb550086b80f (diff)
downloadpardes-90eed6a89c66d6243ea43e799113409244308563.tar.gz
pardes-90eed6a89c66d6243ea43e799113409244308563.zip
render MuPDF pages directly into owned RGBA
Diffstat (limited to 'src/pdf_bridge.h')
-rw-r--r--src/pdf_bridge.h28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/pdf_bridge.h b/src/pdf_bridge.h
index cc706c33..17323a29 100644
--- a/src/pdf_bridge.h
+++ b/src/pdf_bridge.h
@@ -14,14 +14,12 @@ extern "C" {
*/
typedef struct pardes_pdf_document pardes_pdf_document;
-typedef struct pardes_pdf_pixmap {
- void *handle;
- const unsigned char *samples;
+typedef struct pardes_pdf_raster_layout {
int width;
int height;
int stride;
- int components;
-} pardes_pdf_pixmap;
+ size_t samples_len;
+} pardes_pdf_raster_layout;
typedef struct pardes_pdf_page_size {
float width;
@@ -120,18 +118,25 @@ int pardes_pdf_get_page_size(
/*
* Start at dpi, raise the uniform scale until both optional minimum pixel
* dimensions are met, then clamp the page's longest side to max_dimension.
+ * Measuring may populate the page cache, but never advances adaptive display
+ * list promotion; only a successful render_into does that.
*/
-int pardes_pdf_render(
+int pardes_pdf_measure_render(
pardes_pdf_document *document,
int page,
int dpi,
int minimum_width,
int minimum_height,
int max_dimension,
- pardes_pdf_pixmap *out
+ pardes_pdf_raster_layout *out
);
-int pardes_pdf_render_with_highlights(
+/*
+ * Rasterize directly into an exactly-sized caller-owned packed RGBA buffer.
+ * MuPDF wraps but never owns or frees samples. Every successful pixel is
+ * opaque, including the caller-supplied highlights composited onto the page.
+ */
+int pardes_pdf_render_into(
pardes_pdf_document *document,
int page,
int dpi,
@@ -140,9 +145,12 @@ int pardes_pdf_render_with_highlights(
int max_dimension,
const pardes_pdf_highlight *highlights,
size_t highlight_count,
- pardes_pdf_pixmap *out
+ unsigned char *samples,
+ size_t samples_len,
+ int width,
+ int height,
+ int stride
);
-void pardes_pdf_drop_pixmap(pardes_pdf_document *document, void *pixmap);
int pardes_pdf_page_text(
pardes_pdf_document *document,