Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libview/ev-view-presentation.c22
-rw-r--r--libview/ev-view-presentation.h3
-rw-r--r--shell/ev-window.c8
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);