X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faxis-group-engraver.cc;h=adc0dae661b92979156be727c5fc14c6a80a6ad5;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=c5dbb94e63eb1d912fe4b09c0b6d8977ee631dd0;hpb=3901f66c1c7db858e1399594f7dc27164ae43bfb;p=lilypond.git diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index c5dbb94e63..adc0dae661 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--2015 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,10 +86,10 @@ 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")); + Grob *it = Grob::unsmob (get_property ("currentCommandColumn")); staffline_->set_bound (LEFT, it); } interesting_ = get_property ("keepAliveInterfaces"); @@ -95,7 +106,7 @@ Axis_group_engraver::finalize () { if (staffline_) { - Grob *it = unsmob_grob (get_property ("currentCommandColumn")); + Grob *it = Grob::unsmob (get_property ("currentCommandColumn")); staffline_->set_bound (RIGHT, it); Pointer_group_interface::set_ordered (staffline_, ly_symbol2scm ("elements"), false); @@ -105,7 +116,8 @@ Axis_group_engraver::finalize () void Axis_group_engraver::acknowledge_grob (Grob_info i) { - elts_.push_back (i.grob ()); + if (staffline_) + elts_.push_back (i.grob ()); if (staffline_ && to_boolean(staffline_->get_property("remove-empty"))) { @@ -129,7 +141,7 @@ Axis_group_engraver::process_acknowledged () for (vsize i = 0; i < elts_.size (); i++) { - if (!unsmob_grob (elts_[i]->get_object ("axis-group-parent-Y"))) + if (!Grob::is_smob (elts_[i]->get_object ("axis-group-parent-Y"))) { if (staffline_->get_parent (Y_AXIS) && staffline_->get_parent (Y_AXIS) == elts_[i]) @@ -165,8 +177,9 @@ ADD_TRANSLATOR (Axis_group_engraver, /* read */ "currentCommandColumn " - "keepAliveInterfaces ", - + "keepAliveInterfaces " + "hasAxisGroup ", + /* write */ - "" + "hasAxisGroup " );