Discussion:
[PATCH 3/5] Prepare to deduplicate pdf_page_render
Alexander Monakov
2013-10-30 21:17:21 UTC
Permalink
---
pdf.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/pdf.c b/pdf.c
index 1e3c0a6..13b3c6b 100644
--- a/pdf.c
+++ b/pdf.c
@@ -468,9 +468,10 @@ pdf_page_render(zathura_page_t* page, mupdf_page_t* mupdf_page, zathura_error_t*
}

/* calculate sizes */
- double scale = zathura_document_get_scale(document);
- unsigned int page_width = scale * zathura_page_get_width(page);
- unsigned int page_height = scale * zathura_page_get_height(page);
+ double scalex = zathura_document_get_scale(document);
+ double scaley = scalex;
+ unsigned int page_width = scalex * zathura_page_get_width(page);
+ unsigned int page_height = scaley * zathura_page_get_height(page);

/* create image buffer */
zathura_image_buffer_t* image_buffer = zathura_image_buffer_create(page_width, page_height);
@@ -482,6 +483,10 @@ pdf_page_render(zathura_page_t* page, mupdf_page_t* mupdf_page, zathura_error_t*
return NULL;
}

+ int rowstride = image_buffer->rowstride;
+ unsigned char* image = image_buffer->data;
+ int components = 3;
+
mupdf_document_t* mupdf_document = zathura_document_get_data(document);

/* render */
@@ -490,7 +495,7 @@ pdf_page_render(zathura_page_t* page, mupdf_page_t* mupdf_page, zathura_error_t*

fz_try (mupdf_document->ctx) {
fz_matrix m;
- fz_scale(&m, scale, scale);
+ fz_scale(&m, scalex, scaley);
fz_run_page(mupdf_document->document, mupdf_page->page, device, &m, NULL);
} fz_catch (mupdf_document->ctx) {
if (error != NULL) {
@@ -516,7 +521,7 @@ pdf_page_render(zathura_page_t* page, mupdf_page_t* mupdf_page, zathura_error_t*
unsigned int n = fz_pixmap_components(mupdf_page->ctx, pixmap);
for (unsigned int y = 0; y < fz_pixmap_height(mupdf_page->ctx, pixmap); y++) {
for (unsigned int x = 0; x < fz_pixmap_width(mupdf_page->ctx, pixmap); x++) {
- guchar* p = image_buffer->data + y * image_buffer->rowstride + x * 3;
+ guchar* p = image + y * rowstride + x * components;
p[0] = s[2];
p[1] = s[1];
p[2] = s[0];
--
1.8.3.2

-------------- next part --------------
Loading...