X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscript-row-engraver.cc;h=ccbdb7853f63fa6b56172851d1be8ecfdaf9aa8a;hb=f7278543a3ca65ee239696c21b4a8d0155bb79db;hp=3f81f54380639ed551d9bd744cfbb8b6d534630e;hpb=358d6e99ada8019268ade9ba9080b2d0d88eeb7a;p=lilypond.git diff --git a/lily/script-row-engraver.cc b/lily/script-row-engraver.cc index 3f81f54380..ccbdb7853f 100644 --- a/lily/script-row-engraver.cc +++ b/lily/script-row-engraver.cc @@ -1,20 +1,32 @@ -/* - script-row-engraver.cc -- implement Script_row_engraver - - source file of the GNU LilyPond music typesetter - - (c) 2006 Han-Wen Nienhuys - -*/ +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2006--2011 Han-Wen Nienhuys + + 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" + +#include "accidental-placement.hh" +#include "item.hh" #include "script-column.hh" #include "side-position-interface.hh" #include "translator.icc" - /** Find potentially colliding scripts, and put them in a Script_row @@ -22,11 +34,12 @@ class Script_row_engraver : public Engraver { Grob *script_row_; - vector scripts_; - + vector scripts_; + public: TRANSLATOR_DECLARATIONS (Script_row_engraver); protected: + DECLARE_ACKNOWLEDGER (accidental_placement); DECLARE_ACKNOWLEDGER (side_position); void process_acknowledged (); void stop_translation_timestep (); @@ -43,8 +56,9 @@ Script_row_engraver::stop_translation_timestep () if (script_row_) { for (vsize i = 0; i < scripts_.size (); i++) - if (Side_position_interface::get_axis (scripts_[i]) == X_AXIS) - Script_column::add_side_positioned (script_row_, scripts_[i]); + if (Accidental_placement::has_interface (scripts_[i]) + || Side_position_interface::get_axis (scripts_[i]) == X_AXIS) + Script_column::add_side_positioned (script_row_, scripts_[i]); } scripts_.clear (); @@ -58,10 +72,16 @@ Script_row_engraver::acknowledge_side_position (Grob_info inf) if (thing) { if (!Item::is_non_musical (thing)) - scripts_.push_back (thing); + scripts_.push_back (thing); } } +void +Script_row_engraver::acknowledge_accidental_placement (Grob_info inf) +{ + scripts_.push_back (inf.grob ()); +} + void Script_row_engraver::process_acknowledged () { @@ -69,10 +89,18 @@ Script_row_engraver::process_acknowledged () script_row_ = make_item ("ScriptRow", SCM_EOL); } - +ADD_ACKNOWLEDGER (Script_row_engraver, accidental_placement); ADD_ACKNOWLEDGER (Script_row_engraver, side_position); ADD_TRANSLATOR (Script_row_engraver, - /* doc */ "Determine order in horizontal side position elements. ", - /* create */ "ScriptRow ", - /* read */ "", - /* write */ ""); + /* doc */ + "Determine order in horizontal side position elements.", + + /* create */ + "ScriptRow ", + + /* read */ + "", + + /* write */ + "" + );