316
316
g_signal_connect (EV_JOB (job)->document, "render_finished",
317
317
G_CALLBACK (render_finished_cb), job);
319
ev_document_fc_mutex_lock ();
319
321
job->pixbuf = ev_document_render_pixbuf (EV_JOB (job)->document, job->rc);
320
322
if (job->include_links && EV_IS_DOCUMENT_LINKS (EV_JOB (job)->document))
321
323
job->link_mapping =
406
409
ev_document_doc_mutex_lock ();
408
411
fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document);
412
ev_document_fc_mutex_lock ();
409
413
job->scan_completed = !ev_document_fonts_scan (fonts, 20);
414
ev_document_fc_mutex_unlock ();
411
416
EV_JOB (job)->finished = TRUE;
625
ev_print_job_print_page_in_set (EvJobPrint *job,
628
switch (job->page_set) {
629
case EV_PRINT_PAGE_SET_EVEN:
630
return page % 2 == 0;
631
case EV_PRINT_PAGE_SET_ODD:
632
return page % 2 != 0;
633
case EV_PRINT_PAGE_SET_ALL:
641
ev_job_print_do_page (EvJobPrint *job, gint page)
643
EvDocument *document = EV_JOB (job)->document;
646
rc = ev_render_context_new (0, page, 1.0);
647
ev_file_exporter_do_page (EV_FILE_EXPORTER (document), rc);
607
652
ev_job_print_run (EvJobPrint *job)
622
668
g_error_free (job->error);
623
669
job->error = NULL;
625
fd = g_file_open_tmp ("evince_print.ps.XXXXXX", &job->temp_file, &job->error);
671
filename = g_strdup_printf ("evince_print.%s.XXXXXX", job->format);
672
fd = g_file_open_tmp (filename, &job->temp_file, &job->error);
627
675
EV_JOB (job)->finished = TRUE;
632
680
last_page = ev_print_job_get_last_page (job);
634
682
ev_document_doc_mutex_lock ();
635
ev_ps_exporter_begin (EV_PS_EXPORTER (document),
637
MIN (first_page, last_page),
638
MAX (first_page, last_page),
639
job->width, job->height, FALSE);
683
ev_file_exporter_begin (EV_FILE_EXPORTER (document),
684
g_ascii_strcasecmp (job->format, "pdf") == 0 ?
685
EV_FILE_FORMAT_PDF : EV_FILE_FORMAT_PS,
687
MIN (first_page, last_page),
688
MAX (first_page, last_page),
689
job->width, job->height, FALSE);
640
690
ev_document_doc_mutex_unlock ();
642
for (i = first_page; i <= last_page; i++) {
645
if (job->n_ranges > 0 &&
646
!ev_print_job_print_page (job, i))
649
rc = ev_render_context_new (0, i, 1.0);
651
ev_document_doc_mutex_lock ();
652
ev_ps_exporter_do_page (EV_PS_EXPORTER (document), rc);
653
ev_document_doc_mutex_unlock ();
692
for (i = 0; i < job->copies; i++) {
695
step = job->reverse ? -1 : 1;
696
page = job->reverse ? last_page : first_page;
698
while ((job->reverse && (page >= first_page)) ||
699
(!job->reverse && (page <= last_page))) {
703
if (job->n_ranges > 0 &&
704
!ev_print_job_print_page_in_range (job, page)) {
709
if (!ev_print_job_print_page_in_set (job, page + 1)) {
715
n_pages = job->copies;
717
for (j = 0; j < n_pages; j++) {
718
ev_document_doc_mutex_lock ();
719
ev_job_print_do_page (job, page);
720
ev_document_doc_mutex_unlock ();
658
730
ev_document_doc_mutex_lock ();
659
ev_ps_exporter_end (EV_PS_EXPORTER (document));
731
ev_file_exporter_end (EV_FILE_EXPORTER (document));
660
732
ev_document_doc_mutex_unlock ();