aboutsummaryrefslogtreecommitdiff
path: root/libstorycode/narrative.c
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2020-01-21 23:29:44 +0100
committerThomas White <taw@bitwiz.me.uk>2020-01-21 23:29:44 +0100
commitdb275d5f5503124d353393d78e899e2ecfdf03c3 (patch)
treef1a6cf53dde5b6ab1d0b0f7bb400557c1436dfb8 /libstorycode/narrative.c
parent161ff9ecc9be47e9016ef5e347d347f7a336765b (diff)
Add basic timing ruler
Diffstat (limited to 'libstorycode/narrative.c')
-rw-r--r--libstorycode/narrative.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/libstorycode/narrative.c b/libstorycode/narrative.c
index c9c94d6..6bedd30 100644
--- a/libstorycode/narrative.c
+++ b/libstorycode/narrative.c
@@ -766,6 +766,26 @@ static double timing_from_wordcount(struct narrative_item *item)
}
+/* Find the position (in units of narrative items) of time 'minutes' */
+double narrative_find_time_pos(Narrative *n, double minutes)
+{
+ int i;
+ double t = 0.0;
+
+ if ( minutes == 0.0 ) return 0.0;
+
+ for ( i=0; i<n->n_items; i++ ) {
+ double idur = n->items[i].estd_duration;
+ if ( t + idur > minutes ) {
+ /* It's in this item */
+ return (double)i + (minutes - t)/idur;
+ }
+ t += n->items[i].estd_duration;
+ }
+ return n->n_items;
+}
+
+
void update_timing(struct narrative_item *item)
{
switch ( item->type ) {