From 16650b0059c28ae4ad8623ebad2c1da58d7fdf95 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 6 Jun 2006 14:37:03 +0000 Subject: [PATCH] * lily/ledger-line-engraver.cc (stop_translation_timestep): new function. Delay ledger modifying ledgered grobs to stop_translation_timestep(), to ensure that we're ledgering according to the new spanner. (acknowledge_staff_symbol): don't check for non-NULL staff_sym->get_bound() * lily/staff-symbol-engraver.cc (start_spanner): set left bound on creation. --- ChangeLog | 10 ++++++++++ lily/ledger-line-engraver.cc | 33 +++++++++++++++++++++++---------- lily/staff-symbol-engraver.cc | 12 ++++++++---- 3 files changed, 41 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 85683a1c73..546f6dfdaa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2006-06-06 Han-Wen Nienhuys + * lily/ledger-line-engraver.cc (stop_translation_timestep): new + function. Delay ledger modifying ledgered grobs to + stop_translation_timestep(), to ensure that we're ledgering + according to the new spanner. + (acknowledge_staff_symbol): don't check for non-NULL + staff_sym->get_bound() + + * lily/staff-symbol-engraver.cc (start_spanner): set left bound on + creation. + * Documentation/pictures/GNUmakefile (XPM_FILES): src-wildcard for pictures too. diff --git a/lily/ledger-line-engraver.cc b/lily/ledger-line-engraver.cc index 550dc5a014..55c6b4bef1 100644 --- a/lily/ledger-line-engraver.cc +++ b/lily/ledger-line-engraver.cc @@ -14,7 +14,8 @@ class Ledger_line_engraver : public Engraver { Spanner *span_; - + vector ledgered_grobs_; + public: TRANSLATOR_DECLARATIONS (Ledger_line_engraver); @@ -27,6 +28,7 @@ protected: void start_spanner (); void stop_spanner (); + void stop_translation_timestep (); }; Ledger_line_engraver::Ledger_line_engraver () @@ -38,11 +40,28 @@ void Ledger_line_engraver::start_spanner () { assert (!span_); - span_ = make_spanner ("LedgerLineSpanner", SCM_EOL); + span_ = make_spanner ("LedgerLineSpanner", SCM_EOL); span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); } +void +Ledger_line_engraver::stop_translation_timestep () +{ + if (span_) + { + for (vsize i = 0; i < ledgered_grobs_.size (); i++) + { + if (!to_boolean (ledgered_grobs_[i]->get_property ("no-ledgers"))) + Pointer_group_interface::add_grob (span_, + ly_symbol2scm ("note-heads"), + ledgered_grobs_[i]); + } + } + + ledgered_grobs_.clear (); +} + void Ledger_line_engraver::process_music () { @@ -76,8 +95,7 @@ Ledger_line_engraver::acknowledge_staff_symbol (Grob_info s) Spanner *sym = dynamic_cast (s.grob ()); if (!span_ - || (span_->get_bound (LEFT) != sym->get_bound (LEFT) - && sym->get_bound (LEFT))) + || (span_->get_bound (LEFT) != sym->get_bound (LEFT))) { stop_spanner (); start_spanner (); @@ -87,12 +105,7 @@ Ledger_line_engraver::acknowledge_staff_symbol (Grob_info s) void Ledger_line_engraver::acknowledge_ledgered (Grob_info s) { - if (span_) - { - if (!to_boolean (s.grob ()->get_property ("no-ledgers"))) - Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"), - s.grob ()); - } + ledgered_grobs_.push_back (s.grob ()); } #include "translator.icc" diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 4eee00b116..849b063861 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -56,7 +56,11 @@ void Staff_symbol_engraver::start_spanner () { if (!span_) - span_ = make_spanner ("StaffSymbol", SCM_EOL); + { + span_ = make_spanner ("StaffSymbol", SCM_EOL); + span_->set_bound (LEFT, + unsmob_grob (get_property ("currentCommandColumn"))); + } } void @@ -71,10 +75,8 @@ void Staff_symbol_engraver::stop_translation_timestep () { if ((span_events_[START] || first_start_) - && span_ - && !span_->get_bound (LEFT)) + && span_) { - span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); first_start_ = false; } @@ -109,7 +111,9 @@ Staff_symbol_engraver::acknowledge_grob (Grob_info s) } #include "translator.icc" + ADD_ACKNOWLEDGER (Staff_symbol_engraver, grob); + ADD_TRANSLATOR (Staff_symbol_engraver, /* doc */ "Create the constellation of five (default) " "staff lines.", -- 2.39.5