aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2011-12-09 00:02:51 +0100
committerThomas White <taw@bitwiz.org.uk>2011-12-09 00:02:51 +0100
commitc5be0c1cdc4a3c2241a6e53dab0d1a427872739c (patch)
tree06fb0595b53c4e3c436dbc31db3da041b45dcd92
parent140d35a2c0483b11e141b0ceb9b742bad48d981f (diff)
WIP on splitting
-rw-r--r--src/mainwindow.c40
-rw-r--r--src/presentation.h1
-rw-r--r--src/slide_render.c8
-rw-r--r--src/slideshow.c1
4 files changed, 45 insertions, 5 deletions
diff --git a/src/mainwindow.c b/src/mainwindow.c
index 7e558de..2562c69 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -362,6 +362,11 @@ static gint first_slide_sig(GtkWidget *widget, struct presentation *p)
p->cur_edit_slide = p->slides[0];
notify_slide_changed(p);
+ if ( p->slideshow_linked ) {
+ p->cur_proj_slide = p->cur_edit_slide;
+ notify_slideshow_slide_changed(p);
+ }
+
return FALSE;
}
@@ -376,6 +381,11 @@ static gint prev_slide_sig(GtkWidget *widget, struct presentation *p)
p->cur_edit_slide = p->slides[cur_slide_number-1];
notify_slide_changed(p);
+ if ( p->slideshow_linked ) {
+ p->cur_proj_slide = p->cur_edit_slide;
+ notify_slideshow_slide_changed(p);
+ }
+
return FALSE;
}
@@ -390,6 +400,11 @@ static gint next_slide_sig(GtkWidget *widget, struct presentation *p)
p->cur_edit_slide = p->slides[cur_slide_number+1];
notify_slide_changed(p);
+ if ( p->slideshow_linked ) {
+ p->cur_proj_slide = p->cur_edit_slide;
+ notify_slideshow_slide_changed(p);
+ }
+
return FALSE;
}
@@ -399,6 +414,11 @@ static gint last_slide_sig(GtkWidget *widget, struct presentation *p)
p->cur_edit_slide = p->slides[p->num_slides-1];
notify_slide_changed(p);
+ if ( p->slideshow_linked ) {
+ p->cur_proj_slide = p->cur_edit_slide;
+ notify_slideshow_slide_changed(p);
+ }
+
return FALSE;
}
@@ -657,20 +677,27 @@ static gboolean key_press_sig(GtkWidget *da, GdkEventKey *event,
switch ( event->keyval ) {
- case GDK_KEY_Page_Up :
+ case GDK_KEY_Page_Up :
prev_slide_sig(NULL, p);
break;
- case GDK_KEY_Page_Down :
+ case GDK_KEY_Page_Down :
next_slide_sig(NULL, p);
break;
- case GDK_KEY_Escape :
+ case GDK_KEY_Escape :
if ( p->slideshow != NULL ) end_slideshow(p);
redraw_object(p->editing_object);
p->editing_object = NULL;
break;
+ case GDK_KEY_B :
+ p->slideshow_linked = 1 - p->slideshow_linked;
+ if ( p->slideshow_linked ) {
+ }
+ redraw_overlay(p);
+ break;
+
}
return FALSE;
@@ -851,8 +878,8 @@ static void draw_overlay(cairo_t *cr, struct presentation *p)
if ( (p->drag_status == DRAG_STATUS_DRAGGING)
&& ((p->drag_reason == DRAG_REASON_CREATE)
- || (p->drag_reason == DRAG_REASON_IMPORT)) ) {
-
+ || (p->drag_reason == DRAG_REASON_IMPORT)) )
+ {
cairo_new_path(cr);
cairo_rectangle(cr, p->start_corner_x, p->start_corner_y,
p->drag_corner_x - p->start_corner_x,
@@ -860,6 +887,9 @@ static void draw_overlay(cairo_t *cr, struct presentation *p)
cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
cairo_set_line_width(cr, 0.5);
cairo_stroke(cr);
+ }
+
+ if ( p->slideshow_linked ) {
}
}
diff --git a/src/presentation.h b/src/presentation.h
index 8b4bc6f..addcf7c 100644
--- a/src/presentation.h
+++ b/src/presentation.h
@@ -125,6 +125,7 @@ struct presentation
/* Pointers to the current "editing" and "projection" slides */
struct slide *cur_edit_slide;
struct slide *cur_proj_slide;
+ int slideshow_linked;
/* This is the "native" size of the slide. It only exists to give
* font size some meaning in the context of a somewhat arbitrary DPI */
diff --git a/src/slide_render.c b/src/slide_render.c
index b5637e3..32c4a28 100644
--- a/src/slide_render.c
+++ b/src/slide_render.c
@@ -105,12 +105,19 @@ static cairo_surface_t *render_slide(struct slide *s, int w, int h)
cairo_surface_t *surf;
cairo_t *cr;
int i;
+ cairo_font_options_t *fopts;
surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h);
cr = cairo_create(surf);
cairo_scale(cr, w/s->parent->slide_width, h/s->parent->slide_height);
+ fopts = cairo_font_options_create();
+ cairo_font_options_set_hint_style(fopts, CAIRO_HINT_STYLE_NONE);
+ cairo_font_options_set_hint_metrics(fopts, CAIRO_HINT_METRICS_OFF);
+ cairo_font_options_set_antialias(fopts, CAIRO_ANTIALIAS_SUBPIXEL);
+ cairo_set_font_options(cr, fopts);
+
for ( i=0; i<s->parent->ss->n_bgblocks; i++ ) {
render_bgblock(cr, &s->parent->ss->bgblocks[i]);
}
@@ -124,6 +131,7 @@ static cairo_surface_t *render_slide(struct slide *s, int w, int h)
}
cairo_destroy(cr);
+ cairo_font_options_destroy(fopts);
return surf;
}
diff --git a/src/slideshow.c b/src/slideshow.c
index 8d04fdd..8e3b8ca 100644
--- a/src/slideshow.c
+++ b/src/slideshow.c
@@ -227,6 +227,7 @@ void try_start_slideshow(struct presentation *p)
} /* FIXME: Sensible (configurable) choice of monitor */
p->slideshow = n;
+ p->slideshow_linked = 1;
gtk_window_fullscreen(GTK_WINDOW(n));
gtk_widget_show_all(GTK_WIDGET(n));