From: fred Date: Sun, 24 Mar 2002 19:53:43 +0000 (+0000) Subject: lilypond-0.1.7 X-Git-Tag: release/1.5.59~4122 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=c2fd54c1907262cb9571c0060f18b8c11eac1d50;p=lilypond.git lilypond-0.1.7 --- diff --git a/lily/axis-group.cc b/lily/axis-group.cc new file mode 100644 index 0000000000..b6b5eec4fc --- /dev/null +++ b/lily/axis-group.cc @@ -0,0 +1,76 @@ +/* + axis-group.cc -- implement Axis_group_administration + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ +#include "interval.hh" +#include "axis-group.hh" +#include "score-elem.hh" +#include "debug.hh" + +/** don't copy anything: an element can only be in one + Axis_group_element at one time. */ +Axis_group_administration::Axis_group_administration( + Axis_group_administration const&) +{ +} + +bool +Axis_group_administration::contains_b(Score_elem const *e)const +{ + return elem_l_arr_.find_l(e); +} + +Interval +Axis_group_administration::extent(Axis axis)const +{ + Interval r; + for (int i=0; i < elem_l_arr_.size(); i++) + r.unite(elem_l_arr_[i]->extent(axis)); + return r; +} + +void +Axis_group_administration::add_element(Score_elem*e, + Axis_group_element*g, Axis a1, Axis a2) +{ + assert( ! e->axis_group_l_a_[a1] && !e->axis_group_l_a_[a2] ); + e->axis_group_l_a_[a1] = g; + e->axis_group_l_a_[a2] = g; + elem_l_arr_.push ( e); +} + + + +void +Axis_group_administration::remove_element(Score_elem*e, Axis a1, Axis a2) +{ + assert( contains_b( e)); + elem_l_arr_.unordered_substitute(e,0); + + e->axis_group_l_a_[a1] = 0; + e->axis_group_l_a_[a2] = 0; +} + +void +Axis_group_administration::remove_all(Axis a1, Axis a2) +{ + for (int i=0; i < elem_l_arr_.size(); i++) { + Score_elem*e=elem_l_arr_[i]; + e->axis_group_l_a_[a1] = 0; + e->axis_group_l_a_[a2] = 0; + } + elem_l_arr_.clear(); +} + + +void +Axis_group_administration::print() const +{ +#ifndef NPRINT + for (int i=0; i < elem_l_arr_.size(); i++) + mtor << elem_l_arr_[i]->name() << ' '; +#endif +} diff --git a/lily/bar-column-grav.cc b/lily/bar-column-grav.cc new file mode 100644 index 0000000000..1dda5113ca --- /dev/null +++ b/lily/bar-column-grav.cc @@ -0,0 +1,69 @@ +/* + bar-column-grav.cc -- implement Bar_column_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#include "bar-column-grav.hh" +#include "bar-column.hh" +#include "request.hh" +#include "script.hh" +#include "bar.hh" + +Bar_column_engraver::Bar_column_engraver() +{ + bar_l_ =0; + barcol_p_ =0; +} + + +void +Bar_column_engraver::acknowledge_element(Score_elem_info info) +{ + if (info.elem_l_->is_type_b(Script::static_name()) + && info.req_l_->command() + && info.origin_grav_l_arr_.size() == 1) { + script_l_arr_.push( (Script*)info.elem_l_->item()); + } else { + if (info.origin_grav_l_arr_.size() == 1 + && info.elem_l_->is_type_b(Bar::static_name())) + bar_l_ = (Bar*)info.elem_l_->item(); + } + + if ( bar_l_ && !barcol_p_ ) { + barcol_p_ = new Bar_column; + barcol_p_->breakable_b_ =true; + barcol_p_->set_bar( bar_l_ ); + announce_element(Score_elem_info(barcol_p_, 0)); + } + + if (barcol_p_ ) { + for (int i=0; i < script_l_arr_.size(); i++) { + script_l_arr_[i]->breakable_b_ = true; + barcol_p_->add(script_l_arr_[i]); + } + script_l_arr_.clear(); + } +} + +void +Bar_column_engraver::do_pre_move_processing() +{ + if (barcol_p_) { + typeset_element( barcol_p_ ); + barcol_p_ =0; + } +} + +void +Bar_column_engraver::do_post_move_processing() +{ + script_l_arr_.clear(); + bar_l_ =0; +} + +IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver); +ADD_THIS_ENGRAVER(Bar_column_engraver); diff --git a/lily/collision.cc b/lily/collision.cc index f9a15bc4fa..0af68c462e 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -20,6 +20,7 @@ void Collision::add(Note_column* ncol_l) { clash_l_arr_.push(ncol_l); + add_element( ncol_l ); add_dependency(ncol_l); } /** @@ -76,7 +77,7 @@ Collision::do_pre_processing() do { if (!clash_group_arr_a[idx(d, false)].size()){ clash_group_arr_a[idx(d, false)] = clash_group_arr_a[idx(d, true)]; - clash_group_arr_a[idx(d, true)].set_size(0); + clash_group_arr_a[idx(d, true)].clear(); } } while ((d *= -1) != 1); @@ -133,10 +134,14 @@ Collision::do_pre_processing() Real inter_f = paper()->internote_f(); Real wid_f = paper()->note_width(); for (int j=0; j < 4; j++) { - if (col_l_a[j]) - col_l_a[j]->translate(Offset(x_off[j] * wid_f, - y_off[j] * inter_f)); - + if (col_l_a[j]) { + /* collision.cc:138: request for method `translate' is ambiguous + + (shaddup) + */ + Offset o(x_off[j] * wid_f, y_off[j] * inter_f); + ((Score_elem*)col_l_a[j])->translate(o); + } } } diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc index 8f99590581..72d76607df 100644 --- a/lily/dynamic-grav.cc +++ b/lily/dynamic-grav.cc @@ -28,7 +28,7 @@ Dynamic_engraver::Dynamic_engraver() void Dynamic_engraver::do_post_move_processing() { - dynamic_req_l_arr_.set_size(0); + dynamic_req_l_arr_.clear(); } bool diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index 672c8f2e5f..69038b5024 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -17,6 +17,12 @@ Engraver* get_engraver_p(String); +void +Engraver_group_engraver::print()const +{ + Engraver::print(); +} + Engraver_group_engraver::~Engraver_group_engraver() { assert(removable_b()); @@ -160,7 +166,7 @@ void Engraver_group_engraver::terminate_engraver(Engraver*r_l) { mtor << "Removing " << r_l->name() << " at " << get_staff_info().when() << "\n"; - r_l->do_removal_processing(); + r_l->removal_processing(); Engraver * grav_p =remove_engraver_p(r_l); delete grav_p; @@ -176,7 +182,8 @@ Engraver_group_engraver::do_print()const #ifndef NPRINT if ( !check_debug) return ; - mtor << "ID: " << id_str_ << "\n"; + mtor << "ID: " << id_str_ ; + mtor << " iterators: " << iterator_count_<< "\n"; for (PCursor i(grav_list_.top()); i.ok(); i++) i->print(); #endif @@ -266,7 +273,7 @@ Engraver_group_engraver::do_announces() nongroup_l_arr_[i]->acknowledge_element(info); } } - announce_info_arr_.set_size(0); + announce_info_arr_.clear(); } @@ -274,7 +281,7 @@ void Engraver_group_engraver::do_removal_processing() { for (PCursor i(grav_list_.top()); i.ok(); i++) - i->do_removal_processing(); + i->removal_processing(); } Staff_info @@ -309,3 +316,16 @@ Engraver_group_engraver::is_bottom_engraver_b()const { return !itrans_l_->get_default_itrans_l(); } + +Engraver* +Engraver_group_engraver::get_simple_engraver(char const *type)const +{ + for (int i=0; i < nongroup_l_arr_.size(); i++) { + if (nongroup_l_arr_[i]->name() == type ) + return nongroup_l_arr_[i]; + } + if ( daddy_grav_l_ ) + return daddy_grav_l_->get_simple_engraver(type); + return 0; +} + diff --git a/lily/grouping.cc b/lily/grouping.cc index 0781bf9cb3..f35ae8e354 100644 --- a/lily/grouping.cc +++ b/lily/grouping.cc @@ -14,7 +14,7 @@ void Rhythmic_grouping::init() { interval_ = 0; - children.set_size(0); + children.clear(); } void diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc index 46c9b70b85..8b4427fc0d 100644 --- a/lily/horizontal-align-item.cc +++ b/lily/horizontal-align-item.cc @@ -69,8 +69,8 @@ Horizontal_align_item::do_pre_processing() Horizontal_align_item_content( item_l_arr_[i], priority_i_arr_[i])); content.sort(Horizontal_align_item_content::compare); - item_l_arr_.set_size(0); - priority_i_arr_.set_size(0); + item_l_arr_.clear(); + priority_i_arr_.clear(); for (int i =0; i < content.size(); i++) { item_l_arr_.push( content[i].item_l_ ); priority_i_arr_.push( content[i].priority_i_); @@ -93,14 +93,14 @@ Horizontal_align_item::do_pre_processing() Real center_dx_f = 0; for ( int i=0 ; i < item_l_arr_.size(); i++) { Real dx = where_f -dims[i][-1]; - item_l_arr_[i]->translate_x( dx ); + item_l_arr_[i]->translate( dx , X_AXIS); if (item_l_arr_[i] == center_l_) center_dx_f = where_f; where_f += dims[i].length(); } if (center_dx_f && !align_i_ ) for ( int i=0 ; i < item_l_arr_.size(); i++) - item_l_arr_[i]->translate_x( - center_dx_f ); + item_l_arr_[i]->translate( - center_dx_f , X_AXIS); } diff --git a/lily/key-grav.cc b/lily/key-grav.cc index 84288bd101..5de204bd25 100644 --- a/lily/key-grav.cc +++ b/lily/key-grav.cc @@ -28,7 +28,11 @@ void Key_engraver::create_key() { if (!kit_p_) { - int c0_i= *get_staff_info().c0_position_i_l_; + int c0_i=0; + + Staff_info inf = get_staff_info(); + if (inf.c0_position_i_l_) + c0_i = *get_staff_info().c0_position_i_l_; kit_p_ = new Key_item(c0_i); announce_element(Score_elem_info(kit_p_,keyreq_l_)); @@ -67,9 +71,9 @@ Key_engraver::acknowledge_element(Score_elem_info info) void Key_engraver::do_process_requests() { - if (key_.multi_octave_b_) + if (key_.multi_octave_b_) { assert(false); // TODO . - else if (keyreq_l_) { + } else if (keyreq_l_) { create_key(); } } @@ -79,7 +83,7 @@ Key_engraver::do_pre_move_processing() { if (kit_p_) { kit_p_->default_b_ = default_key_b_; - typeset_breakable_item( kit_p_); + typeset_element( kit_p_); kit_p_ = 0; } } @@ -90,7 +94,7 @@ void Key_engraver::read_req(Key_change_req * r) { key_.multi_octave_b_ = r->multi_octave_b_; - accidental_idx_arr_.set_size(0); + accidental_idx_arr_.clear(); for (int i = 0; i < r->melodic_p_arr_.size(); i ++) { Melodic_req * m_l =r->melodic_p_arr_[i]; int n_i =m_l->notename_i_; diff --git a/lily/local-key-grav.cc b/lily/local-key-grav.cc index 78fbae2992..bd474f4d2b 100644 --- a/lily/local-key-grav.cc +++ b/lily/local-key-grav.cc @@ -40,8 +40,15 @@ Local_key_engraver::do_pre_move_processing() - if (!key_item_p) - key_item_p = new Local_key_item(*get_staff_info().c0_position_i_l_); + if (!key_item_p) { + int c0_i=0; + + Staff_info inf = get_staff_info(); + if (inf.c0_position_i_l_) + c0_i = *get_staff_info().c0_position_i_l_; + + key_item_p = new Local_key_item(c0_i); + } key_item_p->add(note_l); key_item_p->add_support(support_l); local_key_.oct(note_l->octave_i_) @@ -57,12 +64,14 @@ Local_key_engraver::do_pre_move_processing() typeset_element(key_item_p); } - mel_l_arr_.set_size(0); - tied_l_arr_.set_size(0); - support_l_arr_.set_size(0); - forced_l_arr_.set_size(0); + mel_l_arr_.clear(); + tied_l_arr_.clear(); + support_l_arr_.clear(); + forced_l_arr_.clear(); } - +/* + whoah .. this looks hairy! + */ void Local_key_engraver::acknowledge_element(Score_elem_info info) { @@ -95,11 +104,9 @@ void Local_key_engraver::do_process_requests() { Time_description const * time_C_ = get_staff_info().time_C_; - if (! time_C_->whole_in_measure_){ + if (time_C_ && !time_C_->whole_in_measure_){ if (key_C_) local_key_= *key_C_; - else if(0&& time_C_->when_ >Moment(0)) - warning ("Help me! can't figure out current key"); } } diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 5c14442745..3f12eba6fe 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -203,7 +203,7 @@ My_lily_parser::get_parens_request(char c) case ']': { Beam_req*b = new Beam_req; - int p_i=default_duration_.plet_.type_i_ ; // ugh . Should junk? + int p_i=plet_.type_i_ ; // ugh . Should junk? if (p_i!= 1) b->nplet = p_i; req_p = b; @@ -270,11 +270,11 @@ My_lily_parser::add_requests(Chord*v) for (int i = 0; i < pre_reqs.size(); i++) { v->add(pre_reqs[i]); } - pre_reqs.set_size(0); + pre_reqs.clear(); for (int i = 0; i add(post_reqs[i]); } - post_reqs.set_size(0); + post_reqs.clear(); } Input diff --git a/lily/note-column-grav.cc b/lily/note-column-grav.cc index 6761456558..7ce98ae77c 100644 --- a/lily/note-column-grav.cc +++ b/lily/note-column-grav.cc @@ -49,7 +49,7 @@ Note_column_engraver::acknowledge_element(Score_elem_info i) char const*nC = i.elem_l_->name(); - if (nC == Script::static_name()) { + if (nC == Script::static_name() && i.req_l_ && i.req_l_->musical()) { script_l_arr_.push((Script*)i.elem_l_->item()); } else if (nC == Note_head::static_name()) { Note_head * h_l = (Note_head*)i.elem_l_->item(); @@ -78,7 +78,7 @@ Note_column_engraver::acknowledge_element(Score_elem_info i) ncol_p_->add(script_l_arr_[i]); } - script_l_arr_.set_size(0); + script_l_arr_.clear(); } } @@ -107,7 +107,7 @@ Note_column_engraver::do_pre_move_processing() void Note_column_engraver::do_post_move_processing() { - script_l_arr_.set_size(0); + script_l_arr_.clear(); stem_l_ =0; } diff --git a/lily/scores.cc b/lily/scores.cc index be558b29c1..3cfc56969c 100644 --- a/lily/scores.cc +++ b/lily/scores.cc @@ -28,9 +28,8 @@ do_scores() if (is_p->errorlevel_i_) { is_p->warning("Score contains errors. Will not process it. "); - + exit_status_i_ |= 1; } else { - is_p->print (); is_p->process(); } @@ -38,7 +37,7 @@ do_scores() is_p =0; } - score_array_global.set_size(0); + score_array_global.clear(); } void diff --git a/lily/script-grav.cc b/lily/script-grav.cc index e33f121bb1..cd58609143 100644 --- a/lily/script-grav.cc +++ b/lily/script-grav.cc @@ -21,11 +21,11 @@ Script_engraver::do_try_request(Request *r_l) if (!r_l->musical() || ! r_l->musical()->musicalscript()) return false ; - for (int i=0; i < script_req_l_arr_.size(); i++) - if ( !Script_req::compare(*script_req_l_arr_[i], *r_l->script())) { + for (int i=0; i < script_req_l_arr_.size(); i++) { + if ( r_l->equal_b(script_req_l_arr_[i])) return true; - } + } script_req_l_arr_.push( r_l->script()); return true; @@ -44,44 +44,22 @@ Script_engraver::do_process_requests() } } -bool -Script_engraver::acceptable_elem_b(Score_elem*s_l) -{ - char const *nC = s_l->name(); - return (nC == Stem::static_name()); -} - -void -Script_engraver::acknowledge_element(Score_elem_info info) -{ - Score_elem *elem_l = info.elem_l_; - if (!acceptable_elem_b(elem_l)) - return; - - for (int i=0; i < script_p_arr_.size(); i++) { - Script*script_l = script_p_arr_[i]; - if (elem_l->name() == Stem::static_name()) - script_l->set_stem((Stem*)elem_l->item()); - } -} - void Script_engraver::do_pre_move_processing() { Staff_symbol* s_l = get_staff_info().staff_sym_l_; for (int i=0; i < script_p_arr_.size(); i++) { - Script*script_p = script_p_arr_[i]; script_p->set_staffsym( s_l); typeset_element(script_p); } - script_p_arr_.set_size(0); + script_p_arr_.clear(); } void Script_engraver::do_post_move_processing() { - script_req_l_arr_.set_size(0); + script_req_l_arr_.clear(); } diff --git a/lily/slur-grav.cc b/lily/slur-grav.cc index feabdd45b4..1c5c51df4e 100644 --- a/lily/slur-grav.cc +++ b/lily/slur-grav.cc @@ -85,13 +85,13 @@ Slur_engraver::do_pre_move_processing() end_slur_l_arr_[i]->dir_i_ = dir_i_; typeset_element(end_slur_l_arr_[i]); } - end_slur_l_arr_.set_size(0); + end_slur_l_arr_.clear(); } void Slur_engraver::do_post_move_processing() { - new_slur_req_l_arr_.set_size(0); + new_slur_req_l_arr_.clear(); } Slur_engraver::~Slur_engraver() { diff --git a/lily/template8.cc b/lily/template8.cc index bd33a49eb3..de06b70477 100644 --- a/lily/template8.cc +++ b/lily/template8.cc @@ -1,5 +1,21 @@ +/* + template8.cc -- instantiate audio List classes + + source file of the GNU LilyPond music typesetter + + (c) 1996,1997 Han-Wen Nienhuys +*/ #include "proto.hh" #include "plist.hh" -#include "plist.tcc" +#include "audio-column.hh" +#include "audio-item.hh" +#include "audio-staff.hh" #include "pcursor.tcc" +#include "plist.tcc" + + +IPL_instantiate(Audio_element); +IPL_instantiate(Audio_column); + +