-Stem::set_noteheads()
-{
- if(!heads.size())
- return;
- heads.sort(Notehead::compare);
- heads[0]->extremal = -1;
- heads.top()->extremal = 1;
- int parity=1;
- int lastpos = heads[0]->position;
- for (int i=1; i < heads.size(); i ++) {
- int dy =abs(lastpos- heads[i]->position);
-
- if (dy <= 1) {
- if (parity)
- heads[i]->x_dir = (stem_xoffset>0) ? 1:-1;
- parity = !parity;
- } else
- parity = 0;
- lastpos = heads[i]->position;
+Stem::set_default_extents ()
+{
+ if (!stem_length_f ())
+ set_default_stemlen ();
+
+}
+
+void
+Stem::set_noteheads ()
+{
+ if (!head_l_arr_.size ())
+ return;
+ head_l_arr_.sort (Note_head::compare);
+ if (dir_ < 0)
+ head_l_arr_.reverse ();
+
+ Note_head * beginhead = head_l_arr_[0];
+ beginhead->set_elt_property (extremal_scm_sym, SCM_BOOL_T);
+ if (beginhead != head_l_arr_.top ())
+ head_l_arr_.top ()->set_elt_property (extremal_scm_sym, SCM_BOOL_T);
+
+ int parity=1;
+ int lastpos = beginhead->position_i_;
+ for (int i=1; i < head_l_arr_.size (); i ++)
+ {
+ int dy =abs (lastpos- head_l_arr_[i]->position_i_);
+
+ if (dy <= 1)
+ {
+ if (parity)
+ head_l_arr_[i]->flip_around_stem (dir_);
+ parity = !parity;
+ }
+ else
+ parity = 1;
+ lastpos = head_l_arr_[i]->position_i_;