X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ftext-spanner-engraver.cc;h=8b0e72265d41bdd401fd31606fdb7c0556e05a3c;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=fb6c90d81fd96f9e1bdffd37023a5c74abf86587;hpb=fcc5f76615e024803904a055902fdc6a3b24dccb;p=lilypond.git diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index fb6c90d81f..8b0e72265d 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -1,9 +1,20 @@ /* - text-spanner-engraver.cc -- implement Text_spanner_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2000--2015 Jan Nieuwenhuizen - (c) 2000--2007 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 + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "engraver.hh" @@ -41,8 +52,7 @@ Text_spanner_engraver::Text_spanner_engraver () finished_ = 0; current_event_ = 0; span_ = 0; - event_drul_[START] = 0; - event_drul_[STOP] = 0; + event_drul_.set (0, 0); } IMPLEMENT_TRANSLATOR_LISTENER (Text_spanner_engraver, text_span); @@ -59,28 +69,28 @@ Text_spanner_engraver::process_music () if (event_drul_[STOP]) { if (!span_) - event_drul_[STOP]->origin ()->warning (_ ("cannot find start of text spanner")); + event_drul_[STOP]->origin ()->warning (_ ("cannot find start of text spanner")); else - { - finished_ = span_; - announce_end_grob (finished_, SCM_EOL); - span_ = 0; - current_event_ = 0; - } + { + finished_ = span_; + announce_end_grob (finished_, SCM_EOL); + span_ = 0; + current_event_ = 0; + } } if (event_drul_[START]) { if (current_event_) - event_drul_[START]->origin ()->warning (_ ("already have a text spanner")); + event_drul_[START]->origin ()->warning (_ ("already have a text spanner")); else - { - current_event_ = event_drul_[START]; - span_ = make_spanner ("TextSpanner", event_drul_[START]->self_scm ()); + { + current_event_ = event_drul_[START]; + span_ = make_spanner ("TextSpanner", event_drul_[START]->self_scm ()); - Side_position_interface::set_axis (span_, Y_AXIS); - event_drul_[START] = 0; - } + Side_position_interface::set_axis (span_, Y_AXIS); + event_drul_[START] = 0; + } } } @@ -90,10 +100,10 @@ Text_spanner_engraver::typeset_all () if (finished_) { if (!finished_->get_bound (RIGHT)) - { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); - finished_->set_bound (RIGHT, e); - } + { + Grob *e = Grob::unsmob (get_property ("currentMusicalColumn")); + finished_->set_bound (RIGHT, e); + } finished_ = 0; } } @@ -103,13 +113,12 @@ Text_spanner_engraver::stop_translation_timestep () { if (span_ && !span_->get_bound (LEFT)) { - Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); + Grob *e = Grob::unsmob (get_property ("currentMusicalColumn")); span_->set_bound (LEFT, e); } typeset_all (); - event_drul_[START] = 0; - event_drul_[STOP] = 0; + event_drul_.set (0, 0); } void @@ -124,34 +133,39 @@ Text_spanner_engraver::finalize () } } - void Text_spanner_engraver::acknowledge_note_column (Grob_info info) { - if (span_) { - Pointer_group_interface::add_grob (span_, - ly_symbol2scm ("note-columns"), - info.grob()); - add_bound_item (span_, info.grob ()); - } else if (finished_) { - Pointer_group_interface::add_grob (finished_, ly_symbol2scm ("note-columns"), - info.grob()); - add_bound_item (finished_, info.grob ()); - } + if (span_) + { + Pointer_group_interface::add_grob (span_, + ly_symbol2scm ("note-columns"), + info.grob ()); + if (!span_->get_bound (LEFT)) + add_bound_item (span_, info.grob ()); + } + else if (finished_) + { + Pointer_group_interface::add_grob (finished_, + ly_symbol2scm ("note-columns"), + info.grob ()); + if (!finished_->get_bound (RIGHT)) + add_bound_item (finished_, info.grob ()); + } } ADD_ACKNOWLEDGER (Text_spanner_engraver, note_column); ADD_TRANSLATOR (Text_spanner_engraver, - /* doc */ - "Create text spanner from an event.", + /* doc */ + "Create text spanner from an event.", - /* create */ - "TextSpanner ", + /* create */ + "TextSpanner ", - /* read */ - "", + /* read */ + "currentMusicalColumn ", - /* write */ - "" - ); + /* write */ + "" + );