]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/ledger-line-engraver.cc (stop_translation_timestep): new
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 6 Jun 2006 14:37:03 +0000 (14:37 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Tue, 6 Jun 2006 14:37:03 +0000 (14:37 +0000)
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
lily/ledger-line-engraver.cc
lily/staff-symbol-engraver.cc

index 85683a1c7368b98bb3e914ce7575a0aaea355e14..546f6dfdaa35ff4fca8517e0bacb5ea333e37360 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2006-06-06  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
+       * 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.
 
index 550dc5a014ed95ec97da52e2ac4a6a96b7965050..55c6b4bef17b278d80e60d22098b19ea19abbfea 100644 (file)
@@ -14,7 +14,8 @@
 class Ledger_line_engraver : public Engraver
 {
   Spanner *span_;
-
+  vector<Grob*> 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<Spanner *> (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"
index 4eee00b116dd8f0377dd3a7aa7a5784314714842..849b063861f2f06f21af313fea1533fd408ce3c5 100644 (file)
@@ -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.",