diff options
author | Thomas White <taw@bitwiz.org.uk> | 2014-09-20 23:49:51 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2014-09-20 23:49:51 +0200 |
commit | a2a27a077edc1028d93bf27471218221cd6405de (patch) | |
tree | 92f05a75ecad63f4f24ffa4322e50820f23ca8fe /src/render.c | |
parent | 38828312e6be39941a2f889b36441c5b42bd484a (diff) |
Add gradient backgrounds
Diffstat (limited to 'src/render.c')
-rw-r--r-- | src/render.c | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/src/render.c b/src/render.c index db41402..598a40f 100644 --- a/src/render.c +++ b/src/render.c @@ -253,14 +253,57 @@ static void render_lines(struct frame *fr, cairo_t *cr, ImageStore *is, } -static int draw_frame(cairo_t *cr, struct frame *fr, ImageStore *is, - enum is_size isz) +static void do_background(cairo_t *cr, struct frame *fr) { + cairo_pattern_t *patt = NULL; + cairo_new_path(cr); cairo_rectangle(cr, 0.0, 0.0, fr->w, fr->h); - cairo_set_source_rgba(cr, fr->bgcol[0], fr->bgcol[1], fr->bgcol[2], - fr->bgcol[3]); + + switch ( fr->grad ) { + + case GRAD_NONE: + cairo_set_source_rgba(cr, fr->bgcol[0], + fr->bgcol[1], + fr->bgcol[2], + fr->bgcol[3]); + break; + + case GRAD_VERT: + patt = cairo_pattern_create_linear(0.0, 0.0, + 0.0, fr->h); + cairo_pattern_add_color_stop_rgb(patt, 0.0, fr->bgcol[0], + fr->bgcol[1], + fr->bgcol[2]); + cairo_pattern_add_color_stop_rgb(patt, 1.0, fr->bgcol2[0], + fr->bgcol2[1], + fr->bgcol2[2]); + cairo_set_source(cr, patt); + break; + + case GRAD_HORIZ: + patt = cairo_pattern_create_linear(0.0, 0.0, + fr->w, 0.0); + cairo_pattern_add_color_stop_rgb(patt, 0.0, fr->bgcol[0], + fr->bgcol[1], + fr->bgcol[2]); + cairo_pattern_add_color_stop_rgb(patt, 1.0, fr->bgcol2[0], + fr->bgcol2[1], + fr->bgcol2[2]); + cairo_set_source(cr, patt); + break; + + } + cairo_fill(cr); + if ( patt != NULL ) cairo_pattern_destroy(patt); +} + + +static int draw_frame(cairo_t *cr, struct frame *fr, ImageStore *is, + enum is_size isz) +{ + do_background(cr, fr); if ( fr->trouble ) { cairo_new_path(cr); |