diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2008-04-14 17:07:39 (GMT) |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@src.gnome.org> | 2008-04-14 17:07:39 (GMT) |
commit | b8aebf2e1ba5b4f9ff1e1256b28acb3e23947c51 (patch) | |
tree | f7d8b818735e00a7411fc902af3048df8d0459ac /shell/ev-view.c | |
parent | 1aac2d41f056e15fefd248d67b2765da3a03ca1d (diff) |
Add EvPage so that we can hold a reference to the backend page. Form
2008-04-14 Carlos Garcia Campos <carlosgc@gnome.org>
* libdocument/Makefile.am:
* libdocument/ev-page.[ch]:
* libdocument/ev-render-context.[ch]: (ev_render_context_dispose),
(ev_render_context_new), (ev_render_context_set_page):
* libdocument/ev-form-field.[ch]: (ev_form_field_init),
(ev_form_field_finalize), (ev_form_field_class_init):
* libdocument/ev-document-forms.[ch]:
(ev_document_forms_get_form_fields):
* libdocument/ev-document.[ch]: (ev_document_get_page),
(ev_document_get_page_size), (ev_document_get_page_label):
* shell/ev-jobs.[ch]: (ev_job_thumbnail_dispose),
(ev_job_render_run), (ev_job_thumbnail_new),
(ev_job_thumbnail_run), (ev_job_print_run):
* shell/ev-page-cache.c: (ev_page_cache_new):
* shell/ev-pixbuf-cache.c: (job_page_ready_cb), (job_finished_cb),
(check_job_size_and_unref), (add_job):
* shell/ev-sidebar-thumbnails.c: (add_range):
* shell/ev-view.c: (ev_view_form_field_get_region),
(ev_view_form_field_button_create_widget),
(ev_view_form_field_text_save), (ev_view_form_field_choice_save),
(ev_view_handle_form_field), (ev_view_size_allocate),
(get_selected_text):
* shell/ev-window.c: (ev_window_refresh_window_thumbnail):
* backend/pdf/ev-poppler.cc: (pdf_document_get_page_size),
(pdf_document_get_page), (pdf_document_get_page_label),
(pdf_document_render), (pdf_document_get_info),
(pdf_document_document_iface_init),
(pdf_document_thumbnails_get_thumbnail),
(pdf_document_thumbnails_get_dimensions),
(pdf_document_file_exporter_do_page),
(pdf_selection_render_selection),
(pdf_selection_get_selected_text),
(pdf_selection_get_selection_region),
(pdf_selection_get_selection_map),
(pdf_document_forms_get_form_fields),
(pdf_document_forms_form_field_text_get_text),
(pdf_document_forms_form_field_text_set_text),
(pdf_document_forms_form_field_button_set_state),
(pdf_document_forms_form_field_button_get_state),
(pdf_document_forms_form_field_choice_get_item),
(pdf_document_forms_form_field_choice_get_n_items),
(pdf_document_forms_form_field_choice_is_item_selected),
(pdf_document_forms_form_field_choice_select_item),
(pdf_document_forms_form_field_choice_toggle_item),
(pdf_document_forms_form_field_choice_unselect_all),
(pdf_document_forms_form_field_choice_set_text),
(pdf_document_forms_form_field_choice_get_text):
* backend/ps/ev-spectre.c: (ps_document_get_page),
(ps_document_get_page_size), (ps_document_get_page_label),
(ps_document_render), (ps_document_document_iface_init),
(ps_document_file_exporter_do_page):
* backend/tiff/tiff-document.c: (tiff_document_get_page_size),
(tiff_document_render), (tiff_document_render_pixbuf),
(tiff_document_file_exporter_do_page):
* backend/pixbuf/pixbuf-document.c:
(pixbuf_document_get_page_size):
* backend/comics/comics-document.c:
(comics_document_get_page_size), (comics_document_render_pixbuf):
* backend/djvu/djvu-document.c: (djvu_document_get_page_size),
(djvu_document_render), (djvu_selection_get_selected_text),
(djvu_document_thumbnails_get_thumbnail),
(djvu_document_file_exporter_do_page),
(djvu_document_find_get_result):
* backend/dvi/dvi-document.c: (dvi_document_get_page_size),
(dvi_document_render), (dvi_document_thumbnails_get_dimensions),
(dvi_document_thumbnails_get_thumbnail),
(dvi_document_file_exporter_do_page):
* backend/impress/impress-document.c:
(impress_document_get_page_size),
(impress_document_render_pixbuf):
* thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
Add EvPage so that we can hold a reference to the backend
page. Form fields keep now a reference to the poppler page
improving performance since we don't have to create/destroy the
poppler field for every form operation. This will be needed for
annotations too.
svn path=/trunk/; revision=3004
Diffstat (limited to 'shell/ev-view.c')
-rw-r--r-- | shell/ev-view.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index 1a76442..f984396 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1658,9 +1658,9 @@ ev_view_form_field_get_region (EvView *view, GList *forms_mapping; forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, - field->page); + field->page->index); ev_form_field_mapping_get_area (forms_mapping, field, &field_area); - doc_rect_to_view_rect (view, field->page, &field_area, &view_area); + doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area); view_area.x -= view->scroll_x; view_area.y -= view->scroll_y; @@ -1711,7 +1711,7 @@ ev_view_form_field_button_create_widget (EvView *view, * we need to update also the region for the current selected item */ forms_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, - field->page); + field->page->index); for (l = forms_mapping; l; l = g_list_next (l)) { EvFormField *button = ((EvFormFieldMapping *)(l->data))->field; GdkRegion *button_region; @@ -1739,7 +1739,7 @@ ev_view_form_field_button_create_widget (EvView *view, ev_pixbuf_cache_reload_page (view->pixbuf_cache, field_region, - field->page, + field->page->index, view->rotation, view->scale); gdk_region_destroy (field_region); @@ -1769,7 +1769,7 @@ ev_view_form_field_text_save (EvView *view, field->changed = FALSE; ev_pixbuf_cache_reload_page (view->pixbuf_cache, field_region, - field->page, + field->page->index, view->rotation, view->scale); gdk_region_destroy (field_region); @@ -1890,7 +1890,7 @@ ev_view_form_field_choice_save (EvView *view, field->changed = FALSE; ev_pixbuf_cache_reload_page (view->pixbuf_cache, field_region, - field->page, + field->page->index, view->rotation, view->scale); gdk_region_destroy (field_region); @@ -2107,10 +2107,10 @@ ev_view_handle_form_field (EvView *view, g_object_ref (field), (GDestroyNotify)g_object_unref); - form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, field->page); + form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, field->page->index); ev_form_field_mapping_get_area (form_field_mapping, field, &field_area); - doc_rect_to_view_rect (view, field->page, &field_area, &view_area); + doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area); view_area.x -= view->scroll_x; view_area.y -= view->scroll_y; @@ -2310,10 +2310,10 @@ ev_view_size_allocate (GtkWidget *widget, continue; form_field_mapping = ev_pixbuf_cache_get_form_field_mapping (view->pixbuf_cache, - field->page); + field->page->index); ev_form_field_mapping_get_area (form_field_mapping, field, &field_area); - doc_rect_to_view_rect (view, field->page, &field_area, &view_area); + doc_rect_to_view_rect (view, field->page->index, &field_area, &view_area); view_area.x -= view->scroll_x; view_area.y -= view->scroll_y; @@ -5716,15 +5716,19 @@ get_selected_text (EvView *view) EvRenderContext *rc; text = g_string_new (NULL); - rc = ev_render_context_new (view->rotation, 1, view->scale); + rc = ev_render_context_new (NULL, view->rotation, view->scale); ev_document_doc_mutex_lock (); for (l = view->selection_info.selections; l != NULL; l = l->next) { EvViewSelection *selection = (EvViewSelection *)l->data; + EvPage *page; gchar *tmp; - ev_render_context_set_page (rc, selection->page); + page = ev_document_get_page (view->document, selection->page); + ev_render_context_set_page (rc, page); + g_object_unref (page); + tmp = ev_selection_get_selected_text (EV_SELECTION (view->document), rc, selection->style, &(selection->rect)); @@ -5733,10 +5737,10 @@ get_selected_text (EvView *view) g_free (tmp); } - ev_document_doc_mutex_unlock (); - g_object_unref (rc); + ev_document_doc_mutex_unlock (); + normalized_text = g_utf8_normalize (text->str, text->len, G_NORMALIZE_NFKC); g_string_free (text, TRUE); return normalized_text; |