From c4b192c34c4758bd078d1a212d69c6ae5084d6c8 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Wed, 19 Aug 2009 13:29:40 +0000 Subject: Move part of the EvPageCache to EvDocument The static data about the document is stored now in EvDocument class --- (limited to 'shell') diff --git a/shell/ev-print-operation.c b/shell/ev-print-operation.c index a6f8d53..fe5ef54 100644 --- a/shell/ev-print-operation.c +++ b/shell/ev-print-operation.c @@ -1428,7 +1428,7 @@ ev_print_operation_export_constructor (GType type, construct_params); export = EV_PRINT_OPERATION_EXPORT (object); op = EV_PRINT_OPERATION (object); - export->n_pages = ev_page_cache_get_n_pages (ev_page_cache_get (op->document)); + export->n_pages = ev_document_get_n_pages (op->document); return object; } @@ -1589,7 +1589,7 @@ ev_print_operation_print_begin_print (EvPrintOperationPrint *print, EvPrintOperation *op = EV_PRINT_OPERATION (print); gint n_pages; - n_pages = ev_page_cache_get_n_pages (ev_page_cache_get (op->document)); + n_pages = ev_document_get_n_pages (op->document); gtk_print_operation_set_n_pages (print->op, n_pages); ev_print_operation_update_status (op, -1, n_pages, 0); @@ -1650,7 +1650,7 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print, EvPrintOperation *op = EV_PRINT_OPERATION (print); cairo_t *cr; gdouble cr_width, cr_height; - gint width, height; + gdouble width, height; gtk_print_operation_set_defer_drawing (print->op); @@ -1669,10 +1669,9 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print, cr = gtk_print_context_get_cairo_context (context); cr_width = gtk_print_context_get_width (context); cr_height = gtk_print_context_get_height (context); - ev_page_cache_get_size (ev_page_cache_get (op->document), - page, 0, 1.0, - &width, &height); - cairo_scale (cr, cr_width / (gdouble)width, cr_height / (gdouble)height); + ev_document_get_page_size (op->document, page, + &width, &height); + cairo_scale (cr, cr_width / width, cr_height / height); ev_job_print_set_cairo (EV_JOB_PRINT (print->job_print), cr); ev_job_scheduler_push_job (print->job_print, EV_JOB_PRIORITY_NONE); diff --git a/shell/ev-properties-dialog.c b/shell/ev-properties-dialog.c index f48b967..0ca4661 100644 --- a/shell/ev-properties-dialog.c +++ b/shell/ev-properties-dialog.c @@ -85,7 +85,7 @@ ev_properties_dialog_set_document (EvPropertiesDialog *properties, properties->document = document; - info = ev_page_cache_get_info (ev_page_cache_get (document)); + info = ev_document_get_info (document); if (properties->general_page == NULL) { label = gtk_label_new (_("General")); diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c index 91986f8..8993e5f 100644 --- a/shell/ev-sidebar-links.c +++ b/shell/ev-sidebar-links.c @@ -316,11 +316,11 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar) g_object_unref (link); } } else { - last_page = ev_page_cache_get_n_pages (sidebar->priv->page_cache); + last_page = ev_document_get_n_pages (sidebar->priv->document); } if (last_page == -1) - last_page = ev_page_cache_get_n_pages (sidebar->priv->page_cache); + last_page = ev_document_get_n_pages (sidebar->priv->document); window = gtk_widget_get_toplevel (GTK_WIDGET (sidebar)); if (EV_IS_WINDOW (window)) { @@ -479,8 +479,8 @@ fill_page_labels (GtkTreeModel *tree_model, if (page < 0) return FALSE; - page_label = ev_page_cache_get_page_label (sidebar_links->priv->page_cache, - page); + page_label = ev_document_get_page_label (sidebar_links->priv->document, + page); gtk_tree_store_set (GTK_TREE_STORE (tree_model), iter, EV_DOCUMENT_LINKS_COLUMN_PAGE_LABEL, page_label, -1); diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c index d86e6a5..e43b008 100644 --- a/shell/ev-sidebar-thumbnails.c +++ b/shell/ev-sidebar-thumbnails.c @@ -263,13 +263,11 @@ get_scale_for_page (EvSidebarThumbnails *sidebar_thumbnails, gint page) { EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv; - gint width, height; + gdouble width; - ev_page_cache_get_size (priv->page_cache, - page, 0, - 1.0, &width, &height); - - return (gdouble)THUMBNAIL_WIDTH / (gdouble)width; + ev_document_get_page_size (priv->document, page, &width, NULL); + + return (gdouble)THUMBNAIL_WIDTH / width; } static void @@ -417,7 +415,7 @@ ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails) GdkPixbuf *loading_icon = NULL; gint width, height; - page_label = ev_page_cache_get_page_label (priv->page_cache, i); + page_label = ev_document_get_page_label (priv->document, i); page_string = g_markup_printf_escaped ("%s", page_label); ev_page_cache_get_thumbnail_size (sidebar_thumbnails->priv->page_cache, i, sidebar_thumbnails->priv->rotation, @@ -565,9 +563,8 @@ static gboolean ev_sidebar_thumbnails_use_icon_view (EvSidebarThumbnails *sidebar_thumbnails) { EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv; - if (ev_page_cache_get_n_pages (priv->page_cache) > MAX_ICON_VIEW_PAGE_COUNT) - return FALSE; - return TRUE; + + return (ev_document_get_n_pages (priv->document) <= MAX_ICON_VIEW_PAGE_COUNT); } static void @@ -655,8 +652,8 @@ thumbnail_job_completed_callback (EvJobThumbnail *job, } static void -ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page, - EvDocument *document) +ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page, + EvDocument *document) { EvSidebarThumbnails *sidebar_thumbnails = EV_SIDEBAR_THUMBNAILS (sidebar_page); @@ -665,13 +662,13 @@ ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page, priv->page_cache = ev_page_cache_get (document); if (!EV_IS_DOCUMENT_THUMBNAILS (document) || - ev_page_cache_get_n_pages (priv->page_cache) <= 0 || - ev_page_cache_check_dimensions (priv->page_cache)) { + ev_document_get_n_pages (document) <= 0 || + !ev_page_cache_check_dimensions (priv->page_cache)) { return; } priv->document = document; - priv->n_pages = ev_page_cache_get_n_pages (priv->page_cache); + priv->n_pages = ev_document_get_n_pages (document); priv->loading_icons = g_hash_table_new_full (g_str_hash, g_str_equal, (GDestroyNotify)g_free, diff --git a/shell/ev-window-title.c b/shell/ev-window-title.c index baafa74..2e28c63 100644 --- a/shell/ev-window-title.c +++ b/shell/ev-window-title.c @@ -122,14 +122,11 @@ ev_window_title_update (EvWindowTitle *window_title) { GtkWindow *window = GTK_WINDOW (window_title->window); char *title = NULL, *password_title, *p; - EvPageCache *page_cache; if (window_title->document != NULL) { - char *doc_title; + gchar *doc_title; - page_cache = ev_page_cache_get (window_title->document); - g_return_if_fail (page_cache != NULL); - doc_title = (char *)ev_page_cache_get_title (page_cache); + doc_title = g_strdup (ev_document_get_title (window_title->document)); /* Make sure we get a valid title back */ if (doc_title != NULL) { @@ -139,6 +136,8 @@ ev_window_title_update (EvWindowTitle *window_title) g_utf8_validate (doc_title, -1, NULL)) { title = g_strdup (doc_title); } + + g_free (doc_title); } } diff --git a/shell/ev-window.c b/shell/ev-window.c index 027ddb8..1332122 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -339,11 +339,11 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window) if (document) { has_document = TRUE; - info = ev_page_cache_get_info (ev_window->priv->page_cache); + info = ev_document_get_info (document); } if (has_document && ev_window->priv->page_cache) { - has_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache) > 0; + has_pages = ev_document_get_n_pages (document) > 0; } if (!info || info->fields_mask == 0) { @@ -425,7 +425,7 @@ ev_window_update_actions (EvWindow *ev_window) if (ev_window->priv->document && ev_window->priv->page_cache) { page = ev_page_cache_get_current_page (ev_window->priv->page_cache); - n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache); + n_pages = ev_document_get_n_pages (ev_window->priv->document); has_pages = n_pages > 0; } @@ -802,7 +802,7 @@ ev_window_add_history (EvWindow *window, gint page, EvLink *link) } else { dest = ev_link_dest_new_page (page); action = ev_link_action_new_dest (dest); - page_label = ev_page_cache_get_page_label (window->priv->page_cache, page); + page_label = ev_document_get_page_label (window->priv->document, page); } if (!page_label) @@ -957,7 +957,7 @@ setup_document_from_metadata (EvWindow *window) gint n_pages; gint new_page; - n_pages = ev_page_cache_get_n_pages (window->priv->page_cache); + n_pages = ev_document_get_n_pages (window->priv->document); new_page = CLAMP (g_value_get_int (&page), 0, n_pages - 1); ev_page_cache_set_current_page (window->priv->page_cache, new_page); @@ -972,21 +972,17 @@ setup_document_from_metadata (EvWindow *window) if (ev_metadata_manager_get (uri, "window_width_ratio", &width_ratio, FALSE) && ev_metadata_manager_get (uri, "window_height_ratio", &height_ratio, FALSE)) { - gint document_width; - gint document_height; + gdouble document_width; + gdouble document_height; GdkScreen *screen; gint request_width; gint request_height; - ev_page_cache_get_max_width (window->priv->page_cache, - 0, 1.0, - &document_width); - ev_page_cache_get_max_height (window->priv->page_cache, - 0, 1.0, - &document_height); - - request_width = g_value_get_double (&width_ratio) * document_width; - request_height = g_value_get_double (&height_ratio) * document_height; + ev_document_get_max_page_size (window->priv->document, + &document_width, &document_height); + + request_width = (gint)(g_value_get_double (&width_ratio) * document_width + 0.5); + request_height = (gint)(g_value_get_double (&height_ratio) * document_height + 0.5); screen = gtk_window_get_screen (GTK_WINDOW (window)); @@ -1156,23 +1152,21 @@ ev_window_set_icon_from_thumbnail (EvJobThumbnail *job, static void ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation) { - gint page_width, page_height; + gdouble page_width; gdouble scale; EvDocument *document = ev_window->priv->document; - + if (!EV_IS_DOCUMENT_THUMBNAILS (document) || - ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0 || - ev_page_cache_check_dimensions (ev_window->priv->page_cache)) { + ev_document_get_n_pages (document) <= 0 || + !ev_page_cache_check_dimensions (ev_window->priv->page_cache)) { return; } - + ev_window_clear_thumbnail_job (ev_window); - - ev_page_cache_get_size (ev_window->priv->page_cache, - 0, 0, 1.0, - &page_width, &page_height); - scale = (gdouble)128 / (gdouble)page_width; - + + ev_document_get_page_size (document, 0, &page_width, NULL); + scale = 128. / page_width; + ev_window->priv->thumbnail_job = ev_job_thumbnail_new (document, 0, rotation, scale); g_signal_connect (ev_window->priv->thumbnail_job, "finished", G_CALLBACK (ev_window_set_icon_from_thumbnail), @@ -1214,7 +1208,7 @@ ev_window_setup_document (EvWindow *ev_window) ev_window->priv->document); } - info = ev_page_cache_get_info (ev_window->priv->page_cache); + info = ev_document_get_info (document); update_document_mode (ev_window, info->mode); gtk_widget_grab_focus (ev_window->priv->view); @@ -1245,16 +1239,16 @@ ev_window_set_document (EvWindow *ev_window, EvDocument *document) /* Restart the current page */ page = CLAMP (ev_link_dest_get_page (ev_window->priv->dest), 0, - ev_page_cache_get_n_pages (ev_window->priv->page_cache) - 1); + ev_document_get_n_pages (ev_window->priv->document) - 1); ev_page_cache_set_current_page (ev_window->priv->page_cache, page); g_object_unref (ev_window->priv->dest); ev_window->priv->dest = NULL; } - if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0) { + if (ev_document_get_n_pages (ev_window->priv->document) <= 0) { ev_window_warning_message (ev_window, "%s", _("The document contains no pages")); - } else if (ev_page_cache_check_dimensions (ev_window->priv->page_cache)) { + } else if (!ev_page_cache_check_dimensions (ev_window->priv->page_cache)) { ev_window_warning_message (ev_window, "%s", _("The document contains only empty pages")); } else { @@ -3022,7 +3016,7 @@ ev_window_print_range (EvWindow *ev_window, page_cache = ev_page_cache_get (ev_window->priv->document); current_page = ev_page_cache_get_current_page (page_cache); - document_last_page = ev_page_cache_get_n_pages (page_cache); + document_last_page = ev_document_get_n_pages (ev_window->priv->document); if (!ev_window->priv->print_settings) { ev_window->priv->print_settings = gtk_print_settings_copy ( @@ -3060,13 +3054,8 @@ ev_window_print_range (EvWindow *ev_window, static void ev_window_print (EvWindow *window) { - EvPageCache *page_cache; - gint last_page; - - page_cache = ev_page_cache_get (window->priv->document); - last_page = ev_page_cache_get_n_pages (page_cache); - - ev_window_print_range (window, 1, last_page); + ev_window_print_range (window, 1, + ev_document_get_n_pages (window->priv->document)); } static void @@ -3854,12 +3843,10 @@ ev_window_cmd_go_first_page (GtkAction *action, EvWindow *ev_window) static void ev_window_cmd_go_last_page (GtkAction *action, EvWindow *ev_window) { - int n_pages; - g_return_if_fail (EV_IS_WINDOW (ev_window)); - n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache); - ev_page_cache_set_current_page (ev_window->priv->page_cache, n_pages - 1); + ev_page_cache_set_current_page (ev_window->priv->page_cache, + ev_document_get_n_pages (ev_window->priv->document) - 1); } static void @@ -3869,7 +3856,7 @@ ev_window_cmd_go_forward (GtkAction *action, EvWindow *ev_window) g_return_if_fail (EV_IS_WINDOW (ev_window)); - n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache); + n_pages = ev_document_get_n_pages (ev_window->priv->document); current_page = ev_page_cache_get_current_page (ev_window->priv->page_cache); if (current_page + 10 < n_pages) @@ -4530,7 +4517,7 @@ find_bar_search_changed_cb (EggFindBar *find_bar, if (search_string && search_string[0]) { ev_window->priv->find_job = ev_job_find_new (ev_window->priv->document, ev_page_cache_get_current_page (ev_window->priv->page_cache), - ev_page_cache_get_n_pages (ev_window->priv->page_cache), + ev_document_get_n_pages (ev_window->priv->document), search_string, case_sensitive); g_signal_connect (ev_window->priv->find_job, "finished", @@ -5334,30 +5321,23 @@ window_configure_event_cb (EvWindow *window, GdkEventConfigure *event, gpointer { char *uri = window->priv->uri; GdkWindowState state; - int x, y, width, height, document_width, document_height; + gdouble document_width, document_height; state = gdk_window_get_state (GTK_WIDGET (window)->window); if (!(state & GDK_WINDOW_STATE_FULLSCREEN)) { - gtk_window_get_position (GTK_WINDOW (window), &x, &y); - gtk_window_get_size (GTK_WINDOW (window), &width, &height); - - if (!ev_window_is_empty (window) && window->priv->page_cache) { - ev_page_cache_get_max_width (window->priv->page_cache, - 0, 1.0, - &document_width); - ev_page_cache_get_max_height (window->priv->page_cache, - 0, 1.0, - &document_height); - ev_metadata_manager_set_double (uri, "window_width_ratio", - (double)width / document_width); - ev_metadata_manager_set_double (uri, "window_height_ratio", - (double)height / document_height); - - ev_metadata_manager_set_int (uri, "window_x", x); - ev_metadata_manager_set_int (uri, "window_y", y); - ev_metadata_manager_set_int (uri, "window_width", width); - ev_metadata_manager_set_int (uri, "window_height", height); + if (!ev_window_is_empty (window) && window->priv->document) { + ev_document_get_max_page_size (window->priv->document, + &document_width, &document_height); + ev_metadata_manager_set_double (uri, "window_width_ratio", + (double)event->width / document_width); + ev_metadata_manager_set_double (uri, "window_height_ratio", + (double)event->height / document_height); + + ev_metadata_manager_set_int (uri, "window_x", event->x); + ev_metadata_manager_set_int (uri, "window_y", event->y); + ev_metadata_manager_set_int (uri, "window_width", event->width); + ev_metadata_manager_set_int (uri, "window_height", event->height); } } -- cgit v0.9.1