X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Frest-collision-engraver.cc;h=47e2d71f11d00b0c2c978807c61af21dead1582b;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=4720368c909c3fd5da2a5838c2288e0bce675289;hpb=38d7d319eabc906e82fb42002678c6d42a23b6f7;p=lilypond.git diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index 4720368c90..47e2d71f11 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -1,9 +1,20 @@ /* - rest-collision-engraver.cc -- implement Rest_collision_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2015 Han-Wen Nienhuys - (c) 1997--2009 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 @@ -41,40 +52,37 @@ void Rest_collision_engraver::process_acknowledged () { vsize rest_count = 0; - set columns; + set columns; Moment now = now_mom (); for (SCM s = get_property ("busyGrobs"); scm_is_pair (s); s = scm_cdr (s)) { - Grob *g = unsmob_grob (scm_cdar (s)); - Moment *m = unsmob_moment (scm_caar (s)); + Grob *g = Grob::unsmob (scm_cdar (s)); + Moment *m = Moment::unsmob (scm_caar (s)); if (!g || !m) - continue; + continue; if (Rhythmic_head::has_interface (g) && (*m) > now) - { - Grob *column = g->get_parent (X_AXIS); - if (!column) - { - g->warning (_ ("rhythmic head is not part of a rhythmic column")); - continue; - } - - // Only include rests that start now. Include notes that started any time. - Paper_column *paper_column = dynamic_cast (column)->get_column (); - if (!Rest::has_interface (g) || !paper_column || Paper_column::when_mom (paper_column) == now) - { - columns.insert (column); - rest_count += Note_column::has_rests (column); - } - } + { + Grob *column = g->get_parent (X_AXIS); + if (!column) + continue; + + // Only include rests that start now. Include notes that started any time. + Paper_column *paper_column = dynamic_cast (column)->get_column (); + if (!Rest::has_interface (g) || !paper_column || Paper_column::when_mom (paper_column) == now) + { + columns.insert (column); + rest_count += Note_column::has_rests (column); + } + } } if (!rest_collision_ && rest_count && columns.size () > 1) { rest_collision_ = make_item ("RestCollision", SCM_EOL); - for (set::iterator i = columns.begin (); i != columns.end (); ++i) - Rest_collision::add_column (rest_collision_, *i); + for (set::iterator i = columns.begin (); i != columns.end (); ++i) + Rest_collision::add_column (rest_collision_, *i); } } @@ -87,15 +95,15 @@ Rest_collision_engraver::stop_translation_timestep () #include "translator.icc" ADD_TRANSLATOR (Rest_collision_engraver, - /* doc */ - "Handle collisions of rests.", + /* doc */ + "Handle collisions of rests.", - /* create */ - "RestCollision ", + /* create */ + "RestCollision ", - /* read */ - "busyGrobs ", + /* read */ + "busyGrobs ", - /* write */ - "" - ); + /* write */ + "" + );