]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/tie-engraver.cc
Doc: Issue 1154: Document tie detail properties
[lilypond.git] / lily / tie-engraver.cc
index 07eb9196c78101a2c58ca5d4b1dabbc77cef9ad8..73fd6bfc91d69d53ddf499f9b355c311cfc50f3a 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1998--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -103,7 +103,10 @@ IMPLEMENT_TRANSLATOR_LISTENER (Tie_engraver, tie);
 void
 Tie_engraver::listen_tie (Stream_event *ev)
 {
-  ASSIGN_EVENT_ONCE (event_, ev);
+  if (!to_boolean (get_property ("skipTypesetting")))
+    {
+      ASSIGN_EVENT_ONCE (event_, ev);
+    }
 }
 
 void Tie_engraver::report_unterminated_tie (Head_event_tuple const &tie_start)
@@ -148,11 +151,11 @@ Tie_engraver::acknowledge_note_head (Grob_info i)
   Grob *h = i.grob ();
 
   now_heads_.push_back (h);
-  for (vsize i = heads_to_tie_.size (); i--;)
+  for (vsize i = 0; i < heads_to_tie_.size (); i++)
     {
       Grob *th = heads_to_tie_[i].head_;
-      Stream_event *right_ev = unsmob_stream_event (h->get_property ("cause"));
-      Stream_event *left_ev = unsmob_stream_event (th->get_property ("cause"));
+      Stream_event *right_ev = Stream_event::unsmob (h->get_property ("cause"));
+      Stream_event *left_ev = Stream_event::unsmob (th->get_property ("cause"));
 
       /*
         maybe should check positions too.
@@ -199,6 +202,7 @@ Tie_engraver::acknowledge_note_head (Grob_info i)
               if (heads_to_tie_[j].end_moment_ == end)
                 heads_to_tie_[j].tie_from_chord_created = true;
             }
+          break;
         }
     }
 
@@ -206,7 +210,7 @@ Tie_engraver::acknowledge_note_head (Grob_info i)
     tie_column_ = make_spanner ("TieColumn", ties_[0]->self_scm ());
 
   if (tie_column_)
-    for (vsize i = ties_.size (); i--;)
+    for (vsize i = 0; i < ties_.size (); i++)
       Tie_column::add_tie (tie_column_, ties_[i]);
 }
 
@@ -258,7 +262,7 @@ Tie_engraver::process_acknowledged ()
     {
       Grob *head = now_heads_[i];
       Stream_event *left_ev
-        = unsmob_stream_event (head->get_property ("cause"));
+        = Stream_event::unsmob (head->get_property ("cause"));
 
       if (!left_ev)
         {
@@ -278,7 +282,7 @@ Tie_engraver::process_acknowledged ()
            !tie_event && !tie_stream_event && scm_is_pair (s);
            s = scm_cdr (s))
         {
-          Stream_event *ev = unsmob_stream_event (scm_car (s));
+          Stream_event *ev = Stream_event::unsmob (scm_car (s));
           if (!ev)
             continue;
 
@@ -373,6 +377,7 @@ ADD_TRANSLATOR (Tie_engraver,
                 "TieColumn ",
 
                 /* read */
+                "skipTypesetting "
                 "tieWaitForNote ",
 
                 /* write */