Direction
Stem::get_direction (Score_element*me)
{
- Direction d = Directional_element_interface (me).get ();
+ Direction d = Directional_element_interface::get (me);
if (!d)
{
d = get_default_dir (me);
// urg, AAARGH!
- Directional_element_interface (me).set (d);
+ Directional_element_interface::set (me, d);
}
return d ;
}
}
else
{
- s = scm_eval (ly_symbol2scm ((type_str + "stem-length").ch_C()));
+ s = scm_eval2 (ly_symbol2scm ((type_str + "stem-length").ch_C()),
+ SCM_EOL);
for (SCM q = s; q != SCM_EOL; q = gh_cdr (q))
a.push (gh_scm2double (gh_car (q)));
a.clear ();
- s = scm_eval (ly_symbol2scm ((type_str + "stem-shorten").ch_C()));
+ s = scm_eval2 (ly_symbol2scm ((type_str + "stem-shorten").ch_C()),
+ SCM_EOL);
for (SCM q = s; q != SCM_EOL; q = gh_cdr (q))
a.push (gh_scm2double (gh_car (q)));
if (!dir)
{
dir = get_default_dir (me);
- Directional_element_interface (me).set (dir);
+ Directional_element_interface::set (me, dir);
}
/*
if (!invisible_b (me))
{
- Real stem_width = me->paper_l ()->get_var ("stemthickness");
+ Real stem_width = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness");
Molecule ss =me->lookup_l ()->filledbox (Box (Interval (-stem_width/2, stem_width/2),
Interval (stem_y[DOWN]*dy, stem_y[UP]*dy)));
mol.add_molecule (ss);
if (to_boolean (me->get_elt_property ("stem-centered")))
return head_wid.center ();
- Real rule_thick = me->paper_l ()->get_var ("stemthickness");
+ Real rule_thick = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness");
Direction d = get_direction (me);
r = head_wid[d] - d * rule_thick ;
}
{
Score_element * beam = beam_l (me);
- Direction beam_dir = Directional_element_interface (beam).get ();
+ Direction beam_dir = Directional_element_interface::get (beam);
if (!beam_dir)
{
programming_error ("Beam dir not set.");
Real staff_space = Staff_symbol_referencer::staff_space (me);
Real half_space = staff_space / 2;
- Real interbeam_f = me->paper_l ()->interbeam_f (Beam::get_multiplicity (beam));
- Real thick = gh_scm2double (beam->get_elt_property ("beam-thickness"));
int multiplicity = Beam::get_multiplicity (beam);
+
+ SCM space_proc = beam->get_elt_property ("beam-space-function");
+ SCM space = gh_call1 (space_proc, gh_int2scm (multiplicity));
+ Real interbeam_f = gh_scm2double (space) * staff_space;
+
+ Real thick = gh_scm2double (beam->get_elt_property ("beam-thickness"));
Stem_info info;
info.idealy_f_ = chord_start_f (me);
SCM s;
String type_str = grace_b ? "grace-" : "";
- s = scm_eval (ly_symbol2scm ((type_str + "beamed-stem-minimum-length").ch_C()));
+ s = scm_eval2 (ly_symbol2scm ((type_str + "beamed-stem-minimum-length").ch_C()), SCM_EOL);
a.clear ();
for (SCM q = s; q != SCM_EOL; q = gh_cdr (q))
a.push (gh_scm2double (gh_car (q)));
Real minimum_length = a[multiplicity <? (a.size () - 1)] * staff_space;
- s = scm_eval (ly_symbol2scm ((type_str + "beamed-stem-length").ch_C()));
+ s = scm_eval2 (ly_symbol2scm ((type_str + "beamed-stem-length").ch_C()),
+ SCM_EOL);
a.clear();
for (SCM q = s; q != SCM_EOL; q = gh_cdr (q))
Real stem_length = a[multiplicity <? (a.size () - 1)] * staff_space;
- if (!beam_dir || (beam_dir == Directional_element_interface (me).get ()))
+ if (!beam_dir || (beam_dir == Directional_element_interface::get (me)))
/* normal beamed stem */
{
if (multiplicity)