X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faxis-group-engraver.cc;h=0b491eefc93f3ce689edcd76475db8d430f4bffa;hb=9e781b7dc83b60a543ce218aa1a5f139f74c760f;hp=a19ab52af89dcd0d52f74ec3e9e2922308322c89;hpb=80519507c1863ce885f9b28c36fd68fef4dbd85b;p=lilypond.git diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index a19ab52af8..0b491eefc9 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1999--2012 Han-Wen Nienhuys + Copyright (C) 1999--2014 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 @@ -36,10 +36,12 @@ class Axis_group_engraver : public Engraver { protected: + bool active_; Spanner *staffline_; SCM interesting_; vector elts_; void process_music (); + virtual void initialize (); virtual void finalize (); DECLARE_ACKNOWLEDGER (grob); void process_acknowledged (); @@ -57,6 +59,15 @@ Axis_group_engraver::Axis_group_engraver () { staffline_ = 0; interesting_ = SCM_EOL; + active_ = false; +} + +void +Axis_group_engraver::initialize () +{ + active_ = !to_boolean (get_property ("hasAxisGroup")); + if (active_) + context ()->set_property ("hasAxisGroup", SCM_BOOL_T); } void @@ -75,7 +86,7 @@ Axis_group_engraver::must_be_last () const void Axis_group_engraver::process_music () { - if (!staffline_) + if (!staffline_ && active_) { staffline_ = get_spanner (); Grob *it = unsmob_grob (get_property ("currentCommandColumn")); @@ -105,17 +116,8 @@ Axis_group_engraver::finalize () void Axis_group_engraver::acknowledge_grob (Grob_info i) { - if (!staffline_) - return; - if (i.grob ()->name () == "VerticalAxisGroup") { - i.grob ()->programming_error ("duplicate axis group"); - if (staffline_->is_live ()) - staffline_->suicide (); - staffline_ = 0; - elts_.clear (); - return; - } - elts_.push_back (i.grob ()); + if (staffline_) + elts_.push_back (i.grob ()); if (staffline_ && to_boolean(staffline_->get_property("remove-empty"))) { @@ -175,8 +177,9 @@ ADD_TRANSLATOR (Axis_group_engraver, /* read */ "currentCommandColumn " - "keepAliveInterfaces ", - + "keepAliveInterfaces " + "hasAxisGroup ", + /* write */ - "" + "hasAxisGroup " );