X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmelody-engraver.cc;h=65f464c357e16982085603a0d86013508342159d;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=0ebd1324506ebf7b404a3ab640ba57e746cf4f91;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/lily/melody-engraver.cc b/lily/melody-engraver.cc index 0ebd132450..65f464c357 100644 --- a/lily/melody-engraver.cc +++ b/lily/melody-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2012 Han-Wen Nienhuys + Copyright (C) 1997--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 @@ -29,14 +29,16 @@ class Melody_engraver : public Engraver Grob *stem_; protected: - DECLARE_ACKNOWLEDGER (stem); - DECLARE_ACKNOWLEDGER (slur); + void acknowledge_stem (Grob_info); + void acknowledge_slur (Grob_info); TRANSLATOR_DECLARATIONS (Melody_engraver); void stop_translation_timestep (); + void process_acknowledged (); void process_music (); }; -Melody_engraver::Melody_engraver () +Melody_engraver::Melody_engraver (Context *c) + : Engraver (c) { stem_ = 0; melody_item_ = 0; @@ -49,8 +51,12 @@ Melody_engraver::process_music () melody_item_ = 0; } +/* + Used to be in stop_translation_timestep, but grobs can't + be created here. +*/ void -Melody_engraver::stop_translation_timestep () +Melody_engraver::process_acknowledged () { if (stem_ && !is_direction (stem_->get_property_data ("neutral-direction"))) @@ -66,6 +72,11 @@ Melody_engraver::stop_translation_timestep () Melody_spanner::add_stem (melody_item_, stem_); } } +} + +void +Melody_engraver::stop_translation_timestep () +{ stem_ = 0; } @@ -83,8 +94,13 @@ Melody_engraver::acknowledge_stem (Grob_info info) #include "translator.icc" -ADD_ACKNOWLEDGER (Melody_engraver, stem); -ADD_ACKNOWLEDGER (Melody_engraver, slur); + +void +Melody_engraver::boot () +{ + ADD_ACKNOWLEDGER (Melody_engraver, stem); + ADD_ACKNOWLEDGER (Melody_engraver, slur); +} ADD_TRANSLATOR (Melody_engraver, /* doc */