X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fligature-bracket-engraver.cc;h=975b85b7751bdd7b97329992ed848c8c94e17196;hb=8c5c989229e161f686984b4012db6eded2baf149;hp=9266ccce61c8cb60cee7de7219d310ab27c7f634;hpb=487ee28c2a58e7bd5cb9e85c7676057c0b32f385;p=lilypond.git diff --git a/lily/ligature-bracket-engraver.cc b/lily/ligature-bracket-engraver.cc index 9266ccce61..975b85b775 100644 --- a/lily/ligature-bracket-engraver.cc +++ b/lily/ligature-bracket-engraver.cc @@ -3,19 +3,29 @@ source file of the GNU LilyPond music typesetter - (c) 2002 Juergen Reuter + (c) 2002--2004 Juergen Reuter */ #include "ligature-engraver.hh" +#include "note-column.hh" +#include "tuplet-bracket.hh" #include "spanner.hh" +/* + * This engraver marks ligatures of any kind by just printing a + * horizontal square bracket on top of each ligature. See class + * Ligature_engraver for more information on the interaction between + * this class and its superclass. + */ class Ligature_bracket_engraver : public Ligature_engraver { protected: virtual Spanner *create_ligature_spanner (); + virtual void acknowledge_grob (Grob_info); + virtual void typeset_ligature (Spanner *ligature, Array); public: - TRANSLATOR_DECLARATIONS(Ligature_bracket_engraver); + TRANSLATOR_DECLARATIONS (Ligature_bracket_engraver); private: void typeset_ligature_bracket (); @@ -29,13 +39,33 @@ Ligature_bracket_engraver::Ligature_bracket_engraver () Spanner * Ligature_bracket_engraver::create_ligature_spanner () { - return new Spanner (get_property ("LigatureBracket")); + return make_spanner ("LigatureBracket"); +} + +void +Ligature_bracket_engraver::typeset_ligature (Spanner *ligature, Array) +{ + typeset_grob (ligature); +} + +void +Ligature_bracket_engraver::acknowledge_grob (Grob_info info) +{ + if (current_ligature ()) + { + if (Note_column::has_interface (info.grob_)) + { + Tuplet_bracket::add_column (current_ligature (), + dynamic_cast (info.grob_)); + } + else Ligature_engraver::acknowledge_grob (info); + } } -ENTER_DESCRIPTION(Ligature_bracket_engraver, +ENTER_DESCRIPTION (Ligature_bracket_engraver, /* descr */ "Handles Ligature_events by engraving Ligature brackets.", -/* creats*/ "LigatureBracket", -/* accepts */ "", -/* acks */ "ligature-head-interface rest-interface", +/* creats*/ "TupletBracket", +/* accepts */ "ligature-event", +/* acks */ "rest-interface note-column-interface", /* reads */ "", /* write */ "");