]> git.donarmstrong.com Git - lilypond.git/commitdiff
Metronome-mark: with multi measure rest: align at bar.
authorJan Nieuwenhuizen <janneke@gnu.org>
Mon, 14 Jun 2010 19:16:35 +0000 (21:16 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 24 Aug 2010 13:24:25 +0000 (15:24 +0200)
lily/default-bar-line-engraver.cc
lily/metronome-engraver.cc
lily/part-combine-engraver.cc
lily/timing-translator.cc

index c5680c3089e8853d8b2764b0440f6c902f22a9e5..aee53570f3318b0755fcb50c79f4ea5f2e409ebb 100644 (file)
@@ -19,7 +19,6 @@
 
 #include "engraver.hh"
 #include "context.hh"
-#include "multi-measure-rest.hh"
 #include "grob.hh"
 #include "warn.hh"
 
index d71452e286bf067eb29cef184b638ced6f2eaa53..e6a61f175fbef8ed239380dfba86334141c4e8e7 100644 (file)
@@ -39,6 +39,7 @@ public:
 protected:
   Item *text_;
   Grob *support_;
+  Grob *bar_;
 
   SCM last_duration_;
   SCM last_count_;
@@ -57,6 +58,7 @@ Metronome_mark_engraver::Metronome_mark_engraver ()
 {
   text_ = 0;
   support_ = 0;
+  bar_ = 0;
   last_duration_ = SCM_EOL;
   last_count_ = SCM_EOL;
   last_text_ = SCM_EOL;
@@ -76,10 +78,14 @@ Metronome_mark_engraver::acknowledge_break_aligned (Grob_info info)
   Grob *g = info.grob ();
 
   if (text_
-      && !support_
-      && scm_member (g->get_property_data ("break-align-symbol"),
-                    text_->get_property_data ("break-align-symbols"))
-      != SCM_BOOL_F)
+      && g->get_property_data ("break-align-symbol")
+      == ly_symbol2scm ("staff-bar"))
+      bar_ = g;
+  else if (text_
+          && !support_
+          && scm_member (g->get_property_data ("break-align-symbol"),
+                         text_->get_property_data ("break-align-symbols"))
+          != SCM_BOOL_F)
     {
       support_ = g;
       text_->set_parent (g, X_AXIS);
@@ -99,13 +105,10 @@ Metronome_mark_engraver::acknowledge_grob (Grob_info info)
   Grob *g = info.grob ();
 
   if (text_
-      && !support_
       && scm_member (grob_name_scm (g),
                     text_->get_property_data ("non-break-align-symbols"))
       != SCM_BOOL_F)
-    {
       text_->set_parent (g, X_AXIS);
-    }
 }
 
 void
@@ -113,7 +116,11 @@ Metronome_mark_engraver::stop_translation_timestep ()
 {
   if (text_)
     {
-      if (!support_)
+      if (text_->get_parent (X_AXIS)
+         && text_->get_parent (X_AXIS)->internal_has_interface (ly_symbol2scm ("multi-measure-rest-interface"))
+         && bar_)
+       text_->set_parent (bar_, X_AXIS);
+      else if (!support_)
        {
          /*
            Gardner Read "Music Notation", p.278
@@ -131,6 +138,7 @@ Metronome_mark_engraver::stop_translation_timestep ()
                         grob_list_to_grob_array (get_property ("stavesFound")));
       text_ = 0;
       support_ = 0;
+      bar_ = 0;
     }
 }
 
index cebee4ed9e67ed6895be1b4d1edbdec9e5ba42e8..bbc0d059e5a7ccd432cbdc78879d0f208f12fc95 100644 (file)
@@ -20,7 +20,6 @@
 */
 
 #include "engraver.hh"
-#include "multi-measure-rest.hh"
 #include "note-head.hh"
 #include "side-position-interface.hh"
 #include "stem.hh"
index a7f986fb1089deae7cd017fbd14492f3c9824f31..8581d2afd1a994c494543cbfaf4d936366dd8178 100644 (file)
@@ -22,7 +22,6 @@
 #include "warn.hh"
 #include "translator-group.hh"
 #include "global-context.hh"
-#include "multi-measure-rest.hh"
 
 void
 Timing_translator::stop_translation_timestep ()