]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.23
authorfred <fred>
Tue, 26 Mar 2002 22:45:19 +0000 (22:45 +0000)
committerfred <fred>
Tue, 26 Mar 2002 22:45:19 +0000 (22:45 +0000)
14 files changed:
lily/audio-element-info.cc [new file with mode: 0644]
lily/bar-script-engraver.cc
lily/base-span-bar-engraver.cc
lily/engraver-group-engraver.cc
lily/engraver.cc
lily/include/audio-element-info.hh
lily/include/score-element-info.hh
lily/performer-group-performer.cc
lily/score-element-info.cc
lily/score-engraver.cc
lily/staff-margin-engraver.cc
lily/timing-translator.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc

diff --git a/lily/audio-element-info.cc b/lily/audio-element-info.cc
new file mode 100644 (file)
index 0000000..5580b6f
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+  Audio-element-info.cc -- implement Audio_element_info
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "audio-element-info.hh"
+#include "request.hh"
+
+Audio_element_info::Audio_element_info (Audio_element*s_l, Music *r_l)
+{
+  elem_l_ = s_l;
+  req_l_ = r_l;
+}
+
+
+Audio_element_info::Audio_element_info()
+{
+  elem_l_ = 0;
+  req_l_ = 0;
+}
+
+Link_array<Translator>
+Audio_element_info::origin_trans_l_arr (Translator*) const
+{
+  return origin_trans_l_arr_;
+}
index bd85c3e6f2c73630db2508176f21a65420cc2da5..0902c377e700ed2492afd3e492032e3100ea1b44 100644 (file)
@@ -80,7 +80,7 @@ Bar_script_engraver::cast_to_interesting_item (Score_element *e)
 void
 Bar_script_engraver::acknowledge_element (Score_element_info inf)
 {
-  if (inf.origin_trans_l_arr_.size () == 1)
+  if (inf.origin_trans_l_arr (this).size () == 1)
     {
       Item *i=cast_to_interesting_item (inf.elem_l_);
       if (!i)
@@ -89,7 +89,7 @@ Bar_script_engraver::acknowledge_element (Score_element_info inf)
       /* Only put numbers on bars that are at our own level (don't put
         numbers over the staffs of a GrandStaff, only over the GrandStaff
         itself */
-      if (inf.origin_trans_l_arr_.size () != 1)
+      if (inf.origin_trans_l_arr (this).size () != 1)
        return;
 
       attach_script_to_item (i);
index 7d4365fd1e86131b02be0a83fb50e8efc64250a2..4636f957fac115a266f370bcf29d21969df3afbd 100644 (file)
@@ -28,7 +28,7 @@ Base_span_bar_engraver::get_span_bar_p() const
 void
 Base_span_bar_engraver::acknowledge_element (Score_element_info i)
 {
-  int depth = i.origin_trans_l_arr_.size();
+  int depth = i.origin_trans_l_arr (this).size();
   if (depth > 1
       && dynamic_cast<Bar *> (i.elem_l_)) 
     {
index 75f16950d0aafa76185e0f72b65c1bab138ae7cb..f33939c62a80f1127596699aef8cd907588a514e 100644 (file)
@@ -48,7 +48,7 @@ Engraver_group_engraver::do_announces()
              if (!dynamic_cast <Engraver_group_engraver *> (p->car_))
                {
                  Engraver * eng = dynamic_cast<Engraver*> (p->car_);
-                 if (eng && eng!= info.origin_trans_l_arr_[0])
+                 if (eng && eng!= info.origin_trans_l_arr (this)[0])
                    eng->acknowledge_element (info);
                }                 
            }
index 9688c2b347d21c6b1c1f88b409dd4a522989f288..7b2fb0c90c3e99b8cca3b71b85ad245cd5823fd5 100644 (file)
@@ -23,7 +23,8 @@ Engraver::fill_staff_info (Staff_info&)
 void
 Engraver::announce_element (Score_element_info i)
 {
-  i.origin_trans_l_arr_.push (this);
+  if (!i.origin_trans_l_)
+    i.origin_trans_l_ = this;
   daddy_grav_l()->announce_element (i);
 }
 
index 293fff867bdc9919075448e77b8658a7f2424d20..a247fc9c5e203a0558af1d88d11250a7411e65c9 100644 (file)
@@ -20,6 +20,7 @@ struct Audio_element_info {
   Audio_element * elem_l_;
   Music *req_l_;
   Link_array<Translator> origin_trans_l_arr_;
+  Link_array<Translator> origin_trans_l_arr (Translator*) const;  
 
   Audio_element_info (Audio_element*, Music*);
   Audio_element_info();
index 4d9ede8691f52f13322dc017ca00e337c03cec12..ac5ca855750b9a89118287f017601038d58ca1d6 100644 (file)
 #include "parray.hh"
 
 /**
-  Data container for broadcasts 
+  Data container for broadcasts.
+
+  TODO: Store this in element info! 
   */
 struct Score_element_info {
-    Score_element * elem_l_;
-    Music *req_l_;
-    Link_array<Translator> origin_trans_l_arr_;
+  Translator * origin_trans_l_;
+  friend Engraver;
+public:
+  Link_array<Translator> origin_trans_l_arr (Translator*) const; 
+  Score_element * elem_l_;
+  Music *req_l_;
+
 
-    Score_element_info (Score_element*, Music*);
-    Score_element_info();
+  Score_element_info (Score_element*, Music*);
+  Score_element_info();
 };
 
 
index 583c59a936d5f4fe36808cbd6e1958e247f590dc..52770a3e0b586c9cf6af80b6c6a033fe6f2eeb68 100644 (file)
@@ -49,9 +49,9 @@ Performer_group_performer::do_announces()
                {
                  Performer * eng = dynamic_cast<Performer*> (p->car_);
                  // urg, huh? core dump?
-                 //if (eng && eng!= info.origin_trans_l_arr_[0])
-                 if (eng && info.origin_trans_l_arr_.size ()
-                     && eng!= info.origin_trans_l_arr_[0])
+                 //if (eng && eng!= info.origin_trans_l_arr ()[0])
+                 if (eng && info.origin_trans_l_arr (this).size ()
+                     && eng!= info.origin_trans_l_arr (this)[0])
                    eng->acknowledge_element (info);
                }
            }
index c3dd700aef33e4e899dd15645b7ef8bc84068ba3..92c1abd453ace9ae0afa7a2cf68aa0baa9e73b81 100644 (file)
@@ -8,11 +8,14 @@
 
 #include "score-element-info.hh"
 #include "request.hh"
+#include "translator.hh"
+#include "translator-group.hh"
 
 Score_element_info::Score_element_info (Score_element*s_l, Music *r_l)
 {
   elem_l_ = s_l;
   req_l_ = r_l;
+  origin_trans_l_ = 0;  
 }
 
 
@@ -20,7 +23,20 @@ Score_element_info::Score_element_info()
 {
   elem_l_ = 0;
   req_l_ = 0;
+  origin_trans_l_ = 0;
 }
 
 
-
+Link_array<Translator>
+Score_element_info::origin_trans_l_arr (Translator* end) const
+{
+  Translator * t = origin_trans_l_;
+  Link_array<Translator> r;
+  do {
+    r.push (t);
+    t = t->daddy_trans_l_;
+  } while (t != end->daddy_trans_l_);
+  
+  return r;
+}
+  
index 81bf16fa25b90ff5418bfcdb6f40747d4c4b55a9..f314b8f41f8a5cf436c06ae388a200fe7ea49454 100644 (file)
@@ -85,7 +85,6 @@ void
 Score_engraver::announce_element (Score_element_info info)
 {
   announce_info_arr_.push (info);
-  info.origin_trans_l_arr_.push (this);
   pscore_p_->typeset_element (info.elem_l_);
 }
 
index 0ffb6111e8e00eaa1d5673f32a1c24a3a5c0c591..a7f2607c26cbda21ac42a0e52caf42eede5c8d2c 100644 (file)
@@ -37,7 +37,7 @@ void
 Staff_margin_engraver::acknowledge_element (Score_element_info inf)
 {
   Item *i = cast_to_interesting_item (inf.elem_l_);
-  if (!i || inf.origin_trans_l_arr_.size() != 1)
+  if (!i || inf.origin_trans_l_arr (this).size() != 1)
     return;
 
 
index 8f93df70e19e50fac21a0e691e03806f22eb9d00..81429e9d3e830685a0ff7c56ff2ba160dd04804f 100644 (file)
@@ -21,11 +21,15 @@ Timing_translator::do_try_music (Music*r)
     {
       for (int i=0; i < timing_req_l_arr_.size (); i++)
        {
+         /*
+           merge timing reqs.
+          */
          if (timing_req_l_arr_[i]->equal_b(t))
            return true;
          if (String (classname (timing_req_l_arr_[i])) == classname (r))
            {
              r->warning (_ ("conflicting timing request"));
+             timing_req_l_arr_[i]->warning (_("This is the other timing request")); 
              return false;
            }
        }
@@ -153,7 +157,7 @@ Timing_translator::set_time_signature (int l, int o)
   Moment len = Moment (l) * one_beat;
   daddy_trans_l_->set_property ("measureLength",
                                (new Moment (len))->smobify_self ());
-  daddy_trans_l_->set_property ("beatength",
+  daddy_trans_l_->set_property ("beatLength",
                                (new Moment (one_beat))->smobify_self ());
 }
 
index 8e5e8d376d5fdee88e14d50c12fb3617ad2e895d..02b560feb4fc8c25387d3fca8202ed838cc21b86 100644 (file)
@@ -146,7 +146,6 @@ Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
 void
 Tuplet_spanner::do_post_processing ()
 {
-
   Link_array<Note_column> column_arr=
     Group_interface__extract_elements (this, (Note_column*)0, "columns");
 
@@ -160,7 +159,7 @@ Tuplet_spanner::do_post_processing ()
   Direction d =   directional_element (this).get ();
   if (!d)
     {
-      d = UP;
+      d = get_default_dir ();
       directional_element (this).set (d);
 
     }
index 7c99d70ed93d068f63edd2bc7fa89f1f919ab86e..aca1c68fd8132e9fa21bc7f3081fb48c540ab306 100644 (file)
@@ -58,8 +58,7 @@ Vertical_align_engraver::do_removal_processing()
 bool
 Vertical_align_engraver::qualifies_b (Score_element_info i) const
 {
-  int sz = i.origin_trans_l_arr_.size()  ;
-
+  int sz = i.origin_trans_l_arr ((Translator*)this).size()  ;
 
   Axis_group_element * elt = dynamic_cast<Axis_group_element *> (i.elem_l_);
 
@@ -73,7 +72,10 @@ Vertical_align_engraver::acknowledge_element (Score_element_info i)
     {
       valign_p_->add_element (i.elem_l_);
     }
-  else if (dynamic_cast<Span_bar*>(i.elem_l_) && i.origin_trans_l_arr_.size ())
+  /*
+    ? huh
+   */
+  else if (dynamic_cast<Span_bar*>(i.elem_l_) && i.origin_trans_l_arr (this).size ())
     {
       i.elem_l_->add_dependency (valign_p_);
     }