From: Ali Gholami Rudi Date: Sun, 3 Mar 2013 19:53:58 +0000 (+0330) Subject: mupdf: support mupdf-1.2 X-Git-Url: https://repo.or.cz/w/fbpdf.git/commitdiff_plain/a0aba69a3c93335a1c89676ef7833e2ed9d6563c mupdf: support mupdf-1.2 --- diff --git a/mupdf.c b/mupdf.c index 69ec37f..089b788 100644 --- a/mupdf.c +++ b/mupdf.c @@ -14,36 +14,34 @@ struct doc { int doc_draw(struct doc *doc, int p, int zoom, int rotate, fbval_t *bitmap, int *rows, int *cols) { - fz_matrix ctm; - fz_bbox bbox; + fz_matrix ctm; /* transform */ + fz_rect rect; /* bounds */ + fz_irect bbox; /* drawing bbox */ fz_pixmap *pix; fz_device *dev; fz_page *page; - fz_rect rect; int h, w; int x, y; if (!(page = fz_load_page(doc->pdf, p - 1))) return 1; - ctm = fz_scale((float) zoom / 10, (float) -zoom / 10); - ctm = fz_concat(ctm, fz_translate(0, -100)); - if (rotate) - ctm = fz_concat(ctm, fz_rotate(rotate)); - rect = fz_bound_page(doc->pdf, page); - rect = fz_transform_rect(ctm, rect); - bbox = fz_round_rect(rect); + fz_rotate(&ctm, rotate); + fz_pre_scale(&ctm, (float) zoom / 10, (float) zoom / 10); + fz_bound_page(doc->pdf, page, &rect); + fz_transform_rect(&rect, &ctm); + fz_round_rect(&bbox, &rect); w = MIN_(*cols, rect.x1 - rect.x0); h = MIN_(*rows, rect.y1 - rect.y0); - pix = fz_new_pixmap_with_bbox(doc->ctx, fz_device_rgb, bbox); + pix = fz_new_pixmap_with_bbox(doc->ctx, fz_device_rgb, &bbox); fz_clear_pixmap_with_value(doc->ctx, pix, 0xff); dev = fz_new_draw_device(doc->ctx, pix); - fz_run_page(doc->pdf, page, dev, ctm, NULL); + fz_run_page(doc->pdf, page, dev, &ctm, NULL); fz_free_device(dev); for (y = 0; y < h; y++) { - int xs = (h - y - 1) * *cols + (*cols - w) / 2; + int xs = y * *cols + (*cols - w) / 2; for (x = 0; x < w; x++) { unsigned char *s = fz_pixmap_samples(doc->ctx, pix) + y * fz_pixmap_width(doc->ctx, pix) * 4 + x * 4;