From 6110a805773237231dc2005ea00886e47150c3bd Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sat, 13 Apr 2019 10:04:19 +0200 Subject: Add narrative_item_get_height() and narrative_render_item_cairo() --- libstorycode/narrative_render_cairo.c | 54 +++++++++++++++++++++-------------- libstorycode/narrative_render_cairo.h | 4 +++ 2 files changed, 37 insertions(+), 21 deletions(-) diff --git a/libstorycode/narrative_render_cairo.c b/libstorycode/narrative_render_cairo.c index 581cdae..6a78a2f 100644 --- a/libstorycode/narrative_render_cairo.c +++ b/libstorycode/narrative_render_cairo.c @@ -335,6 +335,12 @@ int narrative_wrap_range(Narrative *n, Stylesheet *stylesheet, PangoLanguage *la } +double narrative_item_get_height(Narrative *n, int i) +{ + return n->items[i].h; +} + + double narrative_get_height(Narrative *n) { int i; @@ -389,6 +395,32 @@ static void draw_text(struct narrative_item *item, cairo_t *cr) } +int narrative_render_item_cairo(Narrative*n, cairo_t *cr, int i) +{ + switch ( n->items[i].type ) { + + case NARRATIVE_ITEM_TEXT : + case NARRATIVE_ITEM_PRESTITLE : + draw_text(&n->items[i], cr); + break; + + case NARRATIVE_ITEM_BP : + draw_text(&n->items[i], cr); + break; + + case NARRATIVE_ITEM_SLIDE : + draw_slide(&n->items[i], cr); + break; + + default : + return 1; + + } + + return 0; +} + + /* NB You must first call narrative_wrap() */ int narrative_render_cairo(Narrative *n, cairo_t *cr, Stylesheet *stylesheet) { @@ -434,27 +466,7 @@ int narrative_render_cairo(Narrative *n, cairo_t *cr, Stylesheet *stylesheet) cairo_translate(cr, n->space_l, n->space_t); for ( i=0; in_items; i++ ) { - - switch ( n->items[i].type ) { - - case NARRATIVE_ITEM_TEXT : - case NARRATIVE_ITEM_PRESTITLE : - draw_text(&n->items[i], cr); - break; - - case NARRATIVE_ITEM_BP : - draw_text(&n->items[i], cr); - break; - - case NARRATIVE_ITEM_SLIDE : - draw_slide(&n->items[i], cr); - break; - - default : - break; - - } - + narrative_render_item_cairo(n, cr, i); cairo_translate(cr, 0.0, n->items[i].h); } diff --git a/libstorycode/narrative_render_cairo.h b/libstorycode/narrative_render_cairo.h index fe3680a..c62d2e9 100644 --- a/libstorycode/narrative_render_cairo.h +++ b/libstorycode/narrative_render_cairo.h @@ -44,6 +44,10 @@ extern int narrative_wrap_range(Narrative *n, Stylesheet *stylesheet, extern double narrative_get_height(Narrative *n); +extern double narrative_item_get_height(Narrative *n, int i); + +extern int narrative_render_item_cairo(Narrative*n, cairo_t *cr, int i); + extern int narrative_render_cairo(Narrative *n, cairo_t *cr, Stylesheet *stylesheet); -- cgit v1.2.3