19 minnote = 1000; // invalid values
32 Stem::set_stemend(Real se)
35 assert((dir > 0 && se >= maxnote) || (se <= minnote && dir <0));
37 top = (dir < 0) ? maxnote : se;
38 bot = (dir < 0) ? se : minnote;
43 Stem::add(Notehead *n)
56 mtor << "Stem minmax=["<< minnote<<","<<maxnote<<"], flag: "<<flag;
61 Stem::set_default_dir()
63 Real mean = (minnote+maxnote)/2;
64 dir = (mean > staff_center) ? -1: 1;
68 Stem::set_default_stemlen()
73 int stafftop = 2*staff_center;
74 stemlen = STEMLEN + (maxnote - minnote);
76 // uhh... how about non 5-line staffs?
77 if (maxnote < -2 && dir == 1){
78 int t = staff_center - staff_center/2;
79 stemlen = t - minnote +2;
80 } else if (minnote > stafftop + 2 && dir == -1) {
81 int t = staff_center + staff_center/2;
82 stemlen = maxnote -t +2;
90 Stem::set_default_extents()
92 assert(minnote<=maxnote);
95 set_default_stemlen();
97 set_stemend((dir< 0) ? maxnote-stemlen: minnote +stemlen);
99 stem_xoffset = paper()->note_width();
106 set_default_extents();
113 if (!print_flag || ABS(flag) <= 4)
114 return Interval(0,0); // TODO!
116 return p->lookup_->flag(flag).dim.x;
120 Stem::brew_molecole()
126 Paperdef *p =paper();
127 Parametric_symbol *stem = p->lookup_->stem();
129 Real dy = p->interline()/2;
130 String y1 =print_dimen( dy * bot);
131 String y2 = print_dimen(dy * top);
132 Symbol ss =stem->eval(y1,y2);
135 output = new Molecule(Atom(ss));
137 if (print_flag&&ABS(flag) > 4){
138 Symbol fl = p->lookup_->flag(flag);
142 } else if (flag > 4) {
148 output->translate(Offset(stem_xoffset,0));
155 return pcol_->hpos + stem_xoffset;