From: Joe Neeman Date: Fri, 24 Sep 2010 22:33:11 +0000 (-0700) Subject: Refactor pure-height calculations. X-Git-Tag: release/2.13.35-1~7 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=eac874ad80855c7f8372c7893394fd63371a7be1;p=lilypond.git Refactor pure-height calculations. --- diff --git a/flower/include/interval.hh b/flower/include/interval.hh index b3a799d074..4a08e27813 100644 --- a/flower/include/interval.hh +++ b/flower/include/interval.hh @@ -72,6 +72,8 @@ struct Interval_t : public Drul_array void set_empty (); void set_full (); + void unite_disjoint (Interval_t h, T padding, Direction d); + bool is_empty () const { return at (LEFT) > at (RIGHT); diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc index 5cd938fd08..7a1440a319 100644 --- a/flower/include/interval.tcc +++ b/flower/include/interval.tcc @@ -107,6 +107,22 @@ Interval_t::unite (Interval_t h) at (RIGHT) = max (h.at (RIGHT), at (RIGHT)); } +/* Unites h and this interval, but in such a way + that h will lie in a particular direction from this + interval, with a minimum amount of space in between. + (That is, h will be translated before we unite, if + that is necessary to prevent overlap. */ +template +void +Interval_t::unite_disjoint (Interval_t h, T padding, Direction d) +{ + T dir = d; + T translation = dir * (at (d) + dir * padding - h.at (-d)); + if (translation > (T) 0) + h.translate (translation); + unite (h); +} + template void Interval_t::intersect (Interval_t h) diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index f4b652c6e2..b4003df2ed 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -35,6 +35,7 @@ #include "system.hh" #include "warn.hh" + void Axis_group_interface::add_element (Grob *me, Grob *e) { @@ -140,6 +141,7 @@ Axis_group_interface::combine_pure_heights (Grob *me, SCM measure_extents, int s return ext; } + // adjacent-pure-heights is a pair of vectors, each of which has one element // for every measure in the score. The first vector stores, for each measure, // the combined height of the elements that are present only when the bar @@ -154,73 +156,62 @@ Axis_group_interface::adjacent_pure_heights (SCM smob) Grob *me = unsmob_grob (smob); Grob *common = unsmob_grob (me->get_object ("pure-Y-common")); - extract_grob_set (me, "pure-relevant-items", items); - extract_grob_set (me, "pure-relevant-spanners", spanners); + extract_grob_set (me, "pure-relevant-grobs", elts); Paper_score *ps = get_root_system (me)->paper_score (); - vector breaks = ps->get_break_indices (); - vector cols = ps->get_columns (); + vector ranks = ps->get_break_ranks (); - SCM begin_line_heights = scm_c_make_vector (breaks.size () - 1, SCM_EOL); - SCM mid_line_heights = scm_c_make_vector (breaks.size () - 1, SCM_EOL); + vector begin_line_heights; + vector mid_line_heights; + begin_line_heights.resize (ranks.size () - 1); + mid_line_heights.resize (ranks.size () - 1); - vsize it_index = 0; - for (vsize i = 0; i + 1 < breaks.size (); i++) + for (vsize i = 0; i < elts.size (); ++i) { - int start = Paper_column::get_rank (cols[breaks[i]]); - int end = Paper_column::get_rank (cols[breaks[i+1]]); + Grob *g = elts[i]; - // Take grobs that are visible with respect to a slightly longer line. - // Otherwise, we will never include grobs at breakpoints which aren't - // end-of-line-visible. - int visibility_end = i + 2 < breaks.size () ? - Paper_column::get_rank (cols[breaks[i+2]]) : end; + if (to_boolean (g->get_property ("cross-staff"))) + continue; - Interval begin_line_iv; - Interval mid_line_iv; + Interval_t rank_span = g->spanned_rank_interval (); + vsize first_break = lower_bound (ranks, (vsize)rank_span[LEFT], less ()); + if (first_break > 0 && ranks[first_break] >= (vsize)rank_span[LEFT]) + first_break--; - for (vsize j = it_index; j < items.size (); j++) + for (vsize j = first_break; j+1 < ranks.size () && (int)ranks[j] <= rank_span[RIGHT]; ++j) { - Item *it = dynamic_cast (items[j]); - int rank = it->get_column ()->get_rank (); + int start = ranks[j]; + int end = ranks[j+1]; - if (rank <= end && it->pure_is_visible (start, visibility_end) - && !to_boolean (it->get_property ("cross-staff"))) - { - Interval dims = items[j]->pure_height (common, start, end); - Interval &target_iv = start == it->get_column ()->get_rank () ? begin_line_iv : mid_line_iv; - - if (!dims.is_empty ()) - target_iv.unite (dims); - } - - if (rank < end) - it_index++; - else if (rank > end) - break; - } + // Take grobs that are visible with respect to a slightly longer line. + // Otherwise, we will never include grobs at breakpoints which aren't + // end-of-line-visible. + int visibility_end = j + 2 < ranks.size () ? ranks[j+2] : end; - for (vsize j = 0; j < spanners.size (); j++) - { - Interval_t rank_span = spanners[j]->spanned_rank_interval (); - if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start - && !to_boolean (spanners[j]->get_property ("cross-staff"))) + if (g->pure_is_visible (start, visibility_end)) { - Interval dims = spanners[j]->pure_height (common, start, end); - + Interval dims = g->pure_height (common, start, end); if (!dims.is_empty ()) { - mid_line_iv.unite (dims); if (rank_span[LEFT] <= start) - begin_line_iv.unite (dims); + begin_line_heights[j].unite (dims); + if (rank_span[RIGHT] > start) + mid_line_heights[j].unite (dims); } } } + } - scm_vector_set_x (begin_line_heights, scm_from_int (i), ly_interval2scm (begin_line_iv)); - scm_vector_set_x (mid_line_heights, scm_from_int (i), ly_interval2scm (mid_line_iv)); + // Convert begin_line_heights and min_line_heights to SCM. + SCM begin_scm = scm_c_make_vector (ranks.size () - 1, SCM_EOL); + SCM mid_scm = scm_c_make_vector (ranks.size () - 1, SCM_EOL); + for (vsize i = 0; i < begin_line_heights.size (); ++i) + { + scm_vector_set_x (begin_scm, scm_from_int (i), ly_interval2scm (begin_line_heights[i])); + scm_vector_set_x (mid_scm, scm_from_int (i), ly_interval2scm (mid_line_heights[i])); } - return scm_cons (begin_line_heights, mid_line_heights); + + return scm_cons (begin_scm, mid_scm); } Interval @@ -231,8 +222,7 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end) Unfortunately, it isn't always true, particularly if there is a VerticalAlignment somewhere in the descendants. - Apart from PianoStaff, which has a fixed VerticalAlignment so it doesn't - count, the only VerticalAlignment comes from Score. This makes it + Usually, the only VerticalAlignment comes from Score. This makes it reasonably safe to assume that if our parent is a VerticalAlignment, we can assume additivity and cache things nicely. */ Grob *p = me->get_parent (Y_AXIS); @@ -240,34 +230,18 @@ Axis_group_interface::relative_pure_height (Grob *me, int start, int end) return Axis_group_interface::cached_pure_height (me, start, end); Grob *common = unsmob_grob (me->get_object ("pure-Y-common")); - extract_grob_set (me, "pure-relevant-items", items); - extract_grob_set (me, "pure-relevant-spanners", spanners); + extract_grob_set (me, "pure-relevant-grobs", elts); Interval r; - - for (vsize i = 0; i < items.size (); i++) - { - Item *it = dynamic_cast (items[i]); - int rank = it->get_column ()->get_rank (); - - if (rank > end) - break; - else if (rank >= start && it->pure_is_visible (start, end) - && !to_boolean (it->get_property ("cross-staff"))) - { - Interval dims = it->pure_height (common, start, end); - if (!dims.is_empty ()) - r.unite (dims); - } - } - - for (vsize i = 0; i < spanners.size (); i++) + for (vsize i = 0; i < elts.size (); i++) { - Interval_t rank_span = spanners[i]->spanned_rank_interval (); + Grob *g = elts[i]; + Interval_t rank_span = g->spanned_rank_interval (); if (rank_span[LEFT] <= end && rank_span[RIGHT] >= start - && !to_boolean (spanners[i]->get_property ("cross-staff"))) + && g->pure_is_visible (start, end) + && !to_boolean (g->get_property ("cross-staff"))) { - Interval dims = spanners[i]->pure_height (common, start, end); + Interval dims = g->pure_height (common, start, end); if (!dims.is_empty ()) r.unite (dims); } @@ -426,44 +400,6 @@ Axis_group_interface::calc_pure_relevant_grobs (SCM smob) return grobs_scm; } -MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_pure_relevant_items, 1); -SCM -Axis_group_interface::calc_pure_relevant_items (SCM smob) -{ - Grob *me = unsmob_grob (smob); - - extract_grob_set (me, "pure-relevant-grobs", elts); - - vector relevant_items; - for (vsize i = 0; i < elts.size (); i++) - if (Item *it = dynamic_cast (elts[i])) - relevant_items.push_back (it); - - vector_sort (relevant_items, Item::less); - - SCM items_scm = Grob_array::make_array (); - unsmob_grob_array (items_scm)->set_array (relevant_items); - return items_scm; -} - -MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_pure_relevant_spanners, 1); -SCM -Axis_group_interface::calc_pure_relevant_spanners (SCM smob) -{ - Grob *me = unsmob_grob (smob); - - extract_grob_set (me, "pure-relevant-grobs", elts); - - vector relevant_spanners; - for (vsize i = 0; i < elts.size (); i++) - if (dynamic_cast (elts[i])) - relevant_spanners.push_back (elts[i]); - - SCM spanners_scm = Grob_array::make_array (); - unsmob_grob_array (spanners_scm)->set_array (relevant_spanners); - return spanners_scm; -} - MAKE_SCHEME_CALLBACK (Axis_group_interface, calc_pure_y_common, 1); SCM Axis_group_interface::calc_pure_y_common (SCM smob) @@ -542,7 +478,7 @@ Axis_group_interface::get_children (Grob *me, vector *found) } } -bool +static bool staff_priority_less (Grob * const &g1, Grob * const &g2) { Real priority_1 = robust_scm2double (g1->get_property ("outside-staff-priority"), -infinity_f); diff --git a/lily/constrained-breaking.cc b/lily/constrained-breaking.cc index a7fac5a30d..eda697e56b 100644 --- a/lily/constrained-breaking.cc +++ b/lily/constrained-breaking.cc @@ -432,7 +432,7 @@ Constrained_breaking::initialize () Interval first_line = line_dimensions_int (pscore_->layout (), 0); Interval other_lines = line_dimensions_int (pscore_->layout (), 1); /* do all the rod/spring problems */ - breaks_ = pscore_->find_break_indices (); + breaks_ = pscore_->get_break_indices (); all_ = pscore_->root_system ()->used_columns (); lines_.resize (breaks_.size (), breaks_.size (), Line_details ()); vector forces = get_line_forces (all_, diff --git a/lily/grob.cc b/lily/grob.cc index 5047b35be0..882808180c 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -482,6 +482,19 @@ Grob::spanned_rank_interval () const return Interval_t (-1, 0); } +bool +Grob::pure_is_visible (int start, int end) const +{ + return true; +} + +/* Sort grobs according to their starting column. */ +bool +Grob::less (Grob *g1, Grob *g2) +{ + return g1->spanned_rank_interval ()[LEFT] < g2->spanned_rank_interval ()[LEFT]; +} + /**************************************************************** REFPOINTS ****************************************************************/ diff --git a/lily/include/grob.hh b/lily/include/grob.hh index 3d211964a4..96134a05d5 100644 --- a/lily/include/grob.hh +++ b/lily/include/grob.hh @@ -141,7 +141,9 @@ public: void fixup_refpoint (); virtual Interval_t spanned_rank_interval () const; + virtual bool pure_is_visible (int start, int end) const; bool check_cross_staff (Grob *common); + static bool less (Grob *g1, Grob *g2); }; /* smob utilities */ diff --git a/lily/include/item.hh b/lily/include/item.hh index 8f5dd180f0..e80d1f8fd4 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -40,9 +40,8 @@ public: static bool is_non_musical (Grob *); static bool break_visible(Grob *); - static bool less (Grob * const&, Grob * const&); bool is_broken () const; - bool pure_is_visible (int start, int end) const; + virtual bool pure_is_visible (int start, int end) const; Direction break_status_dir () const; diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh index 2b98fbbbf4..e8309be265 100644 --- a/lily/include/paper-score.hh +++ b/lily/include/paper-score.hh @@ -33,6 +33,7 @@ class Paper_score : public Music_output mutable vector cols_; mutable vector break_indices_; + mutable vector break_ranks_; public: Paper_score (Output_def *); @@ -43,11 +44,12 @@ public: void typeset_system (System *); vector calc_breaking (); - vector find_break_indices () const; vector get_break_indices () const; + vector get_break_ranks () const; vector get_columns () const; SCM get_paper_systems (); protected: + void find_break_indices () const; virtual void process (); virtual void derived_mark () const; diff --git a/lily/item.cc b/lily/item.cc index 0f188ce59e..f503d98c48 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -253,12 +253,6 @@ Item::pure_height (Grob *g, int start, int end) return cached_pure_height_ + pure_relative_y_coordinate (g, start, end); } -bool -Item::less (Grob * const &g1, Grob * const &g2) -{ - return dynamic_cast (g1)->get_column ()->get_rank () < dynamic_cast (g2)->get_column ()->get_rank (); -} - ADD_INTERFACE (Item, "Grobs can be distinguished in their role in the horizontal" " spacing. Many grobs define constraints on the spacing by" diff --git a/lily/paper-score.cc b/lily/paper-score.cc index 4c2719a91f..611af4125c 100644 --- a/lily/paper-score.cc +++ b/lily/paper-score.cc @@ -69,26 +69,24 @@ Paper_score::typeset_system (System *system) system->unprotect (); } - -vector +void Paper_score::find_break_indices () const { - vector all = root_system ()->used_columns (); - vector retval; + cols_ = root_system ()->used_columns (); + break_indices_.clear (); + break_ranks_.clear (); - for (vsize i = 0; i < all.size (); i++) + for (vsize i = 0; i < cols_.size (); i++) { - Item *it = dynamic_cast (all[i]); - if (Paper_column::is_breakable (all[i]) + Item *it = dynamic_cast (cols_[i]); + if (Paper_column::is_breakable (cols_[i]) && (i == 0 || it->find_prebroken_piece (LEFT)) - && (i == all.size () - 1 || it->find_prebroken_piece (RIGHT))) - retval.push_back (i); + && (i == cols_.size () - 1 || it->find_prebroken_piece (RIGHT))) + { + break_indices_.push_back (i); + break_ranks_.push_back (it->get_column ()->get_rank ()); + } } - - cols_ = all; - break_indices_ = retval; - - return retval; } vector @@ -107,6 +105,14 @@ Paper_score::get_columns () const return cols_; } +vector +Paper_score::get_break_ranks () const +{ + if (break_ranks_.empty ()) + find_break_indices (); + return break_ranks_; +} + vector Paper_score::calc_breaking () { diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 4eeb3812c7..3d2af32d47 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -111,9 +111,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (ambitus-interface axis-group-interface break-aligned-interface)))))) @@ -274,9 +272,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (align-interface axis-group-interface bass-figure-alignment-interface)))))) @@ -292,9 +288,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface side-position-interface)))))) @@ -321,9 +315,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface)))))) @@ -662,9 +654,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface dynamic-interface dynamic-line-spanner-interface @@ -1266,9 +1256,7 @@ (X-extent . ,ly:axis-group-interface::width) (meta . ((class . Paper_column) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface font-interface paper-column-interface @@ -1284,9 +1272,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface note-collision-interface)))))) @@ -1298,9 +1284,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface note-column-interface separation-item-interface)))))) @@ -1403,9 +1387,7 @@ ;; (font-size . -6) (font-name . "sans") (Y-extent . #f) (meta . ((class . Paper_column) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface font-interface paper-column-interface @@ -1657,9 +1639,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) @@ -1702,9 +1682,7 @@ (Y-extent . ,ly:axis-group-interface::height) (meta . ((class . Item) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (bar-line-interface font-interface span-bar-interface)))))) @@ -1888,9 +1866,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) @@ -1904,8 +1880,6 @@ (Y-extent . ,ly:system::height) (meta . ((class . System) (object-callbacks . ((pure-relevant-grobs . ,ly:system::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners) (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (axis-group-interface system-interface)))))) @@ -2256,9 +2230,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface piano-pedal-interface side-position-interface)))))) @@ -2284,8 +2256,6 @@ (meta . ((class . Spanner) (object-callbacks . ((Y-common . ,ly:axis-group-interface::calc-y-common) (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners) (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common))) (interfaces . (align-interface axis-group-interface)))))) @@ -2308,9 +2278,7 @@ (object-callbacks . ( (X-common . ,ly:axis-group-interface::calc-x-common) (pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface hara-kiri-group-spanner-interface)))))) @@ -2369,9 +2337,7 @@ (Y-offset . ,ly:side-position-interface::y-aligned-side) (meta . ((class . Spanner) (object-callbacks . ((pure-Y-common . ,ly:axis-group-interface::calc-pure-y-common) - (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs) - (pure-relevant-items . ,ly:axis-group-interface::calc-pure-relevant-items) - (pure-relevant-spanners . ,ly:axis-group-interface::calc-pure-relevant-spanners))) + (pure-relevant-grobs . ,ly:axis-group-interface::calc-pure-relevant-grobs))) (interfaces . (axis-group-interface side-position-interface volta-interface))))))