diff options
-rw-r--r-- | src/render.c | 28 | ||||
-rw-r--r-- | src/wrap.c | 28 | ||||
-rw-r--r-- | src/wrap.h | 2 |
3 files changed, 31 insertions, 27 deletions
diff --git a/src/render.c b/src/render.c index 684f160..2fc90b0 100644 --- a/src/render.c +++ b/src/render.c @@ -141,32 +141,6 @@ static void render_lines(struct frame *fr, cairo_t *cr) } -static void free_line_bits(struct wrap_line *l) -{ - int i; - for ( i=0; i<l->n_boxes; i++ ) { - - switch ( l->boxes[i].type ) { - - case WRAP_BOX_PANGO : - pango_glyph_string_free(l->boxes[i].glyphs); - free(l->boxes[i].text); - break; - - case WRAP_BOX_IMAGE : - break; - - case WRAP_BOX_NOTHING : - break; - - } - - } - - free(l->boxes); -} - - /* Render Level 1 Storycode (no subframes) */ static int render_sc(struct frame *fr) { @@ -176,7 +150,7 @@ static int render_sc(struct frame *fr) PangoContext *pc; for ( i=0; i<fr->n_lines; i++ ) { - free_line_bits(&fr->lines[i]); + wrap_line_free(&fr->lines[i]); } free(fr->lines); fr->lines = NULL; @@ -719,6 +719,32 @@ static void knuth_suboptimal_fit(struct wrap_line *boxes, double line_length, } +void wrap_line_free(struct wrap_line *l) +{ + int i; + for ( i=0; i<l->n_boxes; i++ ) { + + switch ( l->boxes[i].type ) { + + case WRAP_BOX_PANGO : + pango_glyph_string_free(l->boxes[i].glyphs); + free(l->boxes[i].text); + break; + + case WRAP_BOX_IMAGE : + break; + + case WRAP_BOX_NOTHING : + break; + + } + + } + + free(l->boxes); +} + + /* Wrap the StoryCode inside "fr->sc" so that it fits within width "fr->w", * and generate fr->lines */ int wrap_contents(struct frame *fr, PangoContext *pc) @@ -735,6 +761,8 @@ int wrap_contents(struct frame *fr, PangoContext *pc) } knuth_suboptimal_fit(boxes, wrap_w, fr); + free(boxes->boxes); + free(boxes); for ( i=0; i<fr->n_lines; i++ ) { distribute_spaces(&fr->lines[i], wrap_w); @@ -99,4 +99,6 @@ extern void get_cursor_pos(struct frame *fr, size_t pos, double *xposd, double *yposd, double *line_height); +extern void wrap_line_free(struct wrap_line *l); + #endif /* WRAP_H */ |