X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=5f83295e18e8135c77b7bb95540b6b080ff70e3f;hb=db4dd36b622417b5fe4c4a4660402e0ac7b5beb1;hp=347d1a7022aa4ed872dd36bec8ae954f664c9a86;hpb=d4bd65ce87936a9b2abdbf941ad572bda4e76768;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index 347d1a7022..5f83295e18 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -3,82 +3,71 @@ Sourcefile of GNU LilyPond music type setter - (c) 1997--2001 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ #include "music.hh" #include "engraver.hh" #include "engraver-group-engraver.hh" #include "grob.hh" -#include "main.hh" #include "score-engraver.hh" #include "warn.hh" +#include "spanner.hh" +#include "item.hh" +#include "context.hh" +#include "score-context.hh" -void -Engraver::announce_grob (Grob_info inf) +Engraver_group_engraver* +Engraver::get_daddy_engraver () const { - daddy_grav_l ()->announce_grob (inf); + return dynamic_cast (get_daddy_translator ()); } void -Engraver::announce_grob (Grob* e, Music *m) +Engraver::announce_grob (Grob_info inf) { - if (m && store_locations_global_b - && m->origin ()->location_str ().length_i ()) - { - e->set_grob_property ("origin", m->get_mus_property ("origin")); - } - - Grob_info i (e, m); - if (!i.origin_trans_l_) - i.origin_trans_l_ = this; - daddy_grav_l ()->announce_grob (i); + get_daddy_engraver ()->announce_grob (inf); } - +/* + CAUSE is the object (typically a Music object) that + was the reason for making E. + */ void -Engraver::typeset_grob (Grob*p) +Engraver::announce_grob (Grob* e, SCM cause) { - daddy_grav_l ()->typeset_grob (p); -} + if (unsmob_music (cause) || unsmob_grob (cause)) + e->set_property ("cause", cause); + Grob_info i; + i.grob_ = e; + if (!i.origin_trans_) + i.origin_trans_ = this; -Engraver_group_engraver* -Engraver::daddy_grav_l () const -{ - return (daddy_trans_l_) - ? dynamic_cast (daddy_trans_l_) - : 0; + Engraver * g = get_daddy_engraver (); + if (g) + g->announce_grob (i); } -void -Engraver::process_music () -{ - -} -Engraver::Engraver() + + + +Engraver::Engraver () { } Score_engraver* -Engraver::top_engraver () const +Engraver::get_score_engraver () const { - /* - ugh. - */ - if (dynamic_cast((Engraver*)this)) - return dynamic_cast ((Engraver*)this); - - if (daddy_trans_l_) - return dynamic_cast (daddy_trans_l_)->top_engraver (); - - programming_error ("No score engraver!"); - return 0; + return dynamic_cast (get_score_context ()->implementation ()); } -ENTER_DESCRIPTION(Engraver, - "", "", "", "", ""); + +ENTER_DESCRIPTION (Engraver, + "", "", + "", + "", "", "");