diff options
author | Thomas White <taw@bitwiz.me.uk> | 2019-08-25 22:30:08 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.me.uk> | 2019-08-25 22:30:08 +0200 |
commit | bef894ac4fc76a7c163fba44a8127162a6c40d2b (patch) | |
tree | 1b035ee4b0e9e56f9ffff8134ca16341497f9f04 /libstorycode/narrative_render_cairo.c | |
parent | 16daa2c43091242b142074405e0beeff16d2b133 (diff) |
Fix *bold* etc
Diffstat (limited to 'libstorycode/narrative_render_cairo.c')
-rw-r--r-- | libstorycode/narrative_render_cairo.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/libstorycode/narrative_render_cairo.c b/libstorycode/narrative_render_cairo.c index 17f22aa..aaa05ee 100644 --- a/libstorycode/narrative_render_cairo.c +++ b/libstorycode/narrative_render_cairo.c @@ -118,8 +118,9 @@ static int add_range(struct narrative_item *item, int *max_chars_removed, if ( *add == NULL ) return 1; } - (*add)[*n_add].start = start; - (*add)[*n_add].end = end; + /* Indices NOT including the markers */ + (*add)[*n_add].start = start+1; + (*add)[*n_add].end = end-1; (*add)[*n_add].type = type; (*n_add)++; @@ -128,12 +129,12 @@ static int add_range(struct narrative_item *item, int *max_chars_removed, /* How many bytes were removed up to idx? */ -int index_before_removal(int *chars_removed, int n_chars_removed, int idx) +int layout_index_to_text(struct narrative_item *item, int idx) { int i; - for ( i=0; i<n_chars_removed; i++ ) { - if ( chars_removed[i] > idx ) break; + for ( i=0; i<item->n_chars_removed; i++ ) { + if ( item->chars_removed[i] > idx ) break; } return idx + i; @@ -141,12 +142,13 @@ int index_before_removal(int *chars_removed, int n_chars_removed, int idx) /* How many bytes were removed up to idx? */ -int index_with_removal(int *chars_removed, int n_chars_removed, int idx) +int text_index_to_layout(struct narrative_item *item, int idx) { int i; - for ( i=0; i<n_chars_removed; i++ ) { - if ( chars_removed[i] > idx ) break; + for ( i=0; i<item->n_chars_removed; i++ ) { + assert(item->chars_removed[i] != idx); + if ( item->chars_removed[i] > idx ) break; } return idx - i; @@ -229,13 +231,9 @@ static void process_tags(struct narrative_item *item, PangoAttrList *attrs) } - attr->start_index = index_with_removal(item->chars_removed, - item->n_chars_removed, - add[i].start); + attr->start_index = text_index_to_layout(item, add[i].start); - attr->end_index = index_with_removal(item->chars_removed, - item->n_chars_removed, - add[i].end) + 1; + attr->end_index = text_index_to_layout(item, add[i].end)+1; pango_attr_list_insert(attrs, attr); |