summarylogtreecommitdiffstats
path: root/sioyek-mupdf-1.23.patch
diff options
context:
space:
mode:
authorhrdl2023-10-07 11:17:23 +0200
committerhrdl2023-10-07 11:17:23 +0200
commite4a1a281e737337bfb48392a8026f3a17cbfb86d (patch)
treee0e902fa778773c69a24fbd2a8e3b154b2bd358c /sioyek-mupdf-1.23.patch
parent4ed8b1c38756cbcc8e5c4255beff41836d5bb463 (diff)
downloadaur-e4a1a281e737337bfb48392a8026f3a17cbfb86d.tar.gz
Move mupdf 1.23 patch
Diffstat (limited to 'sioyek-mupdf-1.23.patch')
-rw-r--r--sioyek-mupdf-1.23.patch106
1 files changed, 106 insertions, 0 deletions
diff --git a/sioyek-mupdf-1.23.patch b/sioyek-mupdf-1.23.patch
new file mode 100644
index 000000000000..788375c19465
--- /dev/null
+++ b/sioyek-mupdf-1.23.patch
@@ -0,0 +1,106 @@
+From 9f0d37af732bef364f1be62c83cfd62d8aa437e5 Mon Sep 17 00:00:00 2001
+From: hrdl <git@hrdl.eu>
+Date: Tue, 5 Sep 2023 08:49:41 +0200
+Subject: [PATCH] Mupdf 1.23 support
+
+---
+ pdf_viewer/document_view.cpp | 4 ++--
+ pdf_viewer/main_widget.cpp | 8 ++++----
+ pdf_viewer/utils.cpp | 5 +++--
+ pdf_viewer/utils.h | 2 +-
+ 4 files changed, 10 insertions(+), 9 deletions(-)
+
+diff --git a/pdf_viewer/document_view.cpp b/pdf_viewer/document_view.cpp
+index afcb173..6a75b34 100644
+--- a/pdf_viewer/document_view.cpp
++++ b/pdf_viewer/document_view.cpp
+@@ -1126,7 +1126,7 @@ std::vector<DocumentPos> DocumentView::find_line_definitions() {
+
+ std::optional<PdfLink> pdf_link = current_document->get_link_in_page_rect(get_center_page_number(), line_rects[line_index]);
+ if (pdf_link.has_value()) {
+- auto parsed_uri = parse_uri(mupdf_context, pdf_link.value().uri);
++ auto parsed_uri = parse_uri(mupdf_context, current_document->doc, pdf_link.value().uri);
+ result.push_back({ parsed_uri.page - 1, parsed_uri.x, parsed_uri.y });
+ return result;
+ }
+@@ -1217,7 +1217,7 @@ void DocumentView::get_visible_links(std::vector<std::pair<int, fz_link*>>& visi
+ for (auto page : visible_pages) {
+ fz_link* link = get_document()->get_page_links(page);
+ while (link) {
+- ParsedUri parsed_uri = parse_uri(mupdf_context, link->uri);
++ ParsedUri parsed_uri = parse_uri(mupdf_context, get_document()->doc, link->uri);
+ fz_rect window_rect = document_to_window_rect(page, link->rect);
+ if ((window_rect.x0 >= -1) && (window_rect.x0 <= 1) && (window_rect.y0 >= -1) && (window_rect.y0 <= 1)) {
+ visible_page_links.push_back(std::make_pair(page, link));
+diff --git a/pdf_viewer/main_widget.cpp b/pdf_viewer/main_widget.cpp
+index c22e31b..e6d6f2b 100644
+--- a/pdf_viewer/main_widget.cpp
++++ b/pdf_viewer/main_widget.cpp
+@@ -179,7 +179,7 @@ void MainWidget::set_overview_position(int page, float offset) {
+
+ void MainWidget::set_overview_link(PdfLink link) {
+
+- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri);
++ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri);
+ if (page >= 1) {
+ set_overview_position(page - 1, offset_y);
+ }
+@@ -2771,7 +2771,7 @@ void MainWidget::handle_link_click(const PdfLink& link) {
+ return;
+ }
+
+- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, link.uri);
++ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, link.uri);
+
+ // convert one indexed page to zero indexed page
+ page--;
+@@ -3920,7 +3920,7 @@ void MainWidget::handle_portal_to_link(const std::wstring& text) {
+ PdfLink pdf_link;
+ pdf_link.rect = link->rect;
+ pdf_link.uri = link->uri;
+- ParsedUri parsed_uri = parse_uri(mupdf_context, pdf_link.uri);
++ ParsedUri parsed_uri = parse_uri(mupdf_context, doc()->doc, pdf_link.uri);
+
+ //AbsoluteDocumentPos abspos = doc()->document_to_absolute_pos(defpos[0], true);
+ DocumentPos link_source_document_pos;
+@@ -3959,7 +3959,7 @@ void MainWidget::handle_open_link(const std::wstring& text, bool copy) {
+ open_web_url(utf8_decode(selected_link->uri));
+ }
+ else {
+- auto [page, offset_x, offset_y] = parse_uri(mupdf_context, selected_link->uri);
++ auto [page, offset_x, offset_y] = parse_uri(mupdf_context, doc()->doc, selected_link->uri);
+ long_jump_to_destination(page - 1, offset_y);
+ }
+ }
+diff --git a/pdf_viewer/utils.cpp b/pdf_viewer/utils.cpp
+index c53b3e4..9b5fd45 100644
+--- a/pdf_viewer/utils.cpp
++++ b/pdf_viewer/utils.cpp
+@@ -116,8 +116,9 @@ bool rects_intersect(fz_rect rect1, fz_rect rect2) {
+ return range_intersects(rect1.x0, rect1.x1, rect2.x0, rect2.x1) && range_intersects(rect1.y0, rect1.y1, rect2.y0, rect2.y1);
+ }
+
+-ParsedUri parse_uri(fz_context* mupdf_context, std::string uri) {
+- fz_link_dest dest = pdf_parse_link_uri(mupdf_context, uri.c_str());
++ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri) {
++ pdf_document* doc = pdf_document_from_fz_document(mupdf_context, fz_doc);
++ fz_link_dest dest = pdf_resolve_link_dest(mupdf_context, doc, uri.c_str());
+ return { dest.loc.page + 1, dest.x, dest.y };
+ }
+
+diff --git a/pdf_viewer/utils.h b/pdf_viewer/utils.h
+index 10873c6..b25bfa2 100644
+--- a/pdf_viewer/utils.h
++++ b/pdf_viewer/utils.h
+@@ -55,7 +55,7 @@ void get_flat_toc(const std::vector<TocNode*>& roots, std::vector<std::wstring>&
+ int mod(int a, int b);
+ bool range_intersects(float range1_start, float range1_end, float range2_start, float range2_end);
+ bool rects_intersect(fz_rect rect1, fz_rect rect2);
+-ParsedUri parse_uri(fz_context* mupdf_context, std::string uri);
++ParsedUri parse_uri(fz_context* mupdf_context, fz_document* fz_doc, std::string uri);
+ char get_symbol(int key, bool is_shift_pressed, const std::vector<char>&special_symbols);
+
+ template<typename T>
+--
+2.42.0
+