X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=libdocument%2Fev-document.h;h=d28289254df20796c7709d9aed0a6e3b42469e22;hb=38c1b9aab8bfb41de6dc07df26fd6743a63ea015;hp=1064f16ac848bec45c8a2dea01f3c6dba656fceb;hpb=d76bef42ca0d292a7a04d61663d4da7536136479;p=evince.git diff --git a/libdocument/ev-document.h b/libdocument/ev-document.h index 1064f16a..d2828925 100644 --- a/libdocument/ev-document.h +++ b/libdocument/ev-document.h @@ -65,6 +65,7 @@ typedef struct { } EvPoint; typedef struct _EvRectangle EvRectangle; +typedef struct _EvMapping EvMapping; typedef struct _EvDocumentBackendInfo EvDocumentBackendInfo; struct _EvDocumentBackendInfo @@ -73,6 +74,12 @@ struct _EvDocumentBackendInfo const gchar *version; }; +typedef struct { + const gchar *filename; + gint line; + gint col; +} EvSourceLink; + struct _EvDocument { GObject base; @@ -102,9 +109,12 @@ struct _EvDocumentClass EvPage *page); cairo_surface_t * (* render) (EvDocument *document, EvRenderContext *rc); + GdkPixbuf * (* get_thumbnail) (EvDocument *document, + EvRenderContext *rc); EvDocumentInfo * (* get_info) (EvDocument *document); gboolean (* get_backend_info)(EvDocument *document, EvDocumentBackendInfo *info); + gboolean (* support_synctex) (EvDocument *document); }; GType ev_document_get_type (void) G_GNUC_CONST; @@ -142,18 +152,34 @@ gchar *ev_document_get_page_label (EvDocument *document, gint page_index); cairo_surface_t *ev_document_render (EvDocument *document, EvRenderContext *rc); +GdkPixbuf *ev_document_get_thumbnail (EvDocument *document, + EvRenderContext *rc); const gchar *ev_document_get_uri (EvDocument *document); const gchar *ev_document_get_title (EvDocument *document); gboolean ev_document_is_page_size_uniform (EvDocument *document); void ev_document_get_max_page_size (EvDocument *document, gdouble *width, gdouble *height); +void ev_document_get_min_page_size (EvDocument *document, + gdouble *width, + gdouble *height); gboolean ev_document_check_dimensions (EvDocument *document); gint ev_document_get_max_label_len (EvDocument *document); gboolean ev_document_has_text_page_labels (EvDocument *document); gboolean ev_document_find_page_by_label (EvDocument *document, const gchar *page_label, gint *page_index); +gboolean ev_document_has_synctex (EvDocument *document); + +EvSourceLink *ev_document_synctex_backward_search + (EvDocument *document, + gint page_index, + gfloat x, + gfloat y); + +EvMapping *ev_document_synctex_forward_search + (EvDocument *document, + EvSourceLink *source_link); gint ev_rect_cmp (EvRectangle *a, EvRectangle *b); @@ -172,6 +198,11 @@ EvRectangle *ev_rectangle_new (void); EvRectangle *ev_rectangle_copy (EvRectangle *ev_rect); void ev_rectangle_free (EvRectangle *ev_rect); +struct _EvMapping { + EvRectangle area; + gpointer data; +}; + /* convenience macro to ease interface addition in the CODE * section of EV_BACKEND_REGISTER_WITH_CODE (this macro relies on * the g_define_type_id present within EV_BACKEND_REGISTER_WITH_CODE()). @@ -271,25 +302,6 @@ type_name##_get_type (void) return g_define_type_id__volatile; \ } -/* - * A convenience macro for boxed type implementations, which defines a - * type_name_get_type() function registering the boxed type. - */ -#define EV_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) \ -GType \ -type_name##_get_type (void) \ -{ \ - static volatile gsize g_define_type_id__volatile = 0; \ - if (g_once_init_enter (&g_define_type_id__volatile)) { \ - GType g_define_type_id = \ - g_boxed_type_register_static (g_intern_static_string (#TypeName), \ - (GBoxedCopyFunc) copy_func, \ - (GBoxedFreeFunc) free_func); \ - g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ - } \ - return g_define_type_id__volatile; \ -} - G_END_DECLS #endif /* EV_DOCUMENT_H */