aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/render.c28
-rw-r--r--src/wrap.c28
-rw-r--r--src/wrap.h2
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;
diff --git a/src/wrap.c b/src/wrap.c
index 6297e0e..45e1f0e 100644
--- a/src/wrap.c
+++ b/src/wrap.c
@@ -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);
diff --git a/src/wrap.h b/src/wrap.h
index ff79f61..42e34f4 100644
--- a/src/wrap.h
+++ b/src/wrap.h
@@ -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 */