X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faxis-group-engraver.cc;h=d500c6ba64fea97a2f96e362143137ecd01a429e;hb=77267b700c377fd170abcbf4863728937038eb5e;hp=295ba8b403284ec2d270dfc0435f27c0b855b01d;hpb=6eb8d8d2780b4b8e1228d94d845145f558240519;p=lilypond.git diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 295ba8b403..d500c6ba64 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 @@ -43,7 +43,7 @@ protected: void process_music (); virtual void initialize (); virtual void finalize (); - DECLARE_ACKNOWLEDGER (grob); + void acknowledge_grob (Grob_info); void process_acknowledged (); virtual Spanner *get_spanner (); virtual void add_element (Grob *); @@ -55,7 +55,8 @@ public: }; -Axis_group_engraver::Axis_group_engraver () +Axis_group_engraver::Axis_group_engraver (Context *c) + : Engraver (c) { staffline_ = 0; interesting_ = SCM_EOL; @@ -89,7 +90,7 @@ Axis_group_engraver::process_music () if (!staffline_ && active_) { staffline_ = get_spanner (); - Grob *it = unsmob_grob (get_property ("currentCommandColumn")); + Grob *it = unsmob (get_property ("currentCommandColumn")); staffline_->set_bound (LEFT, it); } interesting_ = get_property ("keepAliveInterfaces"); @@ -106,7 +107,7 @@ Axis_group_engraver::finalize () { if (staffline_) { - Grob *it = unsmob_grob (get_property ("currentCommandColumn")); + Grob *it = unsmob (get_property ("currentCommandColumn")); staffline_->set_bound (RIGHT, it); Pointer_group_interface::set_ordered (staffline_, ly_symbol2scm ("elements"), false); @@ -116,15 +117,20 @@ Axis_group_engraver::finalize () void Axis_group_engraver::acknowledge_grob (Grob_info i) { - if (staffline_) - elts_.push_back (i.grob ()); + if (!staffline_) + return; - if (staffline_ && to_boolean(staffline_->get_property("remove-empty"))) + elts_.push_back (i.grob ()); + + if (to_boolean (staffline_->get_property ("remove-empty"))) { for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s)) { if (i.grob ()->internal_has_interface (scm_car (s))) - Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ()); + { + Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ()); + break; + } } } } @@ -141,7 +147,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 (!unsmob (elts_[i]->get_object ("axis-group-parent-Y"))) { if (staffline_->get_parent (Y_AXIS) && staffline_->get_parent (Y_AXIS) == elts_[i]) @@ -165,7 +171,12 @@ Axis_group_engraver::add_element (Grob *e) Axis_group_interface::add_element (staffline_, e); } -ADD_ACKNOWLEDGER (Axis_group_engraver, grob); + +void +Axis_group_engraver::boot () +{ + ADD_ACKNOWLEDGER (Axis_group_engraver, grob); +} ADD_TRANSLATOR (Axis_group_engraver, /* doc */