diff options
-rw-r--r-- | src/render.c | 9 | ||||
-rw-r--r-- | src/wrap.c | 9 | ||||
-rw-r--r-- | src/wrap.h | 1 |
3 files changed, 18 insertions, 1 deletions
diff --git a/src/render.c b/src/render.c index b11b4fd..42898d8 100644 --- a/src/render.c +++ b/src/render.c @@ -123,6 +123,15 @@ static void render_lines(struct frame *fr, cairo_t *cr) /* Render the line */ render_boxes(&fr->lines[i], cr); + if ( fr->lines[i].overfull ) { + cairo_move_to(cr, fr->w, 0.0); + cairo_line_to(cr, fr->w, + pango_units_to_double(fr->lines[i].height)); + cairo_set_source_rgb(cr, 1.0, 0.0, 0.0); + cairo_set_line_width(cr, 4.0); + cairo_stroke(cr); + } + /* FIXME: line spacing */ y_pos += pango_units_to_double(fr->lines[i].height) + 0.0; @@ -438,6 +438,7 @@ static void distribute_spaces(struct wrap_line *l, double w) int i; double total; double sp; + int overfull = 0; total = 0.0; for ( i=0; i<l->n_boxes; i++ ) { @@ -447,9 +448,15 @@ static void distribute_spaces(struct wrap_line *l, double w) sp = (pango_units_from_double(w)-total) / (l->n_boxes-1); for ( i=0; i<l->n_boxes-1; i++ ) { - l->boxes[i].sp = sp; + if ( sp < sp_zp(l->boxes[i].space) ) { + l->boxes[i].sp = sp_zp(l->boxes[i].space); + overfull = 1; + } else { + l->boxes[i].sp = sp; + } } l->boxes[l->n_boxes-1].sp = 0.0; + l->overfull = overfull; } @@ -87,6 +87,7 @@ struct wrap_line int max_boxes; struct wrap_box *boxes; + int overfull; size_t sc_offset; }; |