13 Stem::Stem(int c, Real len)
18 minnote = 1000; // invalid values
34 mtor << "flag "<< flag << " print_flag " << print_flag
35 << "min,max [" << minnote << ", " << maxnote << "]";
43 Stem::set_stemend(Real se)
47 assert((dir > 0 && se >= maxnote) || (se <= minnote && dir <0));
49 top = (dir < 0) ? maxnote : se;
50 bot = (dir < 0) ? se : minnote;
55 Stem::add(Notehead *n)
68 Stem::set_default_dir()
70 Real mean = (minnote+maxnote)/2;
71 dir = (mean > staff_center) ? -1: 1;
75 Stem::set_default_stemlen()
80 int stafftop = 2*staff_center;
81 stemlen = STEMLEN + (maxnote - minnote);
83 // uhh... how about non 5-line staffs?
84 if (maxnote < -2 && dir == 1){
85 int t = staff_center - staff_center/2;
86 stemlen = t - minnote +2;
87 } else if (minnote > stafftop + 2 && dir == -1) {
88 int t = staff_center + staff_center/2;
89 stemlen = maxnote -t +2;
97 Stem::set_default_extents()
99 assert(minnote<=maxnote);
102 set_default_stemlen();
104 set_stemend((dir< 0) ? maxnote-stemlen: minnote +stemlen);
106 stem_xoffset = paper()->note_width();
115 set_default_extents();
122 if (!print_flag || ABS(flag) <= 4)
123 return Interval(0,0); // TODO!
125 Interval r(p->lookup_->flag(flag).dim.x);
131 Stem::brew_molecole()
137 Paperdef *p =paper();
139 Real dy = p->internote();
140 Symbol ss =p->lookup_->stem(bot*dy,top*dy);
143 output = new Molecule(Atom(ss));
145 if (print_flag&&ABS(flag) > 4){
146 Symbol fl = p->lookup_->flag(flag);
150 } else if (flag > 4) {
156 output->translate(Offset(stem_xoffset,0));
163 return pcol_->hpos + stem_xoffset;
170 set_default_extents(); // needed for the flags.