X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=d8338972c935267add9cf1a438bc8a0f00c4d93d;hb=c484fb1da7751d35734194e623cb823b559e190f;hp=02e683b05501f8dfea9bdc53e159e514c1914af8;hpb=fc3e875d6bf06f0680e897faffdcab36ad975a03;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index 02e683b055..d8338972c9 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -3,33 +3,46 @@ 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 "score-engraver.hh" +#include "warn.hh" +#include "spanner.hh" +#include "item.hh" void Engraver::announce_grob (Grob_info inf) { - daddy_grav_l ()->announce_grob (inf); + get_daddy_grav ()->announce_grob (inf); } +/* + CAUSE is the object (typically a Music object) that + was the reason for making E. + */ void -Engraver::announce_grob (Grob* e, Music *m) +Engraver::announce_grob (Grob* e, SCM cause) { - if (m && 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); + /* + TODO: junk grob-info, and make a cause grob-property to store + `causes' generically. + */ + if (unsmob_music (cause) || unsmob_grob (cause)) + e->set_grob_property ("cause", cause); + + Grob_info i; + i.grob_ = e; + if (!i.origin_trans_) + i.origin_trans_ = this; + + + + get_daddy_grav ()->announce_grob (i); } @@ -37,15 +50,15 @@ Engraver::announce_grob (Grob* e, Music *m) void Engraver::typeset_grob (Grob*p) { - daddy_grav_l ()->typeset_grob (p); + get_daddy_grav ()->typeset_grob (p); } Engraver_group_engraver* -Engraver::daddy_grav_l () const +Engraver::get_daddy_grav () const { - return (daddy_trans_l_) - ? dynamic_cast (daddy_trans_l_) + return (daddy_trans_) + ? dynamic_cast (daddy_trans_) : 0; } @@ -54,3 +67,19 @@ Engraver::process_music () { } +Engraver::Engraver() +{ +} + + +Score_engraver* +Engraver::top_engraver () const +{ + return dynamic_cast (top_translator()); +} + +ENTER_DESCRIPTION(Engraver, + "", "", + "", + "", "", ""); +