Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libview/ev-jobs.h
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-12-08 17:23:50 (GMT)
committer Carlos Garcia Campos <carlosgc@gnome.org>2009-12-09 16:28:55 (GMT)
commit3a8589a7c5e0394df456074048845cddd04bc43d (patch)
tree923de668f779694bab410a5920ef3c6c3b766d37 /libview/ev-jobs.h
parentef00f8a39f4a7c36f07888ee5ae1d21b9cf9b585 (diff)
[libview] Split EvPixbufCache into dynamic and static data
Dynamic page data (page surfaces and selections) that depend on current scale/rotation, keep in EvPixbufCache with the current cache approach. Static page data (links, annots, images, text and forms) that don't depend on current scale/rotation, have been moved to EvPageCache and they are never removed from the cache. Fixes bgo#602405.
Diffstat (limited to 'libview/ev-jobs.h')
-rw-r--r--libview/ev-jobs.h68
1 files changed, 45 insertions, 23 deletions
diff --git a/libview/ev-jobs.h b/libview/ev-jobs.h
index 4c2fc69..8777d4c 100644
--- a/libview/ev-jobs.h
+++ b/libview/ev-jobs.h
@@ -39,6 +39,9 @@ typedef struct _EvJobClass EvJobClass;
typedef struct _EvJobRender EvJobRender;
typedef struct _EvJobRenderClass EvJobRenderClass;
+typedef struct _EvJobPageData EvJobPageData;
+typedef struct _EvJobPageDataClass EvJobPageDataClass;
+
typedef struct _EvJobThumbnail EvJobThumbnail;
typedef struct _EvJobThumbnailClass EvJobThumbnailClass;
@@ -90,6 +93,11 @@ typedef struct _EvJobPrintClass EvJobPrintClass;
#define EV_JOB_RENDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_RENDER, EvJobRenderClass))
#define EV_IS_JOB_RENDER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_RENDER))
+#define EV_TYPE_JOB_PAGE_DATA (ev_job_page_data_get_type())
+#define EV_JOB_PAGE_DATA(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_PAGE_DATA, EvJobPageData))
+#define EV_JOB_PAGE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_PAGE_DATA, EvJobPageDataClass))
+#define EV_IS_JOB_PAGE_DATA(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_PAGE_DATA))
+
#define EV_TYPE_JOB_THUMBNAIL (ev_job_thumbnail_get_type())
#define EV_JOB_THUMBNAIL(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_THUMBNAIL, EvJobThumbnail))
#define EV_JOB_THUMBNAIL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_THUMBNAIL, EvJobThumbnailClass))
@@ -189,17 +197,6 @@ struct _EvJobAttachmentsClass
EvJobClass parent_class;
};
-typedef enum {
- EV_RENDER_INCLUDE_NONE = 0,
- EV_RENDER_INCLUDE_LINKS = 1 << 0,
- EV_RENDER_INCLUDE_TEXT = 1 << 1,
- EV_RENDER_INCLUDE_SELECTION = 1 << 2,
- EV_RENDER_INCLUDE_IMAGES = 1 << 3,
- EV_RENDER_INCLUDE_FORMS = 1 << 4,
- EV_RENDER_INCLUDE_ANNOTS = 1 << 5,
- EV_RENDER_INCLUDE_ALL = (1 << 6) - 1
-} EvRenderFlags;
-
struct _EvJobRender
{
EvJob parent;
@@ -214,27 +211,47 @@ struct _EvJobRender
gint target_height;
cairo_surface_t *surface;
- GList *link_mapping;
- GdkRegion *text_mapping;
- GList *image_mapping;
- GList *form_field_mapping;
- GList *annots_mapping;
-
+ gboolean include_selection;
cairo_surface_t *selection;
GdkRegion *selection_region;
EvRectangle selection_points;
EvSelectionStyle selection_style;
GdkColor base;
- GdkColor text;
-
- EvRenderFlags flags;
+ GdkColor text;
};
struct _EvJobRenderClass
{
EvJobClass parent_class;
+};
- void (* page_ready) (EvJobRender *job);
+typedef enum {
+ EV_PAGE_DATA_INCLUDE_NONE = 0,
+ EV_PAGE_DATA_INCLUDE_LINKS = 1 << 0,
+ EV_PAGE_DATA_INCLUDE_TEXT = 1 << 1,
+ EV_PAGE_DATA_INCLUDE_IMAGES = 1 << 2,
+ EV_PAGE_DATA_INCLUDE_FORMS = 1 << 3,
+ EV_PAGE_DATA_INCLUDE_ANNOTS = 1 << 4,
+ EV_PAGE_DATA_INCLUDE_ALL = (1 << 5) - 1
+} EvJobPageDataFlags;
+
+struct _EvJobPageData
+{
+ EvJob parent;
+
+ gint page;
+ EvJobPageDataFlags flags;
+
+ GList *link_mapping;
+ GList *image_mapping;
+ GList *form_field_mapping;
+ GList *annot_mapping;
+ GdkRegion *text_mapping;
+};
+
+struct _EvJobPageDataClass
+{
+ EvJobClass parent_class;
};
struct _EvJobThumbnail
@@ -387,13 +404,18 @@ EvJob *ev_job_render_new (EvDocument *document,
gint rotation,
gdouble scale,
gint width,
- gint height,
- EvRenderFlags flags);
+ gint height);
void ev_job_render_set_selection_info (EvJobRender *job,
EvRectangle *selection_points,
EvSelectionStyle selection_style,
GdkColor *text,
GdkColor *base);
+/* EvJobPageData */
+GType ev_job_page_data_get_type (void) G_GNUC_CONST;
+EvJob *ev_job_page_data_new (EvDocument *document,
+ gint page,
+ EvJobPageDataFlags flags);
+
/* EvJobThumbnail */
GType ev_job_thumbnail_get_type (void) G_GNUC_CONST;
EvJob *ev_job_thumbnail_new (EvDocument *document,