[evince/gnome-2-30] [presentation] Make inverted colors mode work in presentation mode too
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince/gnome-2-30] [presentation] Make inverted colors mode work in presentation mode too
- Date: Sun, 25 Apr 2010 16:28:04 +0000 (UTC)
commit 3d72278e613853ae1cb80fac8a9a349ec3197866
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 9d71376..baa6bed 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 27c225c..fb40f70 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -3615,6 +3615,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;
@@ -3626,8 +3627,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]