X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column-engraver.cc;h=8b2b550f2f460891acb13dc46d2a36d3a1e15d14;hb=e3a15ec3c1951dd16f6ee71fbd79870d9e2fb3a0;hp=c662a9baf7ea117fc025273f69fe062dadfa864d;hpb=19bb2e8bc9c42b2ffe8dc680bab084597ce6bf64;p=lilypond.git diff --git a/lily/paper-column-engraver.cc b/lily/paper-column-engraver.cc index c662a9baf7..8b2b550f2f 100644 --- a/lily/paper-column-engraver.cc +++ b/lily/paper-column-engraver.cc @@ -1,9 +1,20 @@ /* - paper-column-engraver.cc -- implement Paper_column_engraver + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2011 Han-Wen Nienhuys - (c) 2005--2007 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 "paper-column-engraver.hh" @@ -31,6 +42,7 @@ Paper_column_engraver::Paper_column_engraver () breaks_ = 0; system_ = 0; first_ = true; + made_columns_ = false; } void @@ -39,6 +51,14 @@ Paper_column_engraver::finalize () if (! (breaks_ % 8)) progress_indication ("[" + to_string (breaks_) + "]"); + if (!made_columns_) + { + make_columns (); + SCM m = now_mom ().smobbed_copy (); + command_column_->set_property ("when", m); + musical_column_->set_property ("when", m); + } + if (command_column_) { if (!scm_is_symbol (command_column_->get_property ("line-break-permission"))) @@ -188,6 +208,9 @@ Paper_column_engraver::process_music () void Paper_column_engraver::stop_translation_timestep () { + if (to_boolean (get_property ("skipTypesetting"))) + return; + SCM m = now_mom ().smobbed_copy (); command_column_->set_property ("when", m); musical_column_->set_property ("when", m); @@ -212,13 +235,15 @@ Paper_column_engraver::stop_translation_timestep () if (to_boolean (get_property ("forbidBreak")) && breaks_) /* don't honour forbidBreak if it occurs on the first moment of a score */ { + command_column_->set_property ("page-turn-permission", SCM_EOL); command_column_->set_property ("page-break-permission", SCM_EOL); command_column_->set_property ("line-break-permission", SCM_EOL); for (vsize i = 0; i < break_events_.size (); i++) { SCM perm = break_events_[i]->get_property ("break-permission"); if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow")) - warning (_f ("forced break was overridden by some other event, should you be using bar checks?")); + warning (_ ("forced break was overridden by some other event, " + "should you be using bar checks?")); } } else if (Paper_column::is_breakable (command_column_)) @@ -251,11 +276,11 @@ Paper_column_engraver::stop_translation_timestep () void Paper_column_engraver::start_translation_timestep () { - /* - TODO: don't make columns when skipTypesetting is true. - */ - if (!first_) - make_columns (); + if (!first_ && !to_boolean (get_property ("skipTypesetting"))) + { + make_columns (); + made_columns_ = true; + } } ADD_ACKNOWLEDGER (Paper_column_engraver, item);