Score_element*
Stem::support_head ()const
{
- SCM h = get_elt_property ("support-head");
+ SCM h = get_elt_pointer ("support-head");
Score_element * nh = unsmob_element (h);
if (nh)
return nh;
UGH.
*/
- return unsmob_element (gh_car (get_elt_property ("heads")));
+ return unsmob_element (gh_car (get_elt_pointer ("heads")));
}
else
return first_head ();
int
Stem::heads_i ()const
{
- Group_interface gi (this, "heads");
+ Pointer_group_interface gi (this, "heads");
return gi.count ();
}
Drul_array<Note_head *> exthead;
exthead[LEFT] = exthead[RIGHT] =0;
- for (SCM s = get_elt_property ("heads"); gh_pair_p (s); s = gh_cdr (s))
+ for (SCM s = get_elt_pointer ("heads"); gh_pair_p (s); s = gh_cdr (s))
{
Note_head * n = dynamic_cast<Note_head*> (unsmob_element (gh_car (s)));
Staff_symbol_referencer_interface si (n);
void
Stem::add_head (Rhythmic_head *n)
{
- n->set_elt_property ("stem", this->self_scm_);
+ n->set_elt_pointer ("stem", this->self_scm_);
n->add_dependency (this);
- Group_interface gi (this);
+ Pointer_group_interface gi (this);
if (Note_head *nh = dynamic_cast<Note_head *> (n))
gi.name_ = "heads";
else
gi.add_element (n);
}
-Stem::Stem ()
+Stem::Stem (SCM s)
+ : Item (s)
{
- set_elt_property ("heads", SCM_EOL);
- set_elt_property ("rests", SCM_EOL);
+ set_elt_pointer ("heads", SCM_EOL);
+ set_elt_pointer ("rests", SCM_EOL);
add_offset_callback ( &Stem::off_callback, X_AXIS);
}
return;
Link_array<Score_element> heads =
- Group_interface__extract_elements (this, (Score_element*)0, "heads");
+ Pointer_group_interface__extract_elements (this, (Score_element*)0, "heads");
heads.sort (compare_position);
Direction dir =get_direction ();
if (invisible_b ())
{
- set_elt_property ("transparent", SCM_BOOL_T);
- set_empty (Y_AXIS);
- set_empty (X_AXIS);
+ remove_elt_property ("molecule-callback");
+ // suicide();
}
-
+
set_spacing_hints ();
}
}
Interval
-Stem::dim_callback (Dimension_cache const* c)
+Stem::dim_callback (Score_element const *se, Axis )
{
- Stem * s = dynamic_cast<Stem*> (c->element_l ());
+ Stem * s = dynamic_cast<Stem*> ((Score_element*)se);
Interval r (0, 0);
- if (unsmob_element (s->get_elt_property ("beam")) || abs (s->flag_i ()) <= 2)
+ if (unsmob_element (s->get_elt_pointer ("beam")) || abs (s->flag_i ()) <= 2)
; // TODO!
else
{
- r = s->flag ().dim_.x ();
+ r = s->flag ().extent (X_AXIS);
}
return r;
}
-const Real ANGLE = 20* (2.0*M_PI/360.0); // ugh!
+const Real ANGLE = 20* (2.0*M_PI/360.0); // ugh! Should be settable.
+MAKE_SCHEME_SCORE_ELEMENT_CALLBACKS(Stem)
Molecule
Stem::do_brew_molecule () const
{
}
Real
-Stem::off_callback (Dimension_cache const * c)
+Stem::off_callback (Score_element const* se, Axis)
{
- Stem * st = dynamic_cast<Stem*> (c->element_l ());
+ Stem *st = dynamic_cast<Stem*> ((Score_element*)se);
Real r=0;
if (Note_head * f = st->first_head ())
Beam*
Stem::beam_l ()const
{
- SCM b= get_elt_property ("beam");
+ SCM b= get_elt_pointer ("beam");
return dynamic_cast<Beam*> (unsmob_element (b));
}