aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2019-04-13 10:04:19 +0200
committerThomas White <taw@bitwiz.me.uk>2019-04-13 10:04:19 +0200
commit6110a805773237231dc2005ea00886e47150c3bd (patch)
tree7ebfeb48e265b34e5b038824a675878e5283b812
parentc58f43bc27b6e7691cc7dd26a4940e6dbad14973 (diff)
Add narrative_item_get_height() and narrative_render_item_cairo()
-rw-r--r--libstorycode/narrative_render_cairo.c54
-rw-r--r--libstorycode/narrative_render_cairo.h4
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; i<n->n_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);