X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-jobs.c;h=f6328af64565edae5125b9f84a24ff33ebc3c248;hb=10288dd7e3cb4d0742a32b6327baded62dd0ebfc;hp=4bb0bf6f9db565a2b6a6c4d79dea77f105c3b21c;hpb=e03ccc6269d7e687b4f5a67a0c07a014f301930b;p=evince.git diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c index 4bb0bf6f..f6328af6 100644 --- a/shell/ev-jobs.c +++ b/shell/ev-jobs.c @@ -1,3 +1,4 @@ +#include #include "ev-jobs.h" #include "ev-job-queue.h" #include "ev-document-thumbnails.h" @@ -15,9 +16,6 @@ #include #include #include -#include -#include -#include static void ev_job_init (EvJob *job); static void ev_job_class_init (EvJobClass *class); @@ -405,8 +403,8 @@ ev_job_render_run (EvJobRender *job) job->rc->page); if (job->include_images && EV_IS_DOCUMENT_IMAGES (EV_JOB (job)->document)) job->image_mapping = - ev_document_images_get_images (EV_DOCUMENT_IMAGES (EV_JOB (job)->document), - job->rc->page); + ev_document_images_get_image_mapping (EV_DOCUMENT_IMAGES (EV_JOB (job)->document), + job->rc->page); EV_JOB (job)->finished = TRUE; } @@ -821,6 +819,11 @@ ev_job_print_get_page_list (EvJobPrint *job, gint rsize; gint start, end; + if (job->ranges[i].start == -1) + job->ranges[i].start = 0; + if (job->ranges[i].end == -1) + job->ranges[i].end = max_page; + if (job->ranges[i].start > max_page) continue; @@ -924,33 +927,32 @@ ev_job_print_run (EvJobPrint *job) gint n_copies; step = job->reverse ? -1 * job->pages_per_sheet : job->pages_per_sheet; - page = job->reverse ? (n_pages / job->pages_per_sheet) * job->pages_per_sheet : 0; - n_copies = job->collate ? job->copies : 1; + page = job->reverse ? ((n_pages - 1) / job->pages_per_sheet) * job->pages_per_sheet : 0; + n_copies = job->collate ? 1 : job->copies; while ((job->reverse && (page >= 0)) || (!job->reverse && (page < n_pages))) { gint k; - ev_file_exporter_begin_page (EV_FILE_EXPORTER (document)); - - for (j = 0; j < job->pages_per_sheet; j++) { - gint p = page + j; + for (k = 0; k < n_copies; k++) { + ev_file_exporter_begin_page (EV_FILE_EXPORTER (document)); - if (p < 0 || p >= n_pages) - break; - - ev_render_context_set_page (rc, page_list[p]); + for (j = 0; j < job->pages_per_sheet; j++) { + gint p = page + j; - for (k = 0; k < n_copies; k++) { + if (p < 0 || p >= n_pages) + break; + + ev_render_context_set_page (rc, page_list[p]); ev_file_exporter_do_page (EV_FILE_EXPORTER (document), rc); } - } - ev_file_exporter_end_page (EV_FILE_EXPORTER (document)); + ev_file_exporter_end_page (EV_FILE_EXPORTER (document)); + } page += step; } - if (job->collate) + if (!job->collate) break; }