diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-09-24 14:58:58 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-09-24 14:58:58 (GMT) |
commit | b66c8a73177b462aebcb6e495341807abb31a93f (patch) | |
tree | bb32ec8a34ad93cac427223819cebbcc988edd83 /shell | |
parent | 72390e1fd5f031d564f18db414c18d082139f385 (diff) |
Implement fitr links
2005-09-24 Marco Pesenti Gritti <mpg@redhat.com>
* backend/ev-link.c: (ev_link_type_get_type), (ev_link_get_bottom),
(ev_link_get_right), (ev_link_get_property),
(ev_link_set_property), (ev_link_class_init),
(ev_link_new_page_fitv), (ev_link_new_page_fitr):
* backend/ev-link.h:
* pdf/ev-poppler.cc:
* shell/ev-view.c: (goto_fitr_link), (ev_view_goto_link):
Implement fitr links
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ev-view.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index ae33566..c5cc503 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1113,6 +1113,32 @@ get_link_at_location (EvView *view, } static void +goto_fitr_link (EvView *view, EvLink *link) +{ + GdkPoint view_point; + EvPoint doc_point; + int doc_width, doc_height, page; + double zoom; + + page = ev_link_get_page (link); + ev_page_cache_get_size (view->page_cache, page, 0, 1.0, &doc_width, &doc_height); + + doc_point.x = ev_link_get_left (link); + doc_point.y = ev_link_get_top (link); + doc_point_to_view_point (view, page, &doc_point, &view_point); + + zoom = zoom_for_size_best_fit (ev_link_get_right (link) - ev_link_get_left (link), + ev_link_get_top (link) - ev_link_get_bottom (link), + ev_view_get_width (view), + ev_view_get_height (view), 0, 0); + + ev_view_set_sizing_mode (view, EV_SIZING_FREE); + ev_view_set_zoom (view, zoom, FALSE); + ev_page_cache_set_current_page (view->page_cache, page); + gtk_adjustment_set_value (view->hadjustment, view_point.x); +} + +static void goto_fitv_link (EvView *view, EvLink *link) { GdkPoint view_point; @@ -1229,6 +1255,9 @@ ev_view_goto_link (EvView *view, EvLink *link) case EV_LINK_TYPE_PAGE_FITV: goto_fitv_link (view, link); break; + case EV_LINK_TYPE_PAGE_FITR: + goto_fitr_link (view, link); + break; case EV_LINK_TYPE_PAGE_XYZ: goto_xyz_link (view, link); break; |