job->thumbnail = NULL;
}
- if (job->rc) {
- g_object_unref (job->rc);
- job->rc = NULL;
- }
-
(* G_OBJECT_CLASS (ev_job_thumbnail_parent_class)->dispose) (object);
}
if (EV_JOB (job)->async) {
EvAsyncRenderer *renderer = EV_ASYNC_RENDERER (EV_JOB (job)->document);
- ev_async_renderer_render_pixbuf (renderer, job->rc->page, job->rc->scale,
+ ev_async_renderer_render_pixbuf (renderer, job->rc->page->index, job->rc->scale,
job->rc->rotation);
g_signal_connect (EV_JOB (job)->document, "render_finished",
G_CALLBACK (render_finished_cb), job);
if (job->include_links && EV_IS_DOCUMENT_LINKS (EV_JOB (job)->document))
job->link_mapping =
ev_document_links_get_links (EV_DOCUMENT_LINKS (EV_JOB (job)->document),
- job->rc->page);
+ job->rc->page->index);
if (job->include_forms && EV_IS_DOCUMENT_FORMS (EV_JOB (job)->document))
job->form_field_mapping =
- ev_document_forms_get_form_fields (EV_DOCUMENT_FORMS (EV_JOB(job)->document),
+ ev_document_forms_get_form_fields (EV_DOCUMENT_FORMS (EV_JOB (job)->document),
job->rc->page);
if (job->include_images && EV_IS_DOCUMENT_IMAGES (EV_JOB (job)->document))
job->image_mapping =
ev_document_images_get_image_mapping (EV_DOCUMENT_IMAGES (EV_JOB (job)->document),
- job->rc->page);
+ job->rc->page->index);
EV_JOB (job)->finished = TRUE;
}
}
EvJob *
-ev_job_thumbnail_new (EvDocument *document,
- EvRenderContext *rc)
+ev_job_thumbnail_new (EvDocument *document,
+ gint page,
+ gint rotation,
+ gdouble scale)
{
EvJobThumbnail *job;
job = g_object_new (EV_TYPE_JOB_THUMBNAIL, NULL);
EV_JOB (job)->document = g_object_ref (document);
- job->rc = g_object_ref (rc);
+ job->page = page;
+ job->rotation = rotation;
+ job->scale = scale;
return EV_JOB (job);
}
void
ev_job_thumbnail_run (EvJobThumbnail *job)
{
+ EvRenderContext *rc;
+ EvPage *page;
+
g_return_if_fail (EV_IS_JOB_THUMBNAIL (job));
ev_document_doc_mutex_lock ();
+ page = ev_document_get_page (EV_JOB (job)->document, job->page);
+ rc = ev_render_context_new (page, job->rotation, job->scale);
+ g_object_unref (page);
+
job->thumbnail =
ev_document_thumbnails_get_thumbnail (EV_DOCUMENT_THUMBNAILS (EV_JOB (job)->document),
- job->rc, TRUE);
- EV_JOB (job)->finished = TRUE;
-
+ rc, TRUE);
+ g_object_unref (rc);
ev_document_doc_mutex_unlock ();
+
+ EV_JOB (job)->finished = TRUE;
}
static void ev_job_fonts_init (EvJobFonts *job) { /* Do Nothing */ }
fc.duplex = FALSE;
fc.pages_per_sheet = MAX (1, job->pages_per_sheet);
- rc = ev_render_context_new (0, 0, 1.0);
+ rc = ev_render_context_new (NULL, 0, 1.0);
ev_document_doc_mutex_lock ();
ev_file_exporter_begin (EV_FILE_EXPORTER (document), &fc);
ev_file_exporter_begin_page (EV_FILE_EXPORTER (document));
for (j = 0; j < job->pages_per_sheet; j++) {
+ EvPage *ev_page;
+
gint p = page + j;
if (p < 0 || p >= n_pages)
break;
+
+ ev_page = ev_document_get_page (document, page_list[p]);
+ ev_render_context_set_page (rc, ev_page);
+ g_object_unref (ev_page);
- ev_render_context_set_page (rc, page_list[p]);
ev_file_exporter_do_page (EV_FILE_EXPORTER (document), rc);
}