X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fconstrained-breaking.cc;h=ee8b28906c5f6d476e82b49cb3afeba92974b833;hb=e375bc55aea13a75a7ee56248703c30108c25d57;hp=bff8e79df9dfee4e8e459da2fbe8876ea6f9d267;hpb=4bb29573149a0ffa1f881c5e38a0fe68e9e76b67;p=lilypond.git diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index bff8e79df9..ee8b28906c 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Joe Neeman + Copyright (C) 2006--2012 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -202,8 +202,10 @@ Constrained_breaking::solve (vsize start, vsize end, vsize sys_count) } } /* if we get to here, just put everything on one line */ - warning (_ ("cannot find line breaking that satisfies constraints")); - ret.push_back (space_line (0, end_brk)); + if (sys_count > 0) { + warning (_ ("cannot find line breaking that satisfies constraints")); + ret.push_back (space_line (0, end_brk)); + } return ret; } @@ -291,9 +293,11 @@ Constrained_breaking::line_details (vsize start, vsize end, vsize sys_count) } /* if we get to here, just put everything on one line */ - Line_details details; - fill_line_details (&details, 0, end_brk); - ret.push_back (details); + if (sys_count > 0) { + Line_details details; + fill_line_details (&details, 0, end_brk); + ret.push_back (details); + } return ret; } @@ -517,7 +521,8 @@ Constrained_breaking::fill_line_details (Line_details *const out, vsize start, v out->title_space_ = system_markup_space_; out->inverse_hooke_ = out->full_height () + system_system_space_; - out->footnotes_ = sys->get_footnotes_in_range (start_rank, end_rank); + out->footnote_heights_ = sys->get_footnote_heights_in_range (start_rank, end_rank); + out->in_note_heights_ = sys->get_in_note_heights_in_range (start_rank, end_rank); out->refpoint_extent_ = sys->pure_refpoint_extent (start_rank, end_rank); if (out->refpoint_extent_.is_empty ()) @@ -554,7 +559,15 @@ Line_details::Line_details (Prob *pb, Output_def *paper) if (scm_is_pair (footnotes)) for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s)) - footnotes_.push_back (unsmob_stencil (scm_cadar (s))); + { + Stencil *sten = unsmob_stencil (scm_caddar (s)); + if (!sten) + { + programming_error ("expecting stencil, got empty pointer"); + continue; + } + footnote_heights_.push_back (sten->extent (Y_AXIS).length ()); + } last_column_ = 0; force_ = 0;