+/* EvJobPageData */
+static void
+ev_job_page_data_init (EvJobPageData *job)
+{
+ EV_JOB (job)->run_mode = EV_JOB_RUN_THREAD;
+}
+
+static gboolean
+ev_job_page_data_run (EvJob *job)
+{
+ EvJobPageData *job_pd = EV_JOB_PAGE_DATA (job);
+ EvPage *ev_page;
+
+ ev_debug_message (DEBUG_JOBS, "page: %d (%p)", job_pd->page, job);
+ ev_profiler_start (EV_PROFILE_JOBS, "%s (%p)", EV_GET_TYPE_NAME (job), job);
+
+ ev_document_doc_mutex_lock ();
+ ev_page = ev_document_get_page (job->document, job_pd->page);
+
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_TEXT_MAPPING) && EV_IS_DOCUMENT_TEXT (job->document))
+ job_pd->text_mapping =
+ ev_document_text_get_text_mapping (EV_DOCUMENT_TEXT (job->document), ev_page);
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_TEXT) && EV_IS_DOCUMENT_TEXT (job->document))
+ job_pd->text =
+ ev_document_text_get_text (EV_DOCUMENT_TEXT (job->document), ev_page);
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_TEXT_LAYOUT) && EV_IS_DOCUMENT_TEXT (job->document))
+ ev_document_text_get_text_layout (EV_DOCUMENT_TEXT (job->document),
+ ev_page,
+ &(job_pd->text_layout),
+ &(job_pd->text_layout_length));
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_LINKS) && EV_IS_DOCUMENT_LINKS (job->document))
+ job_pd->link_mapping =
+ ev_document_links_get_links (EV_DOCUMENT_LINKS (job->document), ev_page);
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_FORMS) && EV_IS_DOCUMENT_FORMS (job->document))
+ job_pd->form_field_mapping =
+ ev_document_forms_get_form_fields (EV_DOCUMENT_FORMS (job->document),
+ ev_page);
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_IMAGES) && EV_IS_DOCUMENT_IMAGES (job->document))
+ job_pd->image_mapping =
+ ev_document_images_get_image_mapping (EV_DOCUMENT_IMAGES (job->document),
+ ev_page);
+ if ((job_pd->flags & EV_PAGE_DATA_INCLUDE_ANNOTS) && EV_IS_DOCUMENT_ANNOTATIONS (job->document))
+ job_pd->annot_mapping =
+ ev_document_annotations_get_annotations (EV_DOCUMENT_ANNOTATIONS (job->document),
+ ev_page);
+ g_object_unref (ev_page);
+ ev_document_doc_mutex_unlock ();
+
+ ev_job_succeeded (job);
+
+ return FALSE;
+}
+
+static void
+ev_job_page_data_class_init (EvJobPageDataClass *class)
+{
+ EvJobClass *job_class = EV_JOB_CLASS (class);
+
+ job_class->run = ev_job_page_data_run;
+}
+
+EvJob *
+ev_job_page_data_new (EvDocument *document,
+ gint page,
+ EvJobPageDataFlags flags)
+{
+ EvJobPageData *job;
+
+ ev_debug_message (DEBUG_JOBS, "%d", page);
+
+ job = g_object_new (EV_TYPE_JOB_PAGE_DATA, NULL);
+
+ EV_JOB (job)->document = g_object_ref (document);
+ job->page = page;
+ job->flags = flags;
+
+ return EV_JOB (job);
+}
+