--- /dev/null
+/*
+ vertical-align-grav.hh -- declare Vertical_align_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef VERTICAL_ALIGN_GRAV_HH
+#define VERTICAL_ALIGN_GRAV_HH
+
+#include "engraver.hh"
+
+class Vertical_align_engraver : public Engraver {
+ Vertical_align_spanner * valign_p_;
+
+public:
+ NAME_MEMBERS();
+ Vertical_align_engraver();
+protected:
+ virtual void acknowledge_element(Score_elem_info);
+ virtual void do_creation_processing();
+ virtual void do_removal_processing();
+};
+
+#endif // VERTICAL_ALIGN_GRAV_HH
info.origin_grav_l_arr_.push(this);
if (info.elem_l_->name() == Bar::static_name()) {
get_staff_info().command_pcol_l()->set_breakable();
- } else if ( info.elem_l_->is_type_b( Line_of_staff::static_name() ) &&
- !scoreline_l_->contains_b( info.elem_l_) )
-
- scoreline_l_->add(info.elem_l_);
-
+ }
+
announce_info_arr_.push(info);
}
void
for (int i =0; i < nobreak_item_p_arr_.size(); i++) {
ps_l->typeset_item(nobreak_item_p_arr_[i], c, 0);
- scoreline_l_->add(nobreak_item_p_arr_[i]);
+ scoreline_l_->add_dependency(nobreak_item_p_arr_[i]);
}
nobreak_item_p_arr_.set_size(0);
Score_engraver::do_try_request(Request*r)
{
bool gotcha = false;
- for (int i =0; !gotcha && i < nongroup_l_arr_.size() ; i++)
+ for ( int i =0; !gotcha && i < nongroup_l_arr_.size() ; i++)
gotcha = nongroup_l_arr_[i]->try_request(r);
return gotcha;
IMPLEMENT_STATIC_NAME(Line_of_score);
-IMPLEMENT_IS_TYPE_B2(Line_of_score,Spanner,Vertical_align_elem);
+IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
void
Line_of_score::add(Score_elem*e)
{
- if (e->is_type_b( Line_of_staff::static_name())
- && ! Vertical_align_elem::contains_b( e) )
-
- Vertical_align_elem::add(e);
- else {
- add_dependency(e);
- }
+ add_dependency(e);
}
bool
{
return Spanner::do_width();
}
-
-void
-Line_of_score::do_substitute_dependency(Score_elem*o,Score_elem*n)
-{
- Spanner::do_substitute_dependency(o,n);
- Vertical_align_elem::do_substitute_dependency(o,n);
-}