diff options
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, |
