X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fgrob-pq-engraver.cc;h=542880c184d6808d185e9ae82a692440add911a0;hb=9fc8eafc925fc7481d1163a43fb02c9b1f28fb9c;hp=c620d4c5f8b481ec3a6af1bb2193573000649d0c;hpb=37ec023ff30dca4f6850331fbd526940f8570939;p=lilypond.git diff --git a/lily/grob-pq-engraver.cc b/lily/grob-pq-engraver.cc index c620d4c5f8..542880c184 100644 --- a/lily/grob-pq-engraver.cc +++ b/lily/grob-pq-engraver.cc @@ -1,9 +1,9 @@ -/* - grob-pq-engraver.cc -- implement Grob_pq_engraver +/* + grob-pq-engraver.cc -- implement Grob_pq_engraver source file of the GNU LilyPond music typesetter - (c) 2001--2004 Han-Wen Nienhuys + (c) 2001--2005 Han-Wen Nienhuys */ #include "context.hh" @@ -11,7 +11,7 @@ #include "grob.hh" #include "warn.hh" -class Grob_pq_engraver: public Engraver +class Grob_pq_engraver : public Engraver { public: TRANSLATOR_DECLARATIONS (Grob_pq_engraver); @@ -22,7 +22,6 @@ protected: virtual void stop_translation_timestep (); }; - Grob_pq_engraver::Grob_pq_engraver () { } @@ -30,34 +29,34 @@ Grob_pq_engraver::Grob_pq_engraver () void Grob_pq_engraver::initialize () { - daddy_context_->set_property ("busyGrobs", SCM_EOL); + context ()->set_property ("busyGrobs", SCM_EOL); } LY_DEFINE (ly_grob_pq_less_p, "ly:grob-pq-less?", - 2, 0 ,0, (SCM a, SCM b), - "Compare 2 grob priority queue entries. Internal") + 2, 0, 0, (SCM a, SCM b), + "Compare 2 grob priority queue entries. Internal") { - if (Moment::compare (*unsmob_moment (gh_car (a)), - *unsmob_moment (gh_car (b))) < 0) + if (Moment::compare (*unsmob_moment (scm_car (a)), + *unsmob_moment (scm_car (b))) < 0) return SCM_BOOL_T; else return SCM_BOOL_F; } - + void Grob_pq_engraver::acknowledge_grob (Grob_info gi) { - Music * m = gi.music_cause (); + Music *m = gi.music_cause (); if (m - && !gi.grob_->internal_has_interface (ly_symbol2scm ("multi-measure-interface"))) + && !gi.grob ()->internal_has_interface (ly_symbol2scm ("multi-measure-interface"))) { Moment n = now_mom (); Moment l = m->get_length (); if (!l.to_bool ()) - return ; - + return; + if (n.grace_part_) { l.grace_part_ = l.main_part_; @@ -66,29 +65,28 @@ Grob_pq_engraver::acknowledge_grob (Grob_info gi) Moment end = n + l; SCM lst = scm_acons (end.smobbed_copy (), - gi.grob_->self_scm (), - SCM_EOL); + gi.grob ()->self_scm (), + SCM_EOL); - SCM busy= get_property ("busyGrobs"); + SCM busy = get_property ("busyGrobs"); busy = scm_merge_x (lst, busy, ly_grob_pq_less_p_proc); - daddy_context_->set_property ("busyGrobs", busy); + context ()->set_property ("busyGrobs", busy); } } - void Grob_pq_engraver::stop_translation_timestep () { Moment now = now_mom (); SCM start_busy = get_property ("busyGrobs"); SCM busy = start_busy; - while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) == now) + while (scm_is_pair (busy) && *unsmob_moment (scm_caar (busy)) == now) { - busy = gh_cdr (busy); + busy = scm_cdr (busy); } if (start_busy != busy) - daddy_context_->set_property ("busyGrobs", busy); + context ()->set_property ("busyGrobs", busy); } void @@ -98,29 +96,28 @@ Grob_pq_engraver::start_translation_timestep () SCM start_busy = get_property ("busyGrobs"); SCM busy = start_busy; - while (gh_pair_p (busy) && *unsmob_moment (gh_caar (busy)) < now) + while (scm_is_pair (busy) && *unsmob_moment (scm_caar (busy)) < now) { /* The grob-pq-engraver is not water tight, and stuff like tupletSpannerDuration confuses it. - */ - busy = gh_cdr (busy); + */ + busy = scm_cdr (busy); } if (start_busy != busy) - daddy_context_->set_property ("busyGrobs", busy); + context ()->set_property ("busyGrobs", busy); } +ADD_TRANSLATOR (Grob_pq_engraver, -ENTER_DESCRIPTION (Grob_pq_engraver, - -/* descr */ "Administrate when certain grobs (eg. note heads) stop playing; this \ + /* descr */ "Administrate when certain grobs (eg. note heads) stop playing; this \ engraver is a sort-of a failure, since it doesn't handle all sorts of \ borderline cases very well. \ -", \ - -/* creats*/ "", \ -/* accepts */ "", \ -/* acks */ "grob-interface", \ -/* reads */ "busyGrobs", \ -/* write */ "busyGrobs"); +", + + /* creats*/ "",\ + /* accepts */ "",\ + /* acks */ "grob-interface",\ + /* reads */ "busyGrobs",\ + /* write */ "busyGrobs");