From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Fri, 1 Sep 2006 09:08:30 +0000 (+0000)
Subject: * buildscripts/output-distance.py (FileLink.calc_distance): count
X-Git-Tag: release/2.10.0-2~331
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b76b7a662bda941f22b9e94434a973c8f3f7c0fd;p=lilypond.git

* buildscripts/output-distance.py (FileLink.calc_distance): count
orphans in distance too.

* lily/control-track-performer.cc (add_text): new file: generate
the control track.
---

diff --git a/ChangeLog b/ChangeLog
index bcf5cae314..2d57d37734 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-09-01  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
+	* buildscripts/output-distance.py (FileLink.calc_distance): count
+	orphans in distance too.
+
 	* python/midi.c (midi_parse_track): robustness: don't read past
 	end of string.
 
diff --git a/Documentation/user/programming-interface.itely b/Documentation/user/programming-interface.itely
index 4bc023aab2..4536fff21a 100644
--- a/Documentation/user/programming-interface.itely
+++ b/Documentation/user/programming-interface.itely
@@ -197,8 +197,9 @@ AltOff = {
 
 @noindent
 This example may be rewritten to pass in music expressions,
-
-@lilypond[quote,verbatim,ragged-right]
+@c fixme
+@ignore
+i@l ilypond[quote,verbatim,ragged-right]
 withAlt = #(define-music-function (parser location mag music) (number? ly:music?)
   #{ \override Stem #'length = #$(* 7.0 mag)
      \override NoteHead #'font-size =
@@ -209,8 +210,8 @@ withAlt = #(define-music-function (parser location mag music) (number? ly:music?
 
 { c'2 \withAlt #0.5 {c'4 c'}
   \withAlt #1.5 {c' c'} c'2 }
-@end lilypond
-
+@end l ilypond
+@end ignore
 
 @node Void functions
 @subsection Void functions
diff --git a/buildscripts/output-distance.py b/buildscripts/output-distance.py
index fcb8e3731c..1249746e6f 100644
--- a/buildscripts/output-distance.py
+++ b/buildscripts/output-distance.py
@@ -281,9 +281,13 @@ class FileLink:
 
     def calc_distance (self):
         d = 0.0
+
+        orphan_distance = 0.0
         for l in self.system_links.values ():
             d = max (d, l.geometric_distance ())
-        return d
+            orphan_distance += l.orphan_count ()
+            
+        return d + orphan_distance
 
     def distance (self):
         if type (self._distance) != type (0.0):
diff --git a/lily/control-track-performer.cc b/lily/control-track-performer.cc
new file mode 100644
index 0000000000..ec4ef83cdd
--- /dev/null
+++ b/lily/control-track-performer.cc
@@ -0,0 +1,70 @@
+
+
+#include "warn.hh"
+#include "audio-item.hh"
+#include "audio-staff.hh"
+#include "performer.hh"
+#include "string-convert.hh"
+#include "lily-version.hh"
+
+#include "translator.icc"
+
+class Control_track_performer : public Performer
+{
+  Audio_staff *control_track_;
+  vector<Audio_item*> texts_;
+
+  void add_text (Audio_text::Type, string);
+  TRANSLATOR_DECLARATIONS(Control_track_performer);
+protected:
+
+  virtual void initialize ();
+  virtual void acknowledge_audio_element (Audio_element_info info);
+};
+
+
+Control_track_performer::Control_track_performer ()
+{
+  control_track_ = 0;
+}
+
+void
+Control_track_performer::acknowledge_audio_element (Audio_element_info info)
+{
+  if (Audio_tempo *tempo = dynamic_cast<Audio_tempo*> (info.elem_))
+    {
+      control_track_->add_audio_item (tempo);
+    }
+  if (Audio_time_signature * sig = dynamic_cast<Audio_time_signature *> (info.elem_))
+    {
+      control_track_->add_audio_item (sig);
+    }
+}
+
+void
+Control_track_performer::add_text (Audio_text::Type text_type, string str)
+{
+  Audio_item *text = new Audio_text (text_type, str);
+  control_track_->add_audio_item (text);
+  texts_.push_back (text);
+
+  announce_element (Audio_element_info (text, 0));
+  
+}
+
+void
+Control_track_performer::initialize ()
+{
+  control_track_ = new Audio_staff;
+  announce_element (Audio_element_info (control_track_, 0));
+
+  string id_string = String_convert::pad_to (gnu_lilypond_version_string (), 30);
+  
+  add_text (Audio_text::TRACK_NAME, "control track");
+  add_text (Audio_text::TEXT, "creator: ");
+  add_text (Audio_text::TEXT, id_string);
+}
+
+ADD_TRANSLATOR (Control_track_performer, "", "",
+		"",
+		"", "");