X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-engraver.cc;h=8d6a16f1ee6f4d8d3f8f953ef4119103db988b05;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=f4dc48bf642c699ea01b8ae5ae3f35fafbf528bd;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index f4dc48bf64..8d6a16f1ee 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2012 Han-Wen Nienhuys + Copyright (C) 2000--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,7 +20,6 @@ #include "engraver.hh" #include "axis-group-interface.hh" -#include "bar-line.hh" #include "context.hh" #include "grob-array.hh" #include "international.hh" @@ -44,7 +43,7 @@ public: TRANSLATOR_DECLARATIONS (Volta_engraver); protected: - DECLARE_ACKNOWLEDGER (bar_line); + void acknowledge_bar_line (Grob_info); virtual void derived_mark () const; void stop_translation_timestep (); @@ -63,7 +62,8 @@ Volta_engraver::derived_mark () const scm_gc_mark (start_string_); } -Volta_engraver::Volta_engraver () +Volta_engraver::Volta_engraver (Context *c) + : Engraver (c) { start_string_ = SCM_EOL; volta_bracket_ = 0; @@ -83,10 +83,10 @@ Volta_engraver::process_music () SCM c = scm_car (cs); if (scm_is_pair (c) - && scm_car (c) == ly_symbol2scm ("volta") + && scm_is_eq (scm_car (c), ly_symbol2scm ("volta")) && scm_is_pair (scm_cdr (c))) { - if (scm_cadr (c) == SCM_BOOL_F) + if (scm_is_false (scm_cadr (c))) end = true; else start_string_ = scm_cadr (c); @@ -100,8 +100,8 @@ Volta_engraver::process_music () SCM l (get_property ("voltaSpannerDuration")); Moment now = now_mom (); - bool early_stop = unsmob_moment (l) - && *unsmob_moment (l) <= now - started_mom_; + bool early_stop = unsmob (l) + && *unsmob (l) <= now - started_mom_; end = end || early_stop; } @@ -162,7 +162,7 @@ Volta_engraver::acknowledge_bar_line (Grob_info i) void Volta_engraver::stop_translation_timestep () { - Grob *cc = unsmob_grob (get_property ("currentCommandColumn")); + Grob *cc = unsmob (get_property ("currentCommandColumn")); Item *ci = dynamic_cast (cc); if (end_volta_bracket_ && !end_volta_bracket_->get_bound (RIGHT)) @@ -174,7 +174,7 @@ Volta_engraver::stop_translation_timestep () if (end_volta_bracket_ && !volta_bracket_) { for (SCM s = get_property ("stavesFound"); scm_is_pair (s); s = scm_cdr (s)) - Side_position_interface::add_support (volta_spanner_, unsmob_grob (scm_car (s))); + Side_position_interface::add_support (volta_spanner_, unsmob (scm_car (s))); volta_spanner_ = 0; } @@ -190,7 +190,12 @@ Volta_engraver::stop_translation_timestep () /* TODO: should attach volta to paper-column if no bar is found. */ -ADD_ACKNOWLEDGER (Volta_engraver, bar_line); +void +Volta_engraver::boot () +{ + ADD_ACKNOWLEDGER (Volta_engraver, bar_line); +} + ADD_TRANSLATOR (Volta_engraver, /* doc */ "Make volta brackets.",