void add_right(const Molecule &m);
void add_left(const Molecule &m);
void add_top(const Molecule &m);
- void add_bot(const Molecule &m);
+ void add_bottom(const Molecule &m);
void add(Molecule const &m);
void translate(Offset);
void add(Atom a) { ats.bottom().add(new Atom(a)); }
}
void
-Molecule::add_bot(const Molecule &m)
+Molecule::add_bottom(const Molecule &m)
{
if (!ats.size()) {
add(m);
if ( p < minnote)
minnote = p;
if ( p> maxnote)
- maxnote = p;
+ maxnote = p;
+ heads.add(n);
}
stem_xoffset = 0;
}
+void
+Stem::set_noteheads()
+{
+ heads.sort(Notehead::compare);
+ int parity=0;
+ int lastpos = heads[0]->position;
+ for (int i=1; i < heads.sz(); i ++) {
+ if (ABS(lastpos- heads[i]->position) == 1) {
+ if (parity)
+ heads[i]->x_dir = (stem_xoffset>0) ? 1:-1;
+ parity = !parity;
+ } else
+ parity = 0;
+ lastpos = heads[i]->position;
+ }
+}
+
void
Stem::postprocess()
{
if (bot == top)
set_default_extents();
+ set_noteheads();
brew_molecole();
}
Symbol fl = p->lookup_->flag(flag);
Molecule m(fl);
if (flag < -4){
- output->add_bot(m);
+ output->add_bottom(m);
} else if (flag > 4) {
output->add_top(m);
} else