5 #include "paper-def.hh"
7 //#include "clef-grav.hh"
10 const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
11 const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */
13 Key_item::Key_item(int c)
20 Key_item::read(Key_engraver const & key_grav_r)
22 assert(!key_grav_r.key_.multi_octave_b_);
23 const Array<int> &idx_arr =key_grav_r.accidental_idx_arr_;
24 for (int i = 0 ; i< idx_arr.size(); i++) {
25 int note = idx_arr[i];
26 int acc = ((Key &) key_grav_r.key_).oct(0).acc(note);
33 Key_item::set_c_position(int c0)
35 int octaves =(abs(c0) / 7) +1 ;
36 c_position=(c0 + 7*octaves)%7;
41 Key_item::add(int p, int a)
43 if ((a<0 && p>FLAT_TOP_PITCH) ||
44 (a>0 && p>SHARP_TOP_PITCH)) {
45 p -= 7; /* Typeset below c_position */
53 Key_item::brew_molecule_p()const
55 Molecule*output = new Molecule;
56 Real inter = paper()->internote_f();
58 for (int i =0; i < pitch.size(); i++) {
59 Symbol s= paper()->lookup_l()->accidental(acc[i]);
61 a.translate_y((c_position + pitch[i]) * inter);
66 Molecule m(paper()->lookup_l()->fill(Box(
67 Interval(0, paper()->note_width()),
74 IMPLEMENT_STATIC_NAME(Key_item);
75 IMPLEMENT_IS_TYPE_B1(Key_item,Item);
78 Key_item::do_pre_processing()
81 empty_b_ = transparent_b_ = (break_status_i() != 1);