From b9aef17e3af39e3b9364a3e2a8d7fa56d735fc4c Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 19 Sep 2005 14:34:15 +0000 Subject: Implement FIT and FITH links 2005-09-19 Marco Pesenti Gritti * backend/ev-link.c: (ev_link_type_get_type), (ev_link_new_page_xyz), (ev_link_new_page_fit), (ev_link_new_page_fith): * backend/ev-link.h: * pdf/ev-poppler.cc: * shell/ev-view.c: (goto_fith_link), (ev_view_goto_link): Implement FIT and FITH links --- (limited to 'shell') diff --git a/shell/ev-view.c b/shell/ev-view.c index 7826694..fa2df5b 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1097,6 +1097,25 @@ get_link_at_location (EvView *view, } static void +goto_fith_link (EvView *view, EvLink *link) +{ + GdkPoint view_point; + EvPoint doc_point; + int height, page; + + page = ev_link_get_page (link); + ev_page_cache_get_size (view->page_cache, page, 0, 1.0, NULL, &height); + + ev_view_set_sizing_mode (view, EV_SIZING_BEST_FIT); + + doc_point.x = 0; + doc_point.y = height - ev_link_get_top (link); + doc_point_to_view_point (view, page, &doc_point, &view_point); + + gtk_adjustment_set_value (view->vadjustment, view_point.y); +} + +static void goto_xyz_link (EvView *view, EvLink *link) { GdkPoint view_point; @@ -1137,6 +1156,14 @@ ev_view_goto_link (EvView *view, EvLink *link) page = ev_link_get_page (link); ev_page_cache_set_current_page (view->page_cache, page); break; + case EV_LINK_TYPE_PAGE_FIT: + page = ev_link_get_page (link); + ev_page_cache_set_current_page (view->page_cache, page); + ev_view_set_sizing_mode (view, EV_SIZING_BEST_FIT); + break; + case EV_LINK_TYPE_PAGE_FITH: + goto_fith_link (view, link); + break; case EV_LINK_TYPE_PAGE_XYZ: goto_xyz_link (view, link); break; -- cgit v0.9.1