SCM
Stem_tremolo::calc_slope (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
- Grob *stem = Grob::unsmob (me->get_object ("stem"));
+ Grob *me = unsmob<Grob> (smob);
+ Grob *stem = unsmob<Grob> (me->get_object ("stem"));
Spanner *beam = Stem::get_beam (stem);
SCM style = me->get_property ("style");
SCM
Stem_tremolo::calc_width (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
- Grob *stem = Grob::unsmob (me->get_object ("stem"));
+ Grob *me = unsmob<Grob> (smob);
+ Grob *stem = unsmob<Grob> (me->get_object ("stem"));
Direction dir = get_grob_direction (me);
bool beam = Stem::get_beam (stem);
bool flag = Stem::duration_log (stem) >= 3 && !beam;
SCM
Stem_tremolo::calc_shape (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
- Grob *stem = Grob::unsmob (me->get_object ("stem"));
+ Grob *me = unsmob<Grob> (smob);
+ Grob *stem = unsmob<Grob> (me->get_object ("stem"));
Direction dir = get_grob_direction (me);
bool beam = Stem::get_beam (stem);
bool flag = Stem::duration_log (stem) >= 3 && !beam;
Real
Stem_tremolo::get_beam_translation (Grob *me)
{
- Grob *stem = Grob::unsmob (me->get_object ("stem"));
+ Grob *stem = unsmob<Grob> (me->get_object ("stem"));
Spanner *beam = Stem::get_beam (stem);
return (beam && beam->is_live ())
SCM
Stem_tremolo::pure_height (SCM smob, SCM, SCM)
{
- Item *me = Item::unsmob (smob);
+ Item *me = unsmob<Item> (smob);
/*
Cannot use the real slope, since it looks at the Beam.
*/
Stencil s1 (untranslated_stencil (me, 0.35));
- Item *stem = Item::unsmob (me->get_object ("stem"));
+ Item *stem = unsmob<Item> (me->get_object ("stem"));
if (!stem)
return ly_interval2scm (s1.extent (Y_AXIS));
if (!beam)
return ly_interval2scm (s1.extent (Y_AXIS));
- Interval ph = stem->pure_height (stem, 0, INT_MAX);
+ Interval ph = stem->pure_y_extent (stem, 0, INT_MAX);
Stem_info si = Stem::get_stem_info (stem);
ph[-dir] = si.shortest_y_;
int beam_count = Stem::beam_multiplicity (stem).length () + 1;
SCM
Stem_tremolo::width (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
/*
Cannot use the real slope, since it looks at the Beam.
Stencil
Stem_tremolo::untranslated_stencil (Grob *me, Real slope)
{
- Grob *stem = Grob::unsmob (me->get_object ("stem"));
+ Grob *stem = unsmob<Grob> (me->get_object ("stem"));
if (!stem)
{
programming_error ("no stem for stem-tremolo");
SCM
Stem_tremolo::calc_y_offset (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
return scm_from_double (y_offset (me, false));
}
SCM, /* start */
SCM /* end */)
{
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
return scm_from_double (y_offset (me, true));
}
SCM
Stem_tremolo::calc_direction (SCM smob)
{
- Item *me = Item::unsmob (smob);
+ Item *me = unsmob<Item> (smob);
- Item *stem = Item::unsmob (me->get_object ("stem"));
+ Item *stem = unsmob<Item> (me->get_object ("stem"));
if (!stem)
return scm_from_int (CENTER);
*/
Grob *maybe_nc = stem->get_parent (X_AXIS)->get_parent (X_AXIS);
bool whole_note = Stem::duration_log (stem) <= 0;
- if (whole_note && Note_collision_interface::has_interface (maybe_nc))
+ if (whole_note && has_interface<Note_collision_interface> (maybe_nc))
{
Drul_array<bool> avoid_me (false, false);
vector<int> all_nhps = Note_collision_interface::note_head_positions (maybe_nc);
Real
Stem_tremolo::y_offset (Grob *me, bool pure)
{
- Item *stem = Item::unsmob (me->get_object ("stem"));
+ Item *stem = unsmob<Item> (me->get_object ("stem"));
if (!stem)
return 0.0;
if (pure && beam)
{
- Interval ph = stem->pure_height (stem, 0, INT_MAX);
+ Interval ph = stem->pure_y_extent (stem, 0, INT_MAX);
Stem_info si = Stem::get_stem_info (stem);
ph[-dir] = si.shortest_y_;
- return (ph - dir * max (beam_count, 1) * beam_translation)[dir] - dir * 0.5 * me->pure_height (me, 0, INT_MAX).length ();
+ return (ph - dir * max (beam_count, 1) * beam_translation)[dir] - dir * 0.5 * me->pure_y_extent (me, 0, INT_MAX).length ();
}
Real end_y
= (pure
- ? stem->pure_height (stem, 0, INT_MAX)[dir]
+ ? stem->pure_y_extent (stem, 0, INT_MAX)[dir]
: stem->extent (stem, Y_AXIS)[dir])
- dir * max (beam_count, 1) * beam_translation
- Stem::beam_end_corrective (stem);
SCM
Stem_tremolo::print (SCM grob)
{
- Grob *me = Grob::unsmob (grob);
+ Grob *me = unsmob<Grob> (grob);
Stencil s = untranslated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25));
return s.smobbed_copy ();