lilypond-1.3.124
[lilypond.git] / mi2mu / mudela-voice.cc
blob286d2176c9ee18e911f5ee4580931c55d5e18680
1 //
2 // mudela-voice.cc -- implement Mudela_voice
3 //
4 // copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
6 #include "string-convert.hh"
7 #include "mi2mu-global.hh"
8 #include "mudela-column.hh"
9 #include "mudela-item.hh"
10 #include "mudela-staff.hh"
11 #include "mudela-stream.hh"
12 #include "mudela-voice.hh"
13 #include "mudela-score.hh"
15 extern Mudela_score* mudela_score_l_g;
17 Mudela_voice::Mudela_voice (Mudela_staff* mudela_staff_l)
19 mudela_staff_l_ = mudela_staff_l;
22 void
23 Mudela_voice::add_item (Mudela_item* mudela_item_l)
25 mudela_item_l_list_.append (new Cons<Mudela_item> (mudela_item_l, 0));
29 static int const FAIRLY_LONG_VOICE_i = 6;
31 void
32 Mudela_voice::output (Mudela_stream& mudela_stream_r)
34 if (!mudela_item_l_list_.size_i ())
35 return;
37 if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i)
38 mudela_stream_r << '\n';
40 int current_bar_i = 0;
41 Moment bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom ();
43 for (Cons<Mudela_item>* i = mudela_item_l_list_.head_; i; i = i->next_)
45 Moment at_mom = i->car_->mudela_column_l_->at_mom ();
46 int bar_i = (int) (at_mom / bar_mom) + 1;
47 if (bar_i > current_bar_i)
49 if (current_bar_i)
51 if (at_mom == Moment (bar_i - 1) * bar_mom)
52 mudela_stream_r << "|";
53 mudela_stream_r << "\n% ";
54 mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
55 mudela_stream_r << '\n';
57 LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush;
58 current_bar_i = bar_i;
61 mudela_stream_r << *i->car_;
62 if (Mudela_key* k = dynamic_cast<Mudela_key*> (i->car_))
63 mudela_staff_l_->mudela_key_l_ = mudela_score_l_g->mudela_key_l_ = k;
66 if (mudela_item_l_list_.size_i () > FAIRLY_LONG_VOICE_i)
67 mudela_stream_r << '\n';