gint djvu_links_find_link_page (EvDocumentLinks *document_links, const gchar *link_name) { DjvuDocument *djvu_document = DJVU_DOCUMENT (document_links); gint page; page = get_djvu_link_page (djvu_document, link_name, -1); if (page == -1) { g_warning ("DjvuLibre error: unknown link destination %s", link_name); } return page; }
static EvLinkDest * get_djvu_link_dest (const DjvuDocument *djvu_document, const gchar *link_name, int base_page) { /* #+pagenum #-pagenum #file_id.djvu */ if (g_str_has_prefix (link_name, "#")) { if (g_str_has_suffix (link_name, ".djvu") || (base_page > 0 && g_str_has_prefix (link_name + 1, "+")) || (base_page > 0 && g_str_has_prefix (link_name + 1, "-"))) { return ev_link_dest_new_page (get_djvu_link_page (djvu_document, link_name, base_page)); } else { /* #pagenum #page_label: the djvu spec is not clear on whether #pagenum represents * a link to a page number or to a page label. Here we mimick djview, * and always treat #pagenum as a link to a page label */ return ev_link_dest_new_page_label (link_name + 1); } } return NULL; }
static EvLinkDest * get_djvu_link_dest (const DjvuDocument *djvu_document, const gchar *link_name, int base_page) { return ev_link_dest_new_page (get_djvu_link_page (djvu_document, link_name, base_page)); }