X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstem-tremolo.cc;h=eaf6bd962fffb76e951685ec446c0753695449b2;hb=dfe0c6ad15227d6d3646bd7445df5de6aa386ff7;hp=689d24e71f215bf50f09f2ff8512496c5ae203d9;hpb=07a5ed85c189a97d04c550679826dfc5eca2eb18;p=lilypond.git diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 689d24e71f..eaf6bd962f 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2001 Han-Wen Nienhuys */ @@ -34,23 +34,37 @@ Stem_tremolo::has_interface (Grob *me) return me->has_interface (ly_symbol2scm ("stem-tremolo")); } -MAKE_SCHEME_CALLBACK(Stem_tremolo,dim_callback,2); +MAKE_SCHEME_CALLBACK (Stem_tremolo,dim_callback,2); /* todo: init with cons. */ SCM -Stem_tremolo::dim_callback (SCM e, SCM ) +Stem_tremolo::dim_callback (SCM e, SCM) { Grob * se = unsmob_grob (e); Real space = Staff_symbol_referencer::staff_space (se); - return ly_interval2scm ( Interval (-space, space)); + return ly_interval2scm (Interval (-space, space)); } +/* + ugh ? --from Slur + */ +MAKE_SCHEME_CALLBACK (Stem_tremolo, height, 2); +SCM +Stem_tremolo::height (SCM smob, SCM ax) +{ + Axis a = (Axis)gh_scm2int (ax); + Grob * me = unsmob_grob (smob); + assert (a == Y_AXIS); + + SCM mol = me->get_uncached_molecule (); + return ly_interval2scm (unsmob_molecule (mol)->extent (a)); +} -MAKE_SCHEME_CALLBACK(Stem_tremolo,brew_molecule,1); +MAKE_SCHEME_CALLBACK (Stem_tremolo,brew_molecule,1); SCM Stem_tremolo::brew_molecule (SCM smob) { @@ -62,7 +76,7 @@ Stem_tremolo::brew_molecule (SCM smob) if (beam) { Real dy = 0; - SCM s = beam->get_grob_property ("height"); + SCM s = beam->get_grob_property ("dy"); if (gh_number_p (s)) dy = gh_scm2double (s); Real dx = Beam::last_visible_stem (beam)->relative_coordinate (0, X_AXIS) @@ -108,9 +122,9 @@ Stem_tremolo::brew_molecule (SCM smob) if (beam) { // ugh, rather calc from Stem_tremolo_req - int beams_i = Stem::beam_count(stem, RIGHT) >? Stem::beam_count (stem, LEFT); - mol.translate (Offset(stem->relative_coordinate (0, X_AXIS) - me->relative_coordinate (0, X_AXIS), - Stem::stem_end_position (stem ) * ss / 2 - + int beams_i = Stem::beam_count (stem, RIGHT) >? Stem::beam_count (stem, LEFT); + mol.translate (Offset (stem->relative_coordinate (0, X_AXIS) - me->relative_coordinate (0, X_AXIS), + Stem::stem_end_position (stem) * ss / 2 - Directional_element_interface::get (beam) * beams_i * interbeam_f)); } else @@ -118,17 +132,17 @@ Stem_tremolo::brew_molecule (SCM smob) /* Beams should intersect one beamthickness below stem end */ - Real dy = Stem::stem_end_position (stem ) * ss / 2; - dy -= mol.extent (Y_AXIS).length () / 2 * Stem::get_direction (stem ); + Real dy = Stem::stem_end_position (stem) * ss / 2; + dy -= mol.extent (Y_AXIS).length () / 2 * Stem::get_direction (stem); /* uhg. Should use relative coords and placement */ Real whole_note_correction; - if (Stem::invisible_b (stem )) + if (Stem::invisible_b (stem)) { - Grob *hed = Stem::support_head (stem ); - whole_note_correction = -Stem::get_direction (stem ) + Grob *hed = Stem::support_head (stem); + whole_note_correction = -Stem::get_direction (stem) *hed->extent (hed, X_AXIS).length () / 2; } else