diff options
author | Thomas White <taw@bitwiz.org.uk> | 2016-03-28 17:28:23 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2016-03-28 17:36:13 +0200 |
commit | 13ab84211488aa422c43756737664dec62bebb90 (patch) | |
tree | b6afc5ea9bd51f16e3db6d2c11f995334de9dffd /src | |
parent | a1737af28e6fc60e94823c283fb5609c0fde7b92 (diff) |
Restore clipping
Diffstat (limited to 'src')
-rw-r--r-- | src/render.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/render.c b/src/render.c index b91509f..2096492 100644 --- a/src/render.c +++ b/src/render.c @@ -216,11 +216,19 @@ static int draw_frame(cairo_t *cr, struct frame *fr, ImageStore *is, /* Actually render the contents */ cairo_translate(cr, fr->pad_l, fr->pad_t); for ( i=0; i<fr->n_paras; i++ ) { + + double cur_h = paragraph_height(fr->paras[i]) + 20.0; + cairo_save(cr); cairo_translate(cr, 0.0, hpos); - render_paragraph(cr, fr->paras[i]); - hpos += paragraph_height(fr->paras[i]) + 20.0; + + if ( (hpos + cur_h > min_y) && (hpos < max_y) ) { + render_paragraph(cr, fr->paras[i]); + } /* else paragraph is not visible */ + + hpos += cur_h + 20.0; cairo_restore(cr); + } cairo_restore(cr); |