From 5c1017a343ba9bb96fd08de30a3c5c144c348d1c Mon Sep 17 00:00:00 2001 From: fred Date: Sat, 25 Jul 1998 00:58:16 +0000 Subject: [PATCH] lilypond-1.0.1 --- lily/vertical-align-engraver.cc | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lily/vertical-align-engraver.cc diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc new file mode 100644 index 0000000000..2f56e3b7b3 --- /dev/null +++ b/lily/vertical-align-engraver.cc @@ -0,0 +1,62 @@ +/* + vertical-align-grav.cc -- implement Vertical_align_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "p-col.hh" +#include "vertical-align-engraver.hh" +#include "vertical-align-spanner.hh" +#include "vertical-group-spanner.hh" + +Vertical_align_engraver::Vertical_align_engraver() +{ + valign_p_ =0; +} + +void +Vertical_align_engraver::do_creation_processing() +{ + valign_p_ =new Vertical_align_spanner; + valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ()); + announce_element (Score_element_info (valign_p_ , 0)); +} + +void +Vertical_align_engraver::do_removal_processing() +{ + Scalar dist (get_property ("maxVerticalAlign")); + if (dist.length_i () && dist.isnum_b ()) + { + valign_p_->threshold_interval_[BIGGER] = Real (dist); + } + + dist = get_property ("minVerticalAlign"); + if (dist.length_i () && dist.isnum_b ()) + { + valign_p_->threshold_interval_[SMALLER] = Real (dist); + } + + valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ()); + typeset_element (valign_p_); + valign_p_ =0; +} + +void +Vertical_align_engraver::acknowledge_element (Score_element_info i) +{ + if (i.origin_grav_l_arr_.size() == 1 && + i.elem_l_->is_type_b (Vertical_group_spanner::static_name()) && + !i.elem_l_->axis_group_l_a_[Y_AXIS]) + { + assert (!valign_p_->contains_b (i.elem_l_)); + + valign_p_->add_element (i.elem_l_); + } +} + + +IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver); +ADD_THIS_TRANSLATOR(Vertical_align_engraver); -- 2.39.5