X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpage-turn-engraver.cc;h=b294dce7d7f803ca9b083d4a75235870178d2b01;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=d9c1bd12fa4c17b8520e0f344ef39d768cdcdc3e;hpb=40aac0ae57ee113faa860ba221d83d9e6312173e;p=lilypond.git diff --git a/lily/page-turn-engraver.cc b/lily/page-turn-engraver.cc index d9c1bd12fa..b294dce7d7 100644 --- a/lily/page-turn-engraver.cc +++ b/lily/page-turn-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2014 Joe Neeman + Copyright (C) 2006--2015 Joe Neeman LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -66,7 +66,7 @@ public: if (duration_[LEFT] < penalty.duration_[LEFT]) ret.push_back (Page_turn_event (duration_[LEFT], penalty.duration_[LEFT], permission_, penalty_)); - if (penalty.permission_ != SCM_EOL) + if (!scm_is_null (penalty.permission_)) ret.push_back (Page_turn_event (intersect[LEFT], intersect[RIGHT], permission_, new_pen)); if (penalty.duration_[RIGHT] < duration_[RIGHT]) @@ -97,8 +97,8 @@ class Page_turn_engraver : public Engraver Grob *breakable_column (Page_turn_event const &); protected: - DECLARE_TRANSLATOR_LISTENER (break); - DECLARE_ACKNOWLEDGER (note_head); + void listen_break (Stream_event *); + void acknowledge_note_head (Grob_info); public: TRANSLATOR_DECLARATIONS (Page_turn_engraver); @@ -107,7 +107,8 @@ public: void finalize (); }; -Page_turn_engraver::Page_turn_engraver () +Page_turn_engraver::Page_turn_engraver (Context *c) + : Engraver (c) { repeat_begin_ = Moment (-1); repeat_begin_rest_length_ = 0; @@ -148,7 +149,7 @@ Page_turn_engraver::acknowledge_note_head (Grob_info gi) Stream_event *cause = gi.event_cause (); Duration *dur_ptr = cause - ? unsmob_duration (cause->get_property ("duration")) + ? unsmob (cause->get_property ("duration")) : 0; if (!dur_ptr) @@ -168,7 +169,6 @@ Page_turn_engraver::acknowledge_note_head (Grob_info gi) note_end_ = now_mom () + dur_ptr->get_length (); } -IMPLEMENT_TRANSLATOR_LISTENER (Page_turn_engraver, break); void Page_turn_engraver::listen_break (Stream_event *ev) { @@ -208,7 +208,7 @@ Page_turn_engraver::start_translation_timestep () void Page_turn_engraver::stop_translation_timestep () { - Grob *pc = unsmob_grob (get_property ("currentCommandColumn")); + Grob *pc = unsmob (get_property ("currentCommandColumn")); if (pc) { @@ -229,9 +229,9 @@ Page_turn_engraver::stop_translation_timestep () for (; scm_is_pair (cs); cs = scm_cdr (cs)) { SCM command = scm_car (cs); - if (command == ly_symbol2scm ("start-repeat")) + if (scm_is_eq (command, ly_symbol2scm ("start-repeat"))) start = true; - else if (command == ly_symbol2scm ("end-repeat")) + else if (scm_is_eq (command, ly_symbol2scm ("end-repeat"))) end = true; } @@ -239,7 +239,7 @@ Page_turn_engraver::stop_translation_timestep () { Rational now = now_mom ().main_part_; Real pen = penalty ((now_mom () - rest_begin_).main_part_ + repeat_begin_rest_length_); - Moment *m = unsmob_moment (get_property ("minimumRepeatLengthForPageTurn")); + Moment *m = unsmob (get_property ("minimumRepeatLengthForPageTurn")); if (m && *m > (now_mom () - repeat_begin_)) pen = infinity_f; @@ -265,9 +265,10 @@ Page_turn_engraver::stop_translation_timestep () SCM Page_turn_engraver::max_permission (SCM perm1, SCM perm2) { - if (perm1 == SCM_EOL) + if (scm_is_null (perm1)) return perm2; - if (perm1 == ly_symbol2scm ("allow") && perm2 == ly_symbol2scm ("force")) + if (scm_is_eq (perm1, ly_symbol2scm ("allow")) + && scm_is_eq (perm2, ly_symbol2scm ("force"))) return perm2; return perm1; } @@ -341,7 +342,13 @@ Page_turn_engraver::finalize () } } -ADD_ACKNOWLEDGER (Page_turn_engraver, note_head); + +void +Page_turn_engraver::boot () +{ + ADD_LISTENER (Page_turn_engraver, break); + ADD_ACKNOWLEDGER (Page_turn_engraver, note_head); +} ADD_TRANSLATOR (Page_turn_engraver, /* doc */