[evince] libdocument: Add ev_document_get_thumbnail_surface()



commit f8736ab169775428f99a1e1b1096b79edc1f95a3
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Sat Mar 22 12:44:28 2014 +0100

    libdocument: Add ev_document_get_thumbnail_surface()
    
    To allow backends render thumbnails to a cairo surface instead of a
    GdkPixbuf.

 .../libdocument/libevdocument-sections.txt         |    1 +
 libdocument/ev-document.c                          |   22 ++++++
 libdocument/ev-document.h                          |   70 ++++++++++---------
 3 files changed, 60 insertions(+), 33 deletions(-)
---
diff --git a/help/reference/libdocument/libevdocument-sections.txt 
b/help/reference/libdocument/libevdocument-sections.txt
index 674248e..f21c798 100644
--- a/help/reference/libdocument/libevdocument-sections.txt
+++ b/help/reference/libdocument/libevdocument-sections.txt
@@ -380,6 +380,7 @@ ev_document_get_max_label_len
 ev_document_has_text_page_labels
 ev_document_find_page_by_label
 ev_document_get_thumbnail
+ev_document_get_thumbnail_surface
 ev_document_has_synctex
 ev_document_synctex_backward_search
 ev_document_synctex_forward_search
diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c
index 5907748..244365e 100644
--- a/libdocument/ev-document.c
+++ b/libdocument/ev-document.c
@@ -721,6 +721,28 @@ ev_document_get_thumbnail (EvDocument      *document,
        return _ev_document_get_thumbnail (document, rc);
 }
 
+/**
+ * ev_document_get_thumbnail_surface:
+ * @document: an #EvDocument
+ * @rc: an #EvRenderContext
+ *
+ * Returns: (transfer full): a #cairo_surface_t
+ *
+ * Since: 3.14
+ */
+cairo_surface_t *
+ev_document_get_thumbnail_surface (EvDocument      *document,
+                                  EvRenderContext *rc)
+{
+       EvDocumentClass *klass = EV_DOCUMENT_GET_CLASS (document);
+
+       if (klass->get_thumbnail_surface)
+               return klass->get_thumbnail_surface (document, rc);
+
+       return ev_document_render (document, rc);
+}
+
+
 const gchar *
 ev_document_get_uri (EvDocument *document)
 {
diff --git a/libdocument/ev-document.h b/libdocument/ev-document.h
index 1857dfa..2ffc130 100644
--- a/libdocument/ev-document.h
+++ b/libdocument/ev-document.h
@@ -93,41 +93,43 @@ struct _EvDocumentClass
         GObjectClass base_class;
 
         /* Virtual Methods  */
-        gboolean          (* load)            (EvDocument      *document,
-                                               const char      *uri,
-                                               GError         **error);
-        gboolean          (* save)            (EvDocument      *document,
-                                               const char      *uri,
-                                               GError         **error);
-        gint              (* get_n_pages)     (EvDocument      *document);
-       EvPage          * (* get_page)        (EvDocument      *document,
-                                              gint             index);
-        void              (* get_page_size)   (EvDocument      *document,
-                                               EvPage          *page,
-                                               double          *width,
-                                               double          *height);
-        gchar           * (* get_page_label)  (EvDocument      *document,
-                                               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);
+        gboolean          (* load)                  (EvDocument          *document,
+                                                    const char          *uri,
+                                                    GError             **error);
+        gboolean          (* save)                  (EvDocument          *document,
+                                                    const char          *uri,
+                                                    GError             **error);
+        gint              (* get_n_pages)           (EvDocument          *document);
+       EvPage          * (* get_page)              (EvDocument          *document,
+                                                    gint                 index);
+        void              (* get_page_size)         (EvDocument          *document,
+                                                    EvPage              *page,
+                                                    double              *width,
+                                                    double              *height);
+        gchar           * (* get_page_label)        (EvDocument          *document,
+                                                    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);
 
         /* GIO streams */
-        gboolean          (* load_stream)     (EvDocument          *document,
-                                               GInputStream        *stream,
-                                               EvDocumentLoadFlags  flags,
-                                               GCancellable        *cancellable,
-                                               GError             **error);
-        gboolean          (* load_gfile)      (EvDocument          *document,
-                                               GFile               *file,
-                                               EvDocumentLoadFlags  flags,
-                                               GCancellable        *cancellable,
-                                               GError             **error);
+        gboolean          (* load_stream)           (EvDocument          *document,
+                                                    GInputStream        *stream,
+                                                    EvDocumentLoadFlags  flags,
+                                                    GCancellable        *cancellable,
+                                                    GError             **error);
+        gboolean          (* load_gfile)            (EvDocument          *document,
+                                                    GFile               *file,
+                                                    EvDocumentLoadFlags  flags,
+                                                    GCancellable        *cancellable,
+                                                    GError             **error);
+       cairo_surface_t * (* get_thumbnail_surface) (EvDocument          *document,
+                                                    EvRenderContext     *rc);
 };
 
 GType            ev_document_get_type             (void) G_GNUC_CONST;
@@ -177,6 +179,8 @@ cairo_surface_t *ev_document_render               (EvDocument      *document,
                                                   EvRenderContext *rc);
 GdkPixbuf       *ev_document_get_thumbnail        (EvDocument      *document,
                                                   EvRenderContext *rc);
+cairo_surface_t *ev_document_get_thumbnail_surface (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);


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