aboutsummaryrefslogtreecommitdiff
path: root/libstorycode/narrative.c
diff options
context:
space:
mode:
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 ) {