Date: Sunday, November 27, 2016 @ 00:17:52 Author: demize Revision: 196984
Rebuild against mupdf 1.10 Added: zathura-pdf-mupdf/trunk/mupdf-1.10.patch Modified: zathura-pdf-mupdf/trunk/PKGBUILD ------------------+ PKGBUILD | 9 + mupdf-1.10.patch | 287 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 293 insertions(+), 3 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2016-11-27 00:09:14 UTC (rev 196983) +++ PKGBUILD 2016-11-27 00:17:52 UTC (rev 196984) @@ -6,7 +6,7 @@ pkgname=zathura-pdf-mupdf pkgver=0.3.0 -pkgrel=4 +pkgrel=5 pkgdesc="PDF support for Zathura (MuPDF backend)" url="https://pwmt.org/projects/zathura-pdf-mupdf/" @@ -19,12 +19,15 @@ makedepends=('libmupdf') source=(https://pwmt.org/projects/zathura/plugins/download/zathura-pdf-mupdf-$pkgver.tar.gz - mupdf-1.9.patch) + mupdf-1.9.patch + mupdf-1.10.patch) sha1sums=('ae0be41ea7c75b8ddc083fe01f1366673ea9751a' - 'f26adb3a7c69cf7a2e957d211e8faffe79c923c7') + 'f26adb3a7c69cf7a2e957d211e8faffe79c923c7' + '8adb7223e54c028d33008c1b65efb845cb8e6224') prepare() { patch -d zathura-pdf-mupdf-$pkgver -Np1 < mupdf-1.9.patch + patch -d zathura-pdf-mupdf-$pkgver -Np1 < mupdf-1.10.patch } build() { Added: mupdf-1.10.patch =================================================================== --- mupdf-1.10.patch (rev 0) +++ mupdf-1.10.patch 2016-11-27 00:17:52 UTC (rev 196984) @@ -0,0 +1,287 @@ +From 518fd77c351fa1bac37679e195dc14fa76c8e895 Mon Sep 17 00:00:00 2001 +From: Moritz Lipp <m...@pwmt.org> +Date: Thu, 24 Nov 2016 00:51:45 +0100 +Subject: [PATCH] Make compatible to mupdf 1.10 + +--- + document.c | 1 - + image.c | 2 +- + index.c | 68 ++++++++++++++++++++++---------------------------------------------- + links.c | 64 ++++++++++++++++++---------------------------------------------- + page.c | 4 +++- + render.c | 6 +++--- + utils.c | 2 +- + 7 files changed, 48 insertions(+), 99 deletions(-) + +diff --git a/document.c b/document.c +index 8d0aae4..7f9f244 100644 +--- a/document.c ++++ b/document.c +@@ -3,7 +3,6 @@ + #define _POSIX_C_SOURCE 1 + + #include <mupdf/fitz.h> +-#include <mupdf/xps.h> + #include <mupdf/pdf.h> + + #include <glib-2.0/glib.h> +diff --git a/image.c b/image.c +index 8f6912b..b938e5c 100644 +--- a/image.c ++++ b/image.c +@@ -93,7 +93,7 @@ pdf_page_image_get_cairo(zathura_page_t* page, mupdf_page_t* mupdf_page, + fz_pixmap* pixmap = NULL; + cairo_surface_t* surface = NULL; + +- pixmap = fz_get_pixmap_from_image(mupdf_page->ctx, mupdf_image, 0, 0); ++ pixmap = fz_get_pixmap_from_image(mupdf_page->ctx, mupdf_image, NULL, NULL, 0, 0); + if (pixmap == NULL) { + goto error_free; + } +diff --git a/index.c b/index.c +index 8b8f8a5..1d1ea8d 100644 +--- a/index.c ++++ b/index.c +@@ -6,7 +6,8 @@ + + #include "plugin.h" + +-static void build_index(fz_outline* outline, girara_tree_node_t* root); ++static void build_index(fz_context* ctx, fz_document* document, fz_outline* ++ outline, girara_tree_node_t* root); + + girara_tree_node_t* + pdf_document_index_generate(zathura_document_t* document, mupdf_document_t* mupdf_document, zathura_error_t* error) +@@ -29,7 +30,7 @@ pdf_document_index_generate(zathura_document_t* document, mupdf_document_t* mupd + + /* generate index */ + girara_tree_node_t* root = girara_node_new(zathura_index_element_new("ROOT")); +- build_index(outline, root); ++ build_index(mupdf_document->ctx, mupdf_document->document, outline, root); + + /* free outline */ + fz_drop_outline(mupdf_document->ctx, outline); +@@ -38,7 +39,7 @@ pdf_document_index_generate(zathura_document_t* document, mupdf_document_t* mupd + } + + static void +-build_index(fz_outline* outline, girara_tree_node_t* root) ++build_index(fz_context* ctx, fz_document* document, fz_outline* outline, girara_tree_node_t* root) + { + if (outline == NULL || root == NULL) { + return; +@@ -50,49 +51,24 @@ build_index(fz_outline* outline, girara_tree_node_t* root) + zathura_link_type_t type = ZATHURA_LINK_INVALID; + zathura_rectangle_t rect = { .x1 = 0, .y1 = 0, .x2 = 0, .y2 = 0 }; + +- switch (outline->dest.kind) { +- case FZ_LINK_NONE: +- type = ZATHURA_LINK_NONE; +- break; +- case FZ_LINK_URI: ++ if (fz_is_external_link(ctx, outline->uri) == 1) { ++ if (strstr(outline->uri, "file://") == outline->uri) { ++ type = ZATHURA_LINK_GOTO_REMOTE; ++ target.value = outline->uri; ++ } else { + type = ZATHURA_LINK_URI; +- target.value = outline->dest.ld.uri.uri; +- break; +- case FZ_LINK_GOTO: +- type = ZATHURA_LINK_GOTO_DEST; +- target.page_number = outline->dest.ld.gotor.page; +- target.destination_type = ZATHURA_LINK_DESTINATION_XYZ; +- target.left = 0; +- target.top = 0; +- target.scale = 0.0; +- { +- int gflags = outline->dest.ld.gotor.flags; +- if (gflags & fz_link_flag_l_valid) { +- target.left = outline->dest.ld.gotor.lt.x; +- } +- if (gflags & fz_link_flag_t_valid) { +- target.top = outline->dest.ld.gotor.lt.y; +- } +- /* if (gflags & fz_link_flag_r_is_zoom) { */ +- /* target.scale = outline->dest.ld.gotor.rb.x; */ +- /* } */ +- } +- break; +- case FZ_LINK_LAUNCH: +- type = ZATHURA_LINK_LAUNCH; +- target.value = outline->dest.ld.launch.file_spec; +- break; +- case FZ_LINK_NAMED: +- type = ZATHURA_LINK_NAMED; +- target.value = outline->dest.ld.named.named; +- break; +- case FZ_LINK_GOTOR: +- type = ZATHURA_LINK_GOTO_REMOTE; +- target.value = outline->dest.ld.gotor.file_spec; +- break; +- default: +- outline = outline->next; // TODO: Don't skip unknown type +- continue; ++ target.value = outline->uri; ++ } ++ } else { ++ float x = 0; ++ float y = 0; ++ ++ type = ZATHURA_LINK_GOTO_DEST; ++ target.destination_type = ZATHURA_LINK_DESTINATION_XYZ; ++ target.page_number = fz_resolve_link(ctx, document, outline->uri, &x, &y); ++ target.left = x; ++ target.top = y; ++ target.scale = 0.0; + } + + index_element->link = zathura_link_new(type, rect, target); +@@ -104,7 +80,7 @@ build_index(fz_outline* outline, girara_tree_node_t* root) + girara_tree_node_t* node = girara_node_append_data(root, index_element); + + if (outline->down != NULL) { +- build_index(outline->down, node); ++ build_index(ctx, document, outline->down, node); + } + + outline = outline->next; +diff --git a/links.c b/links.c +index a947802..7423af2 100644 +--- a/links.c ++++ b/links.c +@@ -43,59 +43,31 @@ pdf_page_links_get(zathura_page_t* page, mupdf_page_t* mupdf_page, zathura_error + zathura_link_type_t type = ZATHURA_LINK_INVALID; + zathura_link_target_t target = { 0 }; + +- char* buffer = NULL; +- switch (link->dest.kind) { +- case FZ_LINK_NONE: +- type = ZATHURA_LINK_NONE; +- break; +- case FZ_LINK_URI: ++ if (fz_is_external_link(mupdf_document->ctx, link->uri) == 1) { ++ if (strstr(link->uri, "file://") == link->uri) { ++ type = ZATHURA_LINK_GOTO_REMOTE; ++ target.value = link->uri; ++ } else { + type = ZATHURA_LINK_URI; +- target.value = link->dest.ld.uri.uri; +- break; +- case FZ_LINK_GOTO: +- type = ZATHURA_LINK_GOTO_DEST; +- target.page_number = link->dest.ld.gotor.page; +- target.destination_type = ZATHURA_LINK_DESTINATION_XYZ; +- target.left = 0; +- target.top = 0; +- target.scale = 0.0; +- { +- int gflags = link->dest.ld.gotor.flags; +- if (gflags & fz_link_flag_l_valid) { +- target.left = link->dest.ld.gotor.lt.x; +- } +- if (gflags & fz_link_flag_t_valid) { +- target.top = link->dest.ld.gotor.lt.y; +- } +- /* if (gflags & fz_link_flag_r_is_zoom) { */ +- /* target.scale = link->dest.ld.gotor.rb.x; */ +- /* } */ +- } +- break; +- case FZ_LINK_LAUNCH: +- type = ZATHURA_LINK_LAUNCH; +- target.value = link->dest.ld.launch.file_spec; +- break; +- case FZ_LINK_NAMED: +- type = ZATHURA_LINK_NAMED; +- target.value = link->dest.ld.named.named; +- break; +- case FZ_LINK_GOTOR: +- type = ZATHURA_LINK_GOTO_REMOTE; +- target.value = link->dest.ld.gotor.file_spec; +- break; +- default: +- continue; ++ target.value = link->uri; ++ } ++ } else { ++ float x = 0; ++ float y = 0; ++ ++ type = ZATHURA_LINK_GOTO_DEST; ++ target.destination_type = ZATHURA_LINK_DESTINATION_XYZ; ++ target.page_number = fz_resolve_link(mupdf_document->ctx, ++ mupdf_document->document, link->uri, &x, &y); ++ target.left = x; ++ target.top = y; ++ target.scale = 0.0; + } + + zathura_link_t* zathura_link = zathura_link_new(type, position, target); + if (zathura_link != NULL) { + girara_list_append(list, zathura_link); + } +- +- if (buffer != NULL) { +- g_free(buffer); +- } + } + + return list; +diff --git a/page.c b/page.c +index 219fc2a..5302cb5 100644 +--- a/page.c ++++ b/page.c +@@ -43,7 +43,9 @@ pdf_page_init(zathura_page_t* page) + /* setup text */ + mupdf_page->extracted_text = false; + +- mupdf_page->text = fz_new_stext_page(mupdf_page->ctx); ++ fz_rect mediabox; ++ mupdf_page->text = fz_new_stext_page(mupdf_page->ctx, ++ fz_bound_page(mupdf_page->ctx, mupdf_page->page, &mediabox)); + if (mupdf_page->text == NULL) { + goto error_free; + } +diff --git a/render.c b/render.c +index 2a92a23..00adb83 100644 +--- a/render.c ++++ b/render.c +@@ -20,7 +20,7 @@ pdf_page_render_to_buffer(mupdf_document_t* mupdf_document, mupdf_page_t* mupdf_ + return ZATHURA_ERROR_UNKNOWN; + } + +- fz_display_list* display_list = fz_new_display_list(mupdf_page->ctx); ++ fz_display_list* display_list = fz_new_display_list(mupdf_page->ctx, NULL); + fz_device* device = fz_new_list_device(mupdf_page->ctx, display_list); + + fz_try (mupdf_document->ctx) { +@@ -37,10 +37,10 @@ pdf_page_render_to_buffer(mupdf_document_t* mupdf_document, mupdf_page_t* mupdf_ + fz_rect rect = { .x1 = page_width, .y1 = page_height }; + + fz_colorspace* colorspace = fz_device_bgr(mupdf_document->ctx); +- fz_pixmap* pixmap = fz_new_pixmap_with_bbox_and_data(mupdf_page->ctx, colorspace, &irect, image); ++ fz_pixmap* pixmap = fz_new_pixmap_with_bbox_and_data(mupdf_page->ctx, colorspace, &irect, 1, image); + fz_clear_pixmap_with_value(mupdf_page->ctx, pixmap, 0xFF); + +- device = fz_new_draw_device(mupdf_page->ctx, pixmap); ++ device = fz_new_draw_device(mupdf_page->ctx, NULL, pixmap); + fz_run_display_list(mupdf_page->ctx, display_list, device, &fz_identity, &rect, NULL); + fz_drop_device(mupdf_page->ctx, device); + +diff --git a/utils.c b/utils.c +index a4b9320..648187a 100644 +--- a/utils.c ++++ b/utils.c +@@ -14,7 +14,7 @@ mupdf_page_extract_text(mupdf_document_t* mupdf_document, mupdf_page_t* mupdf_pa + fz_device* text_device = NULL; + + fz_try (mupdf_page->ctx) { +- text_device = fz_new_stext_device(mupdf_page->ctx, mupdf_page->sheet, mupdf_page->text); ++ text_device = fz_new_stext_device(mupdf_page->ctx, mupdf_page->sheet, mupdf_page->text, NULL); + + /* Disable FZ_IGNORE_IMAGE to collect image blocks */ + fz_disable_device_hints(mupdf_page->ctx, text_device, FZ_IGNORE_IMAGE); +-- +libgit2 0.24.0 +