X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftext-spanner-engraver.cc;h=1b66b68f121139530e98d60b42f32fdc553b7666;hb=b872748c6aa8bb721ced458691b38ac2fac5dfc8;hp=52ad7201b1199d123b9ea274785c835a4bc61c20;hpb=40aac0ae57ee113faa860ba221d83d9e6312173e;p=lilypond.git diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index 52ad7201b1..1b66b68f12 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2000--2014 Jan Nieuwenhuizen + Copyright (C) 2000--2015 Jan Nieuwenhuizen LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -34,8 +34,8 @@ public: TRANSLATOR_DECLARATIONS (Text_spanner_engraver); protected: virtual void finalize (); - DECLARE_TRANSLATOR_LISTENER (text_span); - DECLARE_ACKNOWLEDGER (note_column); + void listen_text_span (Stream_event *); + void acknowledge_note_column (Grob_info); void stop_translation_timestep (); void process_music (); @@ -47,7 +47,8 @@ private: void typeset_all (); }; -Text_spanner_engraver::Text_spanner_engraver () +Text_spanner_engraver::Text_spanner_engraver (Context *c) + : Engraver (c) { finished_ = 0; current_event_ = 0; @@ -55,7 +56,6 @@ Text_spanner_engraver::Text_spanner_engraver () event_drul_.set (0, 0); } -IMPLEMENT_TRANSLATOR_LISTENER (Text_spanner_engraver, text_span); void Text_spanner_engraver::listen_text_span (Stream_event *ev) { @@ -87,6 +87,8 @@ Text_spanner_engraver::process_music () { current_event_ = event_drul_[START]; span_ = make_spanner ("TextSpanner", event_drul_[START]->self_scm ()); + if (Direction d = to_dir (current_event_->get_property ("direction"))) + span_->set_property ("direction", scm_from_int (d)); Side_position_interface::set_axis (span_, Y_AXIS); event_drul_[START] = 0; @@ -101,7 +103,7 @@ Text_spanner_engraver::typeset_all () { if (!finished_->get_bound (RIGHT)) { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + Grob *e = unsmob (get_property ("currentMusicalColumn")); finished_->set_bound (RIGHT, e); } finished_ = 0; @@ -113,7 +115,7 @@ Text_spanner_engraver::stop_translation_timestep () { if (span_ && !span_->get_bound (LEFT)) { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + Grob *e = unsmob (get_property ("currentMusicalColumn")); span_->set_bound (LEFT, e); } @@ -154,7 +156,13 @@ Text_spanner_engraver::acknowledge_note_column (Grob_info info) } } -ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); + +void +Text_spanner_engraver::boot () +{ + ADD_LISTENER (Text_spanner_engraver, text_span); + ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); +} ADD_TRANSLATOR (Text_spanner_engraver, /* doc */