]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/span-arpeggio-engraver.cc
Run `make grand-replace'.
[lilypond.git] / lily / span-arpeggio-engraver.cc
index 998d2693a27367066aa49d6d2a2ace357ff0d288..07958a8a3e8da03bc8b7ad07c64160bb94a61db4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2000--2006 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c) 2000--2008 Jan Nieuwenhuizen <janneke@gnu.org>
 
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 */
@@ -13,6 +13,7 @@
 #include "pointer-group-interface.hh"
 #include "side-position-interface.hh"
 #include "staff-symbol-referencer.hh"
+#include "item.hh"
 
 /**
    Make arpeggios that span multiple staves.  Catch arpeggios, and span a
@@ -30,7 +31,7 @@ protected:
 
 private:
   Item *span_arpeggio_;
-  Link_array<Grob> arpeggios_;
+  vector<Grob*> arpeggios_;
 };
 
 Span_arpeggio_engraver::Span_arpeggio_engraver ()
@@ -57,7 +58,10 @@ Span_arpeggio_engraver::process_acknowledged ()
   */
   if (!span_arpeggio_ && arpeggios_.size () > 1
       && to_boolean (get_property ("connectArpeggios")))
-    span_arpeggio_ = make_item ("Arpeggio", SCM_EOL);
+    {
+      span_arpeggio_ = make_item ("Arpeggio", SCM_EOL);
+      span_arpeggio_->set_property ("cross-staff", SCM_BOOL_T);
+    }
 }
 
 void
@@ -72,12 +76,12 @@ Span_arpeggio_engraver::stop_translation_timestep ()
       for (vsize j = 0; j < arpeggios_.size (); j++)
        {
          extract_grob_set (arpeggios_[j], "stems", stems);
-         for (vsize i = stems.size (); i--;)
+         for (vsize i = 0; i < stems.size (); i++)
            Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("stems"),
                                               stems[i]);
 
          extract_grob_set (arpeggios_[j], "side-support-elements", sses);
-         for (vsize i = sses.size (); i--;)
+         for (vsize i = 0; i < sses.size (); i++)
            Pointer_group_interface::add_grob (span_arpeggio_, ly_symbol2scm ("side-support-elements"),
                                               sses[i]);
 
@@ -88,6 +92,8 @@ Span_arpeggio_engraver::stop_translation_timestep ()
          arpeggios_[j]->set_property ("transparent", SCM_BOOL_T);
        }
 
+
+      span_arpeggio_->set_parent (arpeggios_[0]->get_parent (Y_AXIS), Y_AXIS);
       span_arpeggio_ = 0;
     }
   arpeggios_.clear ();
@@ -97,8 +103,15 @@ Span_arpeggio_engraver::stop_translation_timestep ()
 
 ADD_ACKNOWLEDGER (Span_arpeggio_engraver, arpeggio);
 ADD_TRANSLATOR (Span_arpeggio_engraver,
-               /* doc */ "",
-               /* create */ "Arpeggio",
-               /* accept */ "",
-               /* read */ "connectArpeggios",
-               /* write */ "");
+               /* doc */
+               "Make arpeggios that span multiple staves.",
+
+               /* create */
+               "Arpeggio ",
+
+               /* read */
+               "connectArpeggios ",
+
+               /* write */
+               ""
+               );