diff options
| author | Gabriel Schneider <[email protected]> | 2026-08-02 23:29:50 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-08-10 09:17:07 -0300 |
| commit | 90eed6a89c66d6243ea43e799113409244308563 (patch) | |
| tree | 70b2842ae1a98ba829aae23c6bee47eb640e6aa1 /src/pdf_bridge.h | |
| parent | f7f18f483483140f1ad0ff0edbe0fb550086b80f (diff) | |
| download | pardes-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.h | 28 |
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, |
