X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column-engraver.cc;h=8b2b550f2f460891acb13dc46d2a36d3a1e15d14;hb=e90f0536f9be39ada0bef0aeb0d275dec3b2fb5b;hp=06dd38d9b5376da12afb8ca30643105297a86990;hpb=8cab78caa0db1ba14f2e52e4c1ddbb541ea0e5cb;p=lilypond.git diff --git a/lily/paper-column-engraver.cc b/lily/paper-column-engraver.cc index 06dd38d9b5..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--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 "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,6 +235,7 @@ 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++) @@ -252,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);