source file of the GNU LilyPond music typesetter
- (c) 1999--2000 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1999--2001 Jan Nieuwenhuizen <janneke@gnu.org>
*/
else
function = gh_list (ly_symbol2scm ("end"), SCM_UNDEFINED);
- Moment one_beat = *unsmob_moment( get_property ("beatLength"));
- int num = *unsmob_moment (get_property("measureLength")) / one_beat;
+ Moment one_beat = *unsmob_moment (get_property ("beatLength"));
+ int num = *unsmob_moment (get_property ("measureLength")) / one_beat;
int den = one_beat.den_i ();
SCM time = gh_list (gh_int2scm (num), gh_int2scm (den), SCM_UNDEFINED);
/* first guess */
/* begin beam at any position
- (and fallback for end) */
+ (and fallback for end) */
Moment moment (0);
/* end beam at end of beat */
Rational r;
if (moment)
- r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
+ {
+ /* Ugh? measurePosition can be negative, when \partial
+ We may have to fix this elsewhere (timing translator)
+ r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment);
+ */
+ Moment pos = * unsmob_moment (get_property ("measurePosition"));
+ if (pos < Moment (0))
+ {
+ Moment length = * unsmob_moment (get_property ("measureLength"));
+ pos = length - pos;
+ }
+ r = pos.mod_rat (moment);
+ }
else
{
if (dir == START)
Spanner*
Auto_beam_engraver::create_beam_p ()
{
+ if (to_boolean (get_property ("skipTypesetting")))
+ {
+ return 0;
+ }
+
Spanner* beam_p = new Spanner (get_property ("Beam"));
- Beam::set_interface (beam_p);
-
for (int i = 0; i < stem_l_arr_p_->size (); i++)
{
/*
scm_unprotect_object (beam_p->self_scm ());
return 0;
}
- Beam::add_stem (beam_p,(*stem_l_arr_p_)[i]);
+ Beam::add_stem (beam_p, (*stem_l_arr_p_)[i]);
}
announce_grob (beam_p, 0);
stem_l_arr_p_ = 0;
delete grouping_p_;
grouping_p_ = 0;
+
shortest_mom_ = Moment (1, 8);
}
junk_beam ();
}
else
+
{
finished_beam_p_ = create_beam_p ();
if (finished_beam_p_)
delete stem_l_arr_p_;
stem_l_arr_p_ = 0;
grouping_p_ = 0;
- shortest_mom_ = Moment (1, 8);
}
+
+ shortest_mom_ = Moment (1, 8);
}
void
{
Moment now = now_mom ();
if ((extend_mom_ < now)
- || ((extend_mom_ == now) && (last_add_mom_ != now )))
+ || ((extend_mom_ == now) && (last_add_mom_ != now)))
{
end_beam ();
}