2 regular-spacing-engraver.cc -- implement Regular_spacing_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "engraver.hh"
13 class Regular_spacing_engraver : public Engraver
16 Regular_spacing_engraver ();
17 VIRTUAL_COPY_CONS(Translator);
22 virtual void process_music ();
25 Regular_spacing_engraver::Regular_spacing_engraver ()
31 Regular_spacing_engraver::process_music ()
33 SCM delta = get_property ("regularSpacingDelta");
35 if (unsmob_moment (delta))
37 SCM mp = get_property ("measurePosition");
38 if (!unsmob_moment (mp))
41 Rational d = unsmob_moment (delta)->main_part_;
42 Rational p = unsmob_moment (mp)->main_part_;
44 if (p.mod_rat (d) != Rational (0))
47 Moment now = now_mom ();
48 SCM col = get_property ("currentMusicalColumn");
50 && (now -last_moment_ ).main_part_ == d)
52 unsmob_grob (col)->set_grob_property ("regular-distance-to", last_col_);
60 ADD_THIS_TRANSLATOR(Regular_spacing_engraver);