diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/ev-document-find.c | 13 | ||||
-rw-r--r-- | backend/ev-document-find.h | 16 | ||||
-rw-r--r-- | backend/ev-document.c | 70 | ||||
-rw-r--r-- | backend/ev-document.h | 57 | ||||
-rw-r--r-- | backend/ev-jobs.c | 8 | ||||
-rw-r--r-- | backend/ev-page-cache.c | 13 |
6 files changed, 69 insertions, 108 deletions
diff --git a/backend/ev-document-find.c b/backend/ev-document-find.c index 5c1fbe4..1be43b9 100644 --- a/backend/ev-document-find.c +++ b/backend/ev-document-find.c @@ -68,6 +68,7 @@ ev_document_find_base_init (gpointer g_class) void ev_document_find_begin (EvDocumentFind *document_find, + int page, const char *search_string, gboolean case_sensitive) { @@ -75,7 +76,7 @@ ev_document_find_begin (EvDocumentFind *document_find, g_return_if_fail (search_string != NULL); - iface->begin (document_find, search_string, case_sensitive); + iface->begin (document_find, page, search_string, case_sensitive); } void @@ -94,19 +95,21 @@ ev_document_find_page_has_results (EvDocumentFind *document_find, } int -ev_document_find_get_n_results (EvDocumentFind *document_find) +ev_document_find_get_n_results (EvDocumentFind *document_find, + int page) { EvDocumentFindIface *iface = EV_DOCUMENT_FIND_GET_IFACE (document_find); - return iface->get_n_results (document_find); + return iface->get_n_results (document_find, page); } gboolean ev_document_find_get_result (EvDocumentFind *document_find, + int page, int n_result, - GdkRectangle *rectangle) + EvRectangle *rectangle) { EvDocumentFindIface *iface = EV_DOCUMENT_FIND_GET_IFACE (document_find); - return iface->get_result (document_find, n_result, rectangle); + return iface->get_result (document_find, page, n_result, rectangle); } double diff --git a/backend/ev-document-find.h b/backend/ev-document-find.h index 49c3672..f365df1 100644 --- a/backend/ev-document-find.h +++ b/backend/ev-document-find.h @@ -26,6 +26,8 @@ #include <glib.h> #include <gdk/gdk.h> +#include "ev-document.h" /* For EvRectangle */ + G_BEGIN_DECLS #define EV_TYPE_DOCUMENT_FIND (ev_document_find_get_type ()) @@ -45,15 +47,18 @@ struct _EvDocumentFindIface /* Methods */ void (* begin) (EvDocumentFind *document_find, + int page, const char *search_string, gboolean case_sensitive); void (* cancel) (EvDocumentFind *document_find); int (* page_has_results) (EvDocumentFind *document_find, int page); - int (* get_n_results) (EvDocumentFind *document_find); + int (* get_n_results) (EvDocumentFind *document_find, + int page); gboolean (* get_result) (EvDocumentFind *document_find, + int page, int n_result, - GdkRectangle *rectangle); + EvRectangle *rectangle); double (* get_progress) (EvDocumentFind *document_find); /* Signals */ @@ -64,15 +69,18 @@ struct _EvDocumentFindIface GType ev_document_find_get_type (void); void ev_document_find_begin (EvDocumentFind *document_find, + int page, const char *search_string, gboolean case_sensitive); void ev_document_find_cancel (EvDocumentFind *document_find); int ev_document_find_page_has_results (EvDocumentFind *document_find, int page); -int ev_document_find_get_n_results (EvDocumentFind *document_find); +int ev_document_find_get_n_results (EvDocumentFind *document_find, + int page); gboolean ev_document_find_get_result (EvDocumentFind *document_find, + int page, int n_result, - GdkRectangle *rectangle); + EvRectangle *rectangle); double ev_document_find_get_progress (EvDocumentFind *document_find); void ev_document_find_changed (EvDocumentFind *document_find, int page); diff --git a/backend/ev-document.c b/backend/ev-document.c index d4d6f20..aa61fc6 100644 --- a/backend/ev-document.c +++ b/backend/ev-document.c @@ -158,42 +158,10 @@ ev_document_get_n_pages (EvDocument *document) } void -ev_document_set_page (EvDocument *document, - int page) -{ - EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - - LOG ("ev_document_set_page"); - iface->set_page (document, page); -} - -int -ev_document_get_page (EvDocument *document) -{ - EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - int retval; - - LOG ("ev_document_get_page"); - retval = iface->get_page (document); - - return retval; -} - -void -ev_document_set_scale (EvDocument *document, - double scale) -{ - EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - - LOG ("ev_document_set_scale"); - iface->set_scale (document, scale); -} - -void ev_document_get_page_size (EvDocument *document, int page, - int *width, - int *height) + double *width, + double *height) { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); @@ -215,36 +183,22 @@ ev_document_get_page_label(EvDocument *document, } char * -ev_document_get_text (EvDocument *document, - GdkRectangle *rect) +ev_document_get_text (EvDocument *document, + int page, + EvRectangle *rect) { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); char *retval; LOG ("ev_document_get_text"); - retval = iface->get_text (document, rect); - - return retval; -} - -EvLink * -ev_document_get_link (EvDocument *document, - int x, - int y) -{ - EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); - EvLink *retval; - - LOG ("ev_document_get_link"); - if (iface->get_link == NULL) - return NULL; - retval = iface->get_link (document, x, y); + retval = iface->get_text (document, page, rect); return retval; } GList * -ev_document_get_links (EvDocument *document) +ev_document_get_links (EvDocument *document, + int page) { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); GList *retval; @@ -252,7 +206,7 @@ ev_document_get_links (EvDocument *document) LOG ("ev_document_get_link"); if (iface->get_links == NULL) return NULL; - retval = iface->get_links (document); + retval = iface->get_links (document, page); return retval; } @@ -260,7 +214,9 @@ ev_document_get_links (EvDocument *document) GdkPixbuf * -ev_document_render_pixbuf (EvDocument *document) +ev_document_render_pixbuf (EvDocument *document, + int page, + double scale) { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); GdkPixbuf *retval; @@ -268,7 +224,7 @@ ev_document_render_pixbuf (EvDocument *document) LOG ("ev_document_render_pixbuf"); g_assert (iface->render_pixbuf); - retval = iface->render_pixbuf (document); + retval = iface->render_pixbuf (document, page, scale); return retval; } diff --git a/backend/ev-document.h b/backend/ev-document.h index e5c91b7..743b947 100644 --- a/backend/ev-document.h +++ b/backend/ev-document.h @@ -54,14 +54,17 @@ typedef enum EV_DOCUMENT_ERROR_ENCRYPTED } EvDocumentError; +typedef struct { + double x1; + double y1; + double x2; + double y2; +} EvRectangle; + struct _EvDocumentIface { GTypeInterface base_iface; - /* Signals */ - void (* page_changed) (EvDocument *document); - void (* scale_changed) (EvDocument *document); - /* Methods */ gboolean (* load) (EvDocument *document, const char *uri, @@ -70,24 +73,20 @@ struct _EvDocumentIface const char *uri, GError **error); int (* get_n_pages) (EvDocument *document); - void (* set_page) (EvDocument *document, - int page); - int (* get_page) (EvDocument *document); - void (* set_scale) (EvDocument *document, - double scale); void (* get_page_size) (EvDocument *document, int page, - int *width, - int *height); + double *width, + double *height); char * (* get_page_label) (EvDocument *document, int page); char * (* get_text) (EvDocument *document, - GdkRectangle *rect); - EvLink * (* get_link) (EvDocument *document, - int x, - int y); - GList * (* get_links) (EvDocument *document); - GdkPixbuf * (* render_pixbuf) (EvDocument *document); + int page, + EvRectangle *rect); + GList * (* get_links) (EvDocument *document, + int page); + GdkPixbuf * (* render_pixbuf) (EvDocument *document, + int page, + double scale); }; GType ev_document_get_type (void); @@ -104,24 +103,20 @@ gboolean ev_document_save (EvDocument *document, GError **error); char *ev_document_get_title (EvDocument *document); int ev_document_get_n_pages (EvDocument *document); -void ev_document_set_page (EvDocument *document, - int page); -int ev_document_get_page (EvDocument *document); -void ev_document_set_scale (EvDocument *document, - double scale); void ev_document_get_page_size (EvDocument *document, int page, - int *width, - int *height); + double *width, + double *height); char *ev_document_get_page_label(EvDocument *document, - int page); + int page); char *ev_document_get_text (EvDocument *document, - GdkRectangle *rect); -EvLink *ev_document_get_link (EvDocument *document, - int x, - int y); -GList *ev_document_get_links (EvDocument *document); -GdkPixbuf *ev_document_render_pixbuf (EvDocument *document); + int page, + EvRectangle *rect); +GList *ev_document_get_links (EvDocument *document, + int page); +GdkPixbuf *ev_document_render_pixbuf (EvDocument *document, + int page, + double scale); G_END_DECLS diff --git a/backend/ev-jobs.c b/backend/ev-jobs.c index 8265aeb..0a5f69f 100644 --- a/backend/ev-jobs.c +++ b/backend/ev-jobs.c @@ -206,11 +206,11 @@ ev_job_render_run (EvJobRender *job) g_mutex_lock (EV_DOC_MUTEX); - ev_document_set_page (EV_JOB (job)->document, job->page); - ev_document_set_scale (EV_JOB (job)->document, job->scale); - job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document); + job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, + job->page, + job->scale); if (job->include_links) - job->link_mapping = ev_document_get_links (EV_JOB (job)->document); + job->link_mapping = ev_document_get_links (EV_JOB (job)->document, job->page); EV_JOB (job)->finished = TRUE; g_mutex_unlock (EV_DOC_MUTEX); diff --git a/backend/ev-page-cache.c b/backend/ev-page-cache.c index 08d1be4..7960cb4 100644 --- a/backend/ev-page-cache.c +++ b/backend/ev-page-cache.c @@ -5,8 +5,8 @@ typedef struct _EvPageCacheInfo { - gint width; - gint height; + double width; + double height; } EvPageCacheInfo; @@ -21,8 +21,8 @@ struct _EvPageCache char **page_labels; gboolean uniform; - gint uniform_width; - gint uniform_height; + double uniform_width; + double uniform_height; EvPageCacheInfo *size_cache; }; @@ -105,10 +105,9 @@ _ev_page_cache_new (EvDocument *document) page_cache->title = ev_document_get_title (document); page_cache->page_labels = g_new0 (char *, page_cache->n_pages); - ev_document_set_scale (document, 1.0); for (i = 0; i < page_cache->n_pages; i++) { - gint page_width = 0; - gint page_height = 0; + double page_width = 0; + double page_height = 0; ev_document_get_page_size (document, i, &page_width, &page_height); page_cache->page_labels[i] = ev_document_get_page_label (document, i); |