#include "ev-document-thumbnails.h"
#include "ev-document-links.h"
#include "ev-document-fonts.h"
+#include "ev-selection.h"
#include "ev-async-renderer.h"
static void ev_job_init (EvJob *job);
job->pixbuf = NULL;
}
+ if (job->rc) {
+ g_object_unref (job->rc);
+ job->rc = NULL;
+ }
+
(* G_OBJECT_CLASS (ev_job_render_parent_class)->dispose) (object);
}
EvJob *
-ev_job_render_new (EvDocument *document,
- gint page,
- double scale,
- gint width,
- gint height,
- gboolean include_links)
+ev_job_render_new (EvDocument *document,
+ EvRenderContext *rc,
+ gint width,
+ gint height,
+ EvRectangle *selection_points,
+ gboolean include_links,
+ gboolean include_text,
+ gboolean include_selection)
{
EvJobRender *job;
+ g_return_val_if_fail (EV_IS_RENDER_CONTEXT (rc), NULL);
+ if (include_selection)
+ g_return_val_if_fail (selection_points != NULL, NULL);
+
job = g_object_new (EV_TYPE_JOB_RENDER, NULL);
EV_JOB (job)->document = g_object_ref (document);
- job->page = page;
- job->scale = scale;
+ job->rc = g_object_ref (rc);
job->target_width = width;
job->target_height = height;
job->include_links = include_links;
+ job->include_text = include_text;
+ job->include_selection = include_selection;
+
+ if (include_selection)
+ job->selection_points = *selection_points;
if (EV_IS_ASYNC_RENDERER (document)) {
EV_JOB (job)->async = TRUE;
if (EV_JOB (job)->async) {
EvAsyncRenderer *renderer = EV_ASYNC_RENDERER (EV_JOB (job)->document);
- ev_async_renderer_render_pixbuf (renderer, job->page, job->scale);
+ ev_async_renderer_render_pixbuf (renderer, job->rc->page, job->rc->scale);
g_signal_connect (EV_JOB (job)->document, "render_finished",
G_CALLBACK (render_finished_cb), job);
} else {
- job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document,
- job->page,
- job->scale);
+ job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, job->rc);
if (job->include_links)
- job->link_mapping = ev_document_get_links (EV_JOB (job)->document, job->page);
+ job->link_mapping = ev_document_get_links (EV_JOB (job)->document, job->rc->page);
+ if (job->include_text && EV_IS_SELECTION (EV_JOB (job)->document))
+ job->text_mapping = ev_selection_get_selection_map (EV_SELECTION (EV_JOB (job)->document), job->rc);
+ if (job->include_selection && EV_IS_SELECTION (EV_JOB (job)->document))
+ ev_selection_render_selection (EV_SELECTION (EV_JOB (job)->document),
+ job->rc,
+ &(job->selection),
+ &(job->selection_points),
+ NULL);
EV_JOB (job)->finished = TRUE;
}
}
EvJob *
-ev_job_thumbnail_new (EvDocument *document,
- gint page,
- gint requested_width)
+ev_job_thumbnail_new (EvDocument *document,
+ gint page,
+ int rotation,
+ gint requested_width)
{
EvJobThumbnail *job;
EV_JOB (job)->document = g_object_ref (document);
job->page = page;
+ job->rotation = rotation;
job->requested_width = requested_width;
return EV_JOB (job);
job->thumbnail =
ev_document_thumbnails_get_thumbnail (EV_DOCUMENT_THUMBNAILS (EV_JOB (job)->document),
job->page,
+ job->rotation,
job->requested_width,
TRUE);
EV_JOB (job)->finished = TRUE;
static void ev_job_fonts_class_init (EvJobFontsClass *class) { /* Do Nothing */ }
EvJob *
-ev_job_fonts_new (EvDocument *document,
- GtkTreeModel *model)
+ev_job_fonts_new (EvDocument *document)
{
EvJobFonts *job;
job = g_object_new (EV_TYPE_JOB_FONTS, NULL);
EV_JOB (job)->document = g_object_ref (document);
- job->model = g_object_ref (model);
return EV_JOB (job);
}
ev_document_doc_mutex_lock ();
fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document);
- job->scan_completed = !ev_document_fonts_fill_model (fonts, job->model, 20);
+ job->scan_completed = !ev_document_fonts_scan (fonts, 20);
EV_JOB (job)->finished = TRUE;