X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=02bf0e107472a48f7a169637f9a0286333f41be8;hb=cec3578c72af76e3e8c8b4603d5d03c8bd32c1e5;hp=6121e82eb1a5398a97d3b3f5230e0f3bcdf2c304;hpb=8002fa018c81f70585c25232247c6dcba7f5cba0;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index 6121e82eb1..02bf0e1074 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -1,63 +1,86 @@ /* engraver.cc -- implement Engraver - Sourcefile of GNU LilyPond musictypesetter + Sourcefile of GNU LilyPond music type setter - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2002 Han-Wen Nienhuys */ -#include "music-list.hh" -#include "musical-request.hh" +#include "music.hh" #include "engraver.hh" #include "engraver-group-engraver.hh" -#include "debug.hh" -#include "paper-def.hh" -#include "score-element.hh" +#include "grob.hh" +#include "main.hh" +#include "score-engraver.hh" +#include "warn.hh" void -Engraver::fill_staff_info (Staff_info&) +Engraver::announce_grob (Grob_info inf) { - + get_daddy_grav ()->announce_grob (inf); } void -Engraver::announce_element (Score_element_info i) +Engraver::announce_grob (Grob* e, SCM cause) { - i.origin_trans_l_arr_.push (this); - daddy_grav_l()->announce_element (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 (e); + if (!i.origin_trans_) + i.origin_trans_ = this; + get_daddy_grav ()->announce_grob (i); } + + void -Engraver::typeset_element (Score_element*p) +Engraver::typeset_grob (Grob*p) { - daddy_grav_l()->typeset_element (p); + get_daddy_grav ()->typeset_grob (p); } -Paper_def* -Engraver::paper_l () const +Engraver_group_engraver* +Engraver::get_daddy_grav () const { - return dynamic_cast(output_def_l_); + return (daddy_trans_) + ? dynamic_cast (daddy_trans_) + : 0; } - -Staff_info -Engraver::get_staff_info() const +void +Engraver::process_music () { - if (daddy_grav_l()) - return daddy_grav_l()->get_staff_info(); - Staff_info info; - return info; + } +Engraver::Engraver() +{ +} +Score_engraver* +Engraver::top_engraver () const +{ + /* + ugh. + */ + if (dynamic_cast((Engraver*)this)) + return dynamic_cast ((Engraver*)this); + if (daddy_trans_) + return dynamic_cast (daddy_trans_)->top_engraver (); -Engraver_group_engraver* -Engraver::daddy_grav_l () const -{ - return (daddy_trans_l_ ) - ? dynamic_cast (daddy_trans_l_) - : 0; + programming_error ("No score engraver!"); + return 0; } + +ENTER_DESCRIPTION(Engraver, + "", "", "", "", ""); +