diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-09-07 12:36:54 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-09-07 12:36:54 (GMT) |
commit | 9f8ec2d921de1c31da212c8486ab2bda85d51bf9 (patch) | |
tree | 345fe0da287b75b87d1957bc84d4ce3cbb0260ff /pdf | |
parent | 91cff90ba3ab0a2ee2be958c2efac1181be9bf3e (diff) |
Implement xyz links, still not functional. Links are a total mess, will
2005-09-07 Marco Pesenti Gritti <mpg@redhat.com>
* backend/ev-document.h:
* backend/ev-link.c: (ev_link_type_get_type), (ev_link_get_top),
(ev_link_get_left), (ev_link_get_zoom), (ev_link_get_property),
(ev_link_set_property), (ev_window_dispose), (ev_link_class_init),
(ev_link_new_page), (ev_link_new_page_xyz):
* backend/ev-link.h:
* pdf/ev-poppler.cc:
* shell/ev-view.c: (doc_point_to_view_point), (scroll_to_xyz_link),
(go_to_link), (tip_from_link):
Implement xyz links, still not functional. Links are a total
mess, will need to refactor and bugfix a lot :(
Diffstat (limited to 'pdf')
-rw-r--r-- | pdf/ev-poppler.cc | 88 |
1 files changed, 82 insertions, 6 deletions
diff --git a/pdf/ev-poppler.cc b/pdf/ev-poppler.cc index bbcb978..769c78a 100644 --- a/pdf/ev-poppler.cc +++ b/pdf/ev-poppler.cc @@ -703,18 +703,94 @@ pdf_document_links_has_document_links (EvDocumentLinks *document_links) } static EvLink * -ev_link_from_action (PopplerAction *action) +ev_link_from_dest (PopplerAction *action) { EvLink *link; + const char *unimplemented_dest = NULL; + + switch (action->goto_dest.dest->type) { + case POPPLER_DEST_UNKNOWN: + unimplemented_dest = "POPPLER_DEST_UNKNOWN"; + break; + case POPPLER_DEST_XYZ: + link = ev_link_new_page_xyz (action->any.title, + action->goto_dest.dest->page_num - 1, + action->goto_dest.dest->left, + action->goto_dest.dest->top, + action->goto_dest.dest->zoom); + break; + case POPPLER_DEST_FIT: + unimplemented_dest = "POPPLER_DEST_FIT"; + break; + case POPPLER_DEST_FITH: + unimplemented_dest = "POPPLER_DEST_FITH"; + break; + case POPPLER_DEST_FITV: + unimplemented_dest = "POPPLER_DEST_FITV"; + break; + case POPPLER_DEST_FITR: + unimplemented_dest = "POPPLER_DEST_FITR"; + break; + case POPPLER_DEST_FITB: + unimplemented_dest = "POPPLER_DEST_FITB"; + break; + case POPPLER_DEST_FITBH: + unimplemented_dest = "POPPLER_DEST_FITBH"; + break; + case POPPLER_DEST_FITBV: + unimplemented_dest = "POPPLER_DEST_FITBV"; + break; + } + + if (unimplemented_dest) { + g_warning ("Unimplemented destination: %s, please post a bug report with a testcase.", + unimplemented_dest); + } + + link = ev_link_new_page (action->any.title, action->goto_dest.dest->page_num - 1); + + return link; +} + +static EvLink * +ev_link_from_action (PopplerAction *action) +{ + EvLink *link = NULL; const char *title; + const char *unimplemented_action = NULL; title = action->any.title; - - if (action->type == POPPLER_ACTION_GOTO_DEST) { - link = ev_link_new_page (title, action->goto_dest.dest->page_num - 1); - } else if (action->type == POPPLER_ACTION_URI) { + + switch (action->type) { + case POPPLER_ACTION_UNKNOWN: + g_warning ("Unknown action"); + break; + case POPPLER_ACTION_GOTO_DEST: + link = ev_link_from_dest (action); + break; + case POPPLER_ACTION_GOTO_REMOTE: + unimplemented_action = "POPPLER_ACTION_GOTO_REMOTE"; + break; + case POPPLER_ACTION_LAUNCH: + unimplemented_action = "POPPLER_ACTION_LAUNCH"; + break; + case POPPLER_ACTION_URI: link = ev_link_new_external (title, action->uri.uri); - } else { + break; + case POPPLER_ACTION_NAMED: + unimplemented_action = "POPPLER_ACTION_NAMED"; + break; + case POPPLER_ACTION_MOVIE: + unimplemented_action = "POPPLER_ACTION_MOVIE"; + break; + } + + if (unimplemented_action) { + g_warning ("Unimplemented action: %s, please post a bug report with a testcase.", + unimplemented_action); + } + + if (link == NULL) { link = ev_link_new_title (title); } |