From 3d32a456a8bdb3e144b46e595972fa370e7012cb Mon Sep 17 00:00:00 2001 From: fred Date: Mon, 7 Feb 2000 10:23:49 +0000 Subject: [PATCH] lilypond-1.3.23 --- lily/audio-element-info.cc | 29 +++++++++++++++++++++++++++++ lily/bar-script-engraver.cc | 4 ++-- lily/base-span-bar-engraver.cc | 2 +- lily/engraver-group-engraver.cc | 2 +- lily/engraver.cc | 3 ++- lily/include/audio-element-info.hh | 1 + lily/include/score-element-info.hh | 18 ++++++++++++------ lily/performer-group-performer.cc | 6 +++--- lily/score-element-info.cc | 18 +++++++++++++++++- lily/score-engraver.cc | 1 - lily/staff-margin-engraver.cc | 2 +- lily/timing-translator.cc | 6 +++++- lily/tuplet-spanner.cc | 3 +-- lily/vertical-align-engraver.cc | 8 +++++--- 14 files changed, 80 insertions(+), 23 deletions(-) create mode 100644 lily/audio-element-info.cc diff --git a/lily/audio-element-info.cc b/lily/audio-element-info.cc new file mode 100644 index 0000000000..5580b6f0b8 --- /dev/null +++ b/lily/audio-element-info.cc @@ -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 +*/ + +#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 +Audio_element_info::origin_trans_l_arr (Translator*) const +{ + return origin_trans_l_arr_; +} diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index bd85c3e6f2..0902c377e7 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -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); diff --git a/lily/base-span-bar-engraver.cc b/lily/base-span-bar-engraver.cc index 7d4365fd1e..4636f957fa 100644 --- a/lily/base-span-bar-engraver.cc +++ b/lily/base-span-bar-engraver.cc @@ -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 (i.elem_l_)) { diff --git a/lily/engraver-group-engraver.cc b/lily/engraver-group-engraver.cc index 75f16950d0..f33939c62a 100644 --- a/lily/engraver-group-engraver.cc +++ b/lily/engraver-group-engraver.cc @@ -48,7 +48,7 @@ Engraver_group_engraver::do_announces() if (!dynamic_cast (p->car_)) { Engraver * eng = dynamic_cast (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); } } diff --git a/lily/engraver.cc b/lily/engraver.cc index 9688c2b347..7b2fb0c90c 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -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); } diff --git a/lily/include/audio-element-info.hh b/lily/include/audio-element-info.hh index 293fff867b..a247fc9c5e 100644 --- a/lily/include/audio-element-info.hh +++ b/lily/include/audio-element-info.hh @@ -20,6 +20,7 @@ struct Audio_element_info { Audio_element * elem_l_; Music *req_l_; Link_array origin_trans_l_arr_; + Link_array origin_trans_l_arr (Translator*) const; Audio_element_info (Audio_element*, Music*); Audio_element_info(); diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh index 4d9ede8691..ac5ca85575 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/score-element-info.hh @@ -14,15 +14,21 @@ #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 origin_trans_l_arr_; + Translator * origin_trans_l_; + friend Engraver; +public: + Link_array 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(); }; diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index 583c59a936..52770a3e0b 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -49,9 +49,9 @@ Performer_group_performer::do_announces() { Performer * eng = dynamic_cast (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); } } diff --git a/lily/score-element-info.cc b/lily/score-element-info.cc index c3dd700aef..92c1abd453 100644 --- a/lily/score-element-info.cc +++ b/lily/score-element-info.cc @@ -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 +Score_element_info::origin_trans_l_arr (Translator* end) const +{ + Translator * t = origin_trans_l_; + Link_array r; + do { + r.push (t); + t = t->daddy_trans_l_; + } while (t != end->daddy_trans_l_); + + return r; +} + diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 81bf16fa25..f314b8f41f 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -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_); } diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 0ffb6111e8..a7f2607c26 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -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; diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 8f93df70e1..81429e9d3e 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -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 ()); } diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 8e5e8d376d..02b560feb4 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -146,7 +146,6 @@ Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const void Tuplet_spanner::do_post_processing () { - Link_array 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); } diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 7c99d70ed9..aca1c68fd8 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -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 (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(i.elem_l_) && i.origin_trans_l_arr_.size ()) + /* + ? huh + */ + else if (dynamic_cast(i.elem_l_) && i.origin_trans_l_arr (this).size ()) { i.elem_l_->add_dependency (valign_p_); } -- 2.11.4.GIT