]> git.donarmstrong.com Git - lilypond.git/blob - src/keyitem.cc
release: 0.0.18
[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(svec<int> s)
16 {
17     for (int i = 0 ; i< s.sz(); ) {
18         int note = s[i++];
19         int acc = s[i++];
20             
21         add(note, acc);
22     }
23 }
24 void
25 Keyitem::add(int p, int a)
26 {
27     pitch.add(p);
28     acc.add(a);
29 }
30
31 void
32 Keyitem::preprocess()
33 {
34     brew_molecole();
35 }
36
37 void
38 Keyitem::brew_molecole()
39 {
40     output = new Molecule;
41     Real inter = paper()->interline()/2;
42     
43     for (int i =0; i < pitch.sz(); i++) {
44         Symbol s= paper()->lookup_->accidental(acc[i]);
45         Atom a(s);
46         a.translate(Offset(0,(c_position + pitch[i]) * inter));
47         Molecule m(a);
48         output->add_right(m);   
49     }
50     Molecule m(paper()->lookup_->fill(Box(
51         Interval(0, paper()->note_width()),
52         Interval(0,0))));
53     output->add_right(m);       
54 }