X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fengraver.cc;h=eebd22e4bea706dbf8635b70c0e1ebf412cedb24;hb=9f3572d98bb948c9689cd1f75401a029451fa001;hp=2453188fff76d573dc0584b024b039def46dacd8;hpb=04265f11d1f21416ccebd2dcaa1d903dc781b36e;p=lilypond.git diff --git a/lily/engraver.cc b/lily/engraver.cc index 2453188fff..eebd22e4be 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -8,16 +8,14 @@ #include "engraver.hh" -#include "context.hh" -#include "international.hh" -#include "item.hh" -#include "lilypond-key.hh" #include "music.hh" -#include "paper-column.hh" #include "score-engraver.hh" -#include "spanner.hh" -#include "stream-event.hh" #include "warn.hh" +#include "spanner.hh" +#include "item.hh" +#include "context.hh" +#include "score-context.hh" +#include "lilypond-key.hh" Engraver_group * Engraver::get_daddy_engraver () const @@ -38,18 +36,13 @@ Engraver::announce_end_grob (Grob_info inf) } /* - CAUSE is the object (typically a Stream_event object) that + CAUSE is the object (typically a Music object) that was the reason for making E. */ void Engraver::announce_grob (Grob *e, SCM cause) { - /* TODO: Remove Music code when it's no longer needed */ - if (Music *m = unsmob_music (cause)) - { - cause = m->to_event ()->unprotect (); - } - if (unsmob_stream_event (cause) || unsmob_grob (cause)) + if (unsmob_music (cause) || unsmob_grob (cause)) e->set_property ("cause", cause); Grob_info i (this, e); @@ -67,12 +60,7 @@ Engraver::announce_grob (Grob *e, SCM cause) void Engraver::announce_end_grob (Grob *e, SCM cause) { - /* TODO: Remove Music code when it's no longer needed */ - if (Music *m = unsmob_music (cause)) - { - cause = m->to_event ()->unprotect (); - } - if (unsmob_stream_event (cause) || unsmob_grob (cause)) + if (unsmob_music (cause) || unsmob_grob (cause)) e->set_property ("cause", cause); Grob_info i (this, e); @@ -88,78 +76,6 @@ Engraver::Engraver () { } -#ifndef NDEBUG -static SCM creation_callback = SCM_EOL; -LY_DEFINE (ly_set_grob_creation_callback, "ly:set-grob-creation-callback", - 1, 0, 0, (SCM cb), - "Specify a procedure that will be called every time a new grob " - "is created. The callback will receive as arguments the grob " - "that was created, the name of the C++ source file that caused " - "the grob to be created and the corresponding line number in the " - "C++ source file.") -{ - if (!ly_is_procedure (cb)) - warning (_ ("not setting creation callback: not a procedure")); - else - creation_callback = cb; - - return SCM_EOL; -} -#endif - -Grob * -Engraver::internal_make_grob (SCM symbol, SCM cause, char const *name, char const *file, int line, char const *fun) -{ - SCM props = updated_grob_properties (context (), symbol); - - Object_key const *key = context ()->get_grob_key (name); - Grob *grob = 0; - - SCM handle = scm_sloppy_assq (ly_symbol2scm ("meta"), props); - SCM klass = scm_cdr (scm_sloppy_assq (ly_symbol2scm ("class"), scm_cdr (handle))); - - if (klass == ly_symbol2scm ("Item")) - grob = new Item (props, key); - else if (klass == ly_symbol2scm ("Spanner")) - grob = new Spanner (props, key); - else if (klass == ly_symbol2scm ("Paper_column")) - grob = new Paper_column (props, key); - - assert (grob); - announce_grob (grob, cause); - -#ifndef NDEBUG - if (ly_is_procedure (creation_callback)) - scm_apply_0 (creation_callback, - scm_list_n (grob->self_scm (), scm_makfrom0str (file), - scm_from_int (line), scm_makfrom0str (fun), SCM_UNDEFINED)); -#endif - - return grob; -} - -Item * -Engraver::internal_make_item (SCM x, SCM cause, char const *name, char const *file, int line, char const *fun) -{ - Item *it = dynamic_cast (internal_make_grob (x, cause, name, file, line, fun)); - assert (it); - return it; -} - -Paper_column * -Engraver::internal_make_column (SCM x, char const *name, char const *file, int line, char const *fun) -{ - return dynamic_cast (internal_make_grob (x, SCM_EOL, name, file, line, fun)); -} - -Spanner * -Engraver::internal_make_spanner (SCM x, SCM cause, char const *name, char const *file, int line, char const *fun) -{ - Spanner *sp = dynamic_cast (internal_make_grob (x, cause, name, file, line, fun)); - assert (sp); - return sp; -} - #include "translator.icc" ADD_TRANSLATOR (Engraver,