diff options
author | Thomas White <taw@bitwiz.me.uk> | 2019-02-25 21:29:20 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.me.uk> | 2019-02-25 21:29:20 +0100 |
commit | 572d0f24e4923cac794e7b2da8632951cd807852 (patch) | |
tree | a4a67af89408e4849e281d258d23bbd0bf6f6c71 /libstorycode/slide_render_cairo.c | |
parent | a779b9a9095cfceaa4a0a8da5b4faaaa98287078 (diff) |
Render background
Diffstat (limited to 'libstorycode/slide_render_cairo.c')
-rw-r--r-- | libstorycode/slide_render_cairo.c | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/libstorycode/slide_render_cairo.c b/libstorycode/slide_render_cairo.c index 05039d9..7e1cc91 100644 --- a/libstorycode/slide_render_cairo.c +++ b/libstorycode/slide_render_cairo.c @@ -159,11 +159,38 @@ static void render_image(struct slide_item *item, cairo_t *cr, int slide_render_cairo(Slide *s, cairo_t *cr, ImageStore *is, Stylesheet *stylesheet, int slide_number, PangoLanguage *lang, PangoContext *pc) { - int i; + int i, r; + enum gradient bg; + double bgcol[4]; + double bgcol2[4]; + cairo_pattern_t *patt = NULL; + + r = stylesheet_get_background(stylesheet, STYEL_SLIDE, &bg, bgcol, bgcol2); + if ( r ) return 1; - /* Overall default background */ + /* Overall background */ cairo_rectangle(cr, 0.0, 0.0, s->logical_w, s->logical_h); - cairo_set_source_rgb(cr, 1.0, 1.0, 1.0); + switch ( bg ) { + + case GRAD_NONE: + cairo_set_source_rgb(cr, bgcol[0], bgcol[1], bgcol[2]); + break; + + case GRAD_VERT: + patt = cairo_pattern_create_linear(0.0, 0.0, 0.0, s->logical_h); + cairo_pattern_add_color_stop_rgb(patt, 0.0, bgcol[0], bgcol[1], bgcol[2]); + cairo_pattern_add_color_stop_rgb(patt, 1.0, bgcol2[0], bgcol2[1], bgcol2[2]); + cairo_set_source(cr, patt); + break; + + case GRAD_HORIZ: + patt = cairo_pattern_create_linear(0.0, 0.0, s->logical_w, 0.0); + cairo_pattern_add_color_stop_rgb(patt, 0.0, bgcol[0], bgcol[1], bgcol[2]); + cairo_pattern_add_color_stop_rgb(patt, 1.0, bgcol2[0], bgcol2[1], bgcol2[2]); + cairo_set_source(cr, patt); + break; + + } cairo_fill(cr); for ( i=0; i<s->n_items; i++ ) { |