[evince] [presentation] Make inverted colors mode work in presentation mode too



commit 46746347b389f78dfd026b511600fbe46b019bc1
Author: Carlos Garcia Campos <carlosgc gnome org>
Date:   Sun Apr 25 18:20:56 2010 +0200

    [presentation] Make inverted colors mode work in presentation mode too
    
    Fixes bug #614693.

 libview/ev-view-presentation.c |   22 ++++++++++++++++++++--
 libview/ev-view-presentation.h |    3 ++-
 shell/ev-window.c              |    8 ++++++--
 3 files changed, 28 insertions(+), 5 deletions(-)
---
diff --git a/libview/ev-view-presentation.c b/libview/ev-view-presentation.c
index 7cf94bd..5df5cfa 100644
--- a/libview/ev-view-presentation.c
+++ b/libview/ev-view-presentation.c
@@ -36,7 +36,8 @@ enum {
 	PROP_0,
 	PROP_DOCUMENT,
 	PROP_CURRENT_PAGE,
-	PROP_ROTATION
+	PROP_ROTATION,
+	PROP_INVERTED_COLORS
 };
 
 enum {
@@ -60,6 +61,7 @@ struct _EvViewPresentation
 	cairo_surface_t       *current_surface;
 	EvDocument            *document;
 	guint                  rotation;
+	gboolean               inverted_colors;
 	EvPresentationState    state;
 	gdouble                scale;
 	gint                   monitor_width;
@@ -323,6 +325,9 @@ job_finished_cb (EvJob              *job,
 {
 	EvJobRender *job_render = EV_JOB_RENDER (job);
 
+	if (pview->inverted_colors)
+		ev_document_misc_invert_surface (job_render->surface);
+
 	if (job != pview->curr_job)
 		return;
 
@@ -1326,6 +1331,9 @@ ev_view_presentation_set_property (GObject      *object,
 	case PROP_ROTATION:
 		pview->rotation = g_value_get_uint (value);
 		break;
+	case PROP_INVERTED_COLORS:
+		pview->inverted_colors = g_value_get_boolean (value);
+		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
 	}
@@ -1401,6 +1409,14 @@ ev_view_presentation_class_init (EvViewPresentationClass *klass)
 							    0, 360, 0,
 							    G_PARAM_WRITABLE |
 							    G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (gobject_class,
+					 PROP_INVERTED_COLORS,
+					 g_param_spec_boolean ("inverted_colors",
+							       "Inverted Colors",
+							       "Whether presentation is displayed with inverted colors",
+							       FALSE,
+							       G_PARAM_WRITABLE |
+							       G_PARAM_CONSTRUCT_ONLY));
 
 	signals[CHANGE_PAGE] =
 		g_signal_new ("change_page",
@@ -1461,7 +1477,8 @@ ev_view_presentation_init (EvViewPresentation *pview)
 GtkWidget *
 ev_view_presentation_new (EvDocument *document,
 			  guint       current_page,
-			  guint       rotation)
+			  guint       rotation,
+			  gboolean    inverted_colors)
 {
 	g_return_val_if_fail (EV_IS_DOCUMENT (document), NULL);
 	g_return_val_if_fail (current_page < ev_document_get_n_pages (document), NULL);
@@ -1470,6 +1487,7 @@ ev_view_presentation_new (EvDocument *document,
 					 "document", document,
 					 "current_page", current_page,
 					 "rotation", rotation,
+					 "inverted_colors", inverted_colors,
 					 NULL));
 }
 
diff --git a/libview/ev-view-presentation.h b/libview/ev-view-presentation.h
index dde9ad8..24553b0 100644
--- a/libview/ev-view-presentation.h
+++ b/libview/ev-view-presentation.h
@@ -42,7 +42,8 @@ GType		ev_view_presentation_get_type	      (void) G_GNUC_CONST;
 
 GtkWidget      *ev_view_presentation_new	      (EvDocument         *document,
 						       guint               current_page,
-						       guint               rotation);
+						       guint               rotation,
+						       gboolean            inverted_colors);
 guint           ev_view_presentation_get_current_page (EvViewPresentation *pview);
 
 G_END_DECLS
diff --git a/shell/ev-window.c b/shell/ev-window.c
index b78c317..a7debed 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -3567,6 +3567,7 @@ ev_window_run_presentation (EvWindow *window)
 	gboolean fullscreen_window = TRUE;
 	guint    current_page;
 	guint    rotation;
+	gboolean inverted_colors;
 
 	if (EV_WINDOW_IS_PRESENTATION (window))
 		return;
@@ -3578,8 +3579,11 @@ ev_window_run_presentation (EvWindow *window)
 
 	current_page = ev_document_model_get_page (window->priv->model);
 	rotation = ev_document_model_get_rotation (window->priv->model);
-	window->priv->presentation_view =
-		ev_view_presentation_new (window->priv->document, current_page, rotation);
+	inverted_colors = ev_document_model_get_inverted_colors (window->priv->model);
+	window->priv->presentation_view = ev_view_presentation_new (window->priv->document,
+								    current_page,
+								    rotation,
+								    inverted_colors);
 	g_signal_connect_swapped (window->priv->presentation_view, "finished",
 				  G_CALLBACK (ev_window_view_presentation_finished),
 				  window);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]