--- /dev/null
+/*
+ axis-group.cc -- implement Axis_group_administration
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+#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
+}
--- /dev/null
+/*
+ bar-column-grav.cc -- implement Bar_column_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#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);
Collision::add(Note_column* ncol_l)
{
clash_l_arr_.push(ncol_l);
+ add_element( ncol_l );
add_dependency(ncol_l);
}
/**
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);
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);
+ }
}
}
void
Dynamic_engraver::do_post_move_processing()
{
- dynamic_req_l_arr_.set_size(0);
+ dynamic_req_l_arr_.clear();
}
bool
Engraver* get_engraver_p(String);
+void
+Engraver_group_engraver::print()const
+{
+ Engraver::print();
+}
+
Engraver_group_engraver::~Engraver_group_engraver()
{
assert(removable_b());
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;
#ifndef NPRINT
if ( !check_debug)
return ;
- mtor << "ID: " << id_str_ << "\n";
+ mtor << "ID: " << id_str_ ;
+ mtor << " iterators: " << iterator_count_<< "\n";
for (PCursor<Engraver*> i(grav_list_.top()); i.ok(); i++)
i->print();
#endif
nongroup_l_arr_[i]->acknowledge_element(info);
}
}
- announce_info_arr_.set_size(0);
+ announce_info_arr_.clear();
}
Engraver_group_engraver::do_removal_processing()
{
for (PCursor<Engraver*> i(grav_list_.top()); i.ok(); i++)
- i->do_removal_processing();
+ i->removal_processing();
}
Staff_info
{
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;
+}
+
Rhythmic_grouping::init()
{
interval_ = 0;
- children.set_size(0);
+ children.clear();
}
void
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_);
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);
}
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_));
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();
}
}
{
if (kit_p_) {
kit_p_->default_b_ = default_key_b_;
- typeset_breakable_item( kit_p_);
+ typeset_element( kit_p_);
kit_p_ = 0;
}
}
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_;
- 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_)
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)
{
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");
}
}
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;
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 <post_reqs.size(); i++) {
v->add(post_reqs[i]);
}
- post_reqs.set_size(0);
+ post_reqs.clear();
}
Input
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();
ncol_p_->add(script_l_arr_[i]);
}
- script_l_arr_.set_size(0);
+ script_l_arr_.clear();
}
}
void
Note_column_engraver::do_post_move_processing()
{
- script_l_arr_.set_size(0);
+ script_l_arr_.clear();
stem_l_ =0;
}
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();
}
is_p =0;
}
- score_array_global.set_size(0);
+ score_array_global.clear();
}
void
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;
}
}
-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();
}
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()
{
+/*
+ template8.cc -- instantiate audio List classes
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
#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);
+
+