From b7b746ee13f1fd7a0a69b01484e6d4dabf6d39b7 Mon Sep 17 00:00:00 2001 From: Joe Neeman Date: Tue, 26 Dec 2006 23:48:57 +0200 Subject: [PATCH] Fix pure-estimation during two-pass spacing. (cherry picked from 6a8c839c794cd9e68b8ea2049b5edd6f13ddf4e0 commit) --- lily/align-interface.cc | 6 +++++- lily/include/system.hh | 1 + lily/system.cc | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 736ecb9096..eb02bc864d 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -14,6 +14,7 @@ #include "hara-kiri-group-spanner.hh" #include "grob-array.hh" #include "international.hh" +#include "system.hh" #include "warn.hh" /* @@ -158,7 +159,10 @@ Align_interface::get_extents_aligned_translates (Grob *me, SCM line_break_details = SCM_EOL; if (a == Y_AXIS && me_spanner) { - line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details"); + if (pure) + line_break_details = get_root_system (me)->column (start)->get_property ("line-break-system-details"); + else + line_break_details = me_spanner->get_bound (LEFT)->get_property ("line-break-system-details"); if (!me->get_system () && !pure) me->warning (_ ("vertical alignment called before line-breaking.\n" diff --git a/lily/include/system.hh b/lily/include/system.hh index 2fe740fddb..429de91baa 100644 --- a/lily/include/system.hh +++ b/lily/include/system.hh @@ -43,6 +43,7 @@ public: vector broken_col_range (Item const *, Item const *) const; vector columns () const; + Grob *column (int i) const; void add_column (Paper_column *); void typeset_grob (Grob *); diff --git a/lily/system.cc b/lily/system.cc index ae1abd60c9..8735da1594 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -477,6 +477,17 @@ System::columns () const return columns; } +Grob* +System::column (int which) const +{ + extract_grob_set (this, "columns", columns); + for (vsize i = 0; i < columns.size (); i++) + if (dynamic_cast (columns[i])->get_rank () == which) + return columns[i]; + programming_error ("couldn't find the column of the requested index"); + return columns[0]; +} + Paper_score* System::paper_score () const { -- 2.39.5