Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/backend
diff options
context:
space:
mode:
Diffstat (limited to 'backend')
-rw-r--r--backend/ev-document-find.c13
-rw-r--r--backend/ev-document-find.h16
-rw-r--r--backend/ev-document.c70
-rw-r--r--backend/ev-document.h57
-rw-r--r--backend/ev-jobs.c8
-rw-r--r--backend/ev-page-cache.c13
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);