[evince] [libcodument] Add helper methods to get destination page of a link



commit e461d0199e0cb7c582274b536e74e2250045da03
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Sun Jan 3 18:01:52 2010 +0100

    [libcodument] Add helper methods to get destination page of a link

 libdocument/ev-document-links.c |   51 +++++++++++++++++++++++++++++++++++++++
 libdocument/ev-document-links.h |    4 +++
 2 files changed, 55 insertions(+), 0 deletions(-)
---
diff --git a/libdocument/ev-document-links.c b/libdocument/ev-document-links.c
index 96383e2..01615b2 100644
--- a/libdocument/ev-document-links.c
+++ b/libdocument/ev-document-links.c
@@ -79,3 +79,54 @@ ev_document_links_find_link_dest (EvDocumentLinks *document_links,
 
 	return retval;
 }
+
+/* Helper functions */
+gint
+ev_document_links_get_dest_page (EvDocumentLinks *document_links,
+				 EvLinkDest      *dest)
+{
+	gint page = -1;
+
+	switch (ev_link_dest_get_dest_type (dest)) {
+	case EV_LINK_DEST_TYPE_NAMED: {
+		EvLinkDest *dest2;
+
+		dest2 = ev_document_links_find_link_dest (document_links,
+							  ev_link_dest_get_named_dest (dest));
+		if (dest2) {
+			page = ev_link_dest_get_page (dest2);
+			g_object_unref (dest2);
+		}
+	}
+		break;
+	case EV_LINK_DEST_TYPE_PAGE_LABEL:
+		ev_document_find_page_by_label (EV_DOCUMENT (document_links),
+						ev_link_dest_get_page_label (dest),
+						&page);
+		break;
+	default:
+		page = ev_link_dest_get_page (dest);
+	}
+
+	return page;
+}
+
+gchar *
+ev_document_links_get_dest_page_label (EvDocumentLinks *document_links,
+				       EvLinkDest      *dest)
+{
+	gchar *label = NULL;
+
+	if (ev_link_dest_get_dest_type (dest) == EV_LINK_DEST_TYPE_PAGE_LABEL) {
+		label = g_strdup (ev_link_dest_get_page_label (dest));
+	} else {
+		gint page;
+
+		page = ev_document_links_get_dest_page (document_links, dest);
+		if (page != -1)
+			label = ev_document_get_page_label (EV_DOCUMENT (document_links),
+							    page);
+	}
+
+	return label;
+}
diff --git a/libdocument/ev-document-links.h b/libdocument/ev-document-links.h
index 21c1d4b..a4beabc 100644
--- a/libdocument/ev-document-links.h
+++ b/libdocument/ev-document-links.h
@@ -76,6 +76,10 @@ GList        *ev_document_links_get_links          (EvDocumentLinks *document_li
 						    EvPage          *page);
 EvLinkDest   *ev_document_links_find_link_dest     (EvDocumentLinks *document_links,
 						    const gchar     *link_name);
+gint          ev_document_links_get_dest_page      (EvDocumentLinks *document_links,
+						    EvLinkDest      *dest);
+gchar        *ev_document_links_get_dest_page_label(EvDocumentLinks *document_links,
+						    EvLinkDest      *dest);
 
 G_END_DECLS
 



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