[evince] [libdocument] Add methods to get page and page label from a link



commit eb1c4c8ab5f0a179a3e5836f4540a70859cba106
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Thu Sep 2 18:09:09 2010 +0200

    [libdocument] Add methods to get page and page label from a link
    
    It works even for named destinations, using the existing methods to get
    pages and page label from a destination.

 libdocument/ev-document-links.c |   38 ++++++++++++++++++++++++++++++++++++++
 libdocument/ev-document-links.h |    4 ++++
 2 files changed, 42 insertions(+), 0 deletions(-)
---
diff --git a/libdocument/ev-document-links.c b/libdocument/ev-document-links.c
index b8aae5d..48dde7f 100644
--- a/libdocument/ev-document-links.c
+++ b/libdocument/ev-document-links.c
@@ -127,3 +127,41 @@ ev_document_links_get_dest_page_label (EvDocumentLinks *document_links,
 
 	return label;
 }
+
+static EvLinkDest *
+get_link_dest (EvLink *link)
+{
+	EvLinkAction *action;
+
+	action = ev_link_get_action (link);
+	if (!action)
+		return NULL;
+
+	if (ev_link_action_get_action_type (action) !=
+	    EV_LINK_ACTION_TYPE_GOTO_DEST)
+		return NULL;
+
+	return ev_link_action_get_dest (action);
+}
+
+gint
+ev_document_links_get_link_page (EvDocumentLinks *document_links,
+				 EvLink          *link)
+{
+	EvLinkDest *dest;
+
+	dest = get_link_dest (link);
+
+	return dest ? ev_document_links_get_dest_page (document_links, dest) : -1;
+}
+
+gchar *
+ev_document_links_get_link_page_label (EvDocumentLinks *document_links,
+				       EvLink          *link)
+{
+	EvLinkDest *dest;
+
+	dest = get_link_dest (link);
+
+	return dest ? ev_document_links_get_dest_page_label (document_links, dest) : NULL;
+}
diff --git a/libdocument/ev-document-links.h b/libdocument/ev-document-links.h
index 3614840..1c507e7 100644
--- a/libdocument/ev-document-links.h
+++ b/libdocument/ev-document-links.h
@@ -81,6 +81,10 @@ gint           ev_document_links_get_dest_page       (EvDocumentLinks *document_
 						      EvLinkDest      *dest);
 gchar         *ev_document_links_get_dest_page_label (EvDocumentLinks *document_links,
 						      EvLinkDest      *dest);
+gint           ev_document_links_get_link_page       (EvDocumentLinks *document_links,
+						      EvLink          *link);
+gchar         *ev_document_links_get_link_page_label (EvDocumentLinks *document_links,
+						      EvLink          *link);
 
 G_END_DECLS
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]