]> git.donarmstrong.com Git - lilypond.git/blob - src/keyitem.cc
release: 0.0.22
[lilypond.git] / src / keyitem.cc
1 #include "keyitem.hh"
2 #include "key.hh"
3 #include "debug.hh"
4 #include "molecule.hh"
5 #include "paper.hh"
6 #include "lookup.hh"
7
8
9 Keyitem::Keyitem(int c)
10 {
11     c_position = c;
12 }
13
14 void
15 Keyitem::read(Array<int> s)
16 {
17     for (int i = 0 ; i< s.size(); ) {
18         int note = s[i++];
19         int acc = s[i++];
20             
21         add(note, acc);
22     }
23 }
24
25 void
26 Keyitem::add(int p, int a)
27 {
28     pitch.add(p);
29     acc.add(a);
30 }
31
32
33 Molecule*
34 Keyitem::brew_molecule()const
35 {
36     Molecule*output = new Molecule;
37     Real inter = paper()->interline()/2;
38     
39     for (int i =0; i < pitch.size(); i++) {
40         Symbol s= paper()->lookup_p_->accidental(acc[i]);
41         Atom a(s);
42         a.translate(Offset(0,(c_position + pitch[i]) * inter));
43         Molecule m(a);
44         output->add_right(m);   
45     }
46     Molecule m(paper()->lookup_p_->fill(Box(
47         Interval(0, paper()->note_width()),
48         Interval(0,0))));
49     output->add_right(m);
50     return output;
51 }