From: fred Date: Sun, 24 Mar 2002 20:01:59 +0000 (+0000) Subject: lilypond-0.1.36 X-Git-Tag: release/1.5.59~3633 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3afc2d5589f4b34d1a3f486c16d3cdb914fbbdca;p=lilypond.git lilypond-0.1.36 --- diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc index 78f6aab7bd..6bb055c2fa 100644 --- a/lily/clef-grav.cc +++ b/lily/clef-grav.cc @@ -107,6 +107,7 @@ Clef_engraver::create_clef() if (!clef_p_) { clef_p_ = new Clef_item; + clef_p_->break_priority_i_ = -2; // ugh announce_element (Score_elem_info (clef_p_,clef_req_l_)); } clef_p_->read (*this); diff --git a/lily/include/priority-halign-grav.hh b/lily/include/priority-halign-grav.hh new file mode 100644 index 0000000000..4d6fdb6a7d --- /dev/null +++ b/lily/include/priority-halign-grav.hh @@ -0,0 +1,25 @@ +/* + score-halign-grav.hh -- declare Score_horizontal_align_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef FSCORE_HALIGN_GRAV_HH +#define FSCORE_HALIGN_GRAV_HH + +#include "engraver.hh" + +class Priority_horizontal_align_engraver : public Engraver { + Break_align_item * halign_p_; +public: + TRANSLATOR_CLONE(Priority_horizontal_align_engraver); + DECLARE_MY_RUNTIME_TYPEINFO; + Priority_horizontal_align_engraver(); +protected: + virtual void acknowledge_element (Score_elem_info); + virtual void do_pre_move_processing(); +}; +#endif // Priority_HALIGN_GRAV_HH diff --git a/lily/include/score-priority-grav.hh b/lily/include/score-priority-grav.hh new file mode 100644 index 0000000000..48ed10e7b1 --- /dev/null +++ b/lily/include/score-priority-grav.hh @@ -0,0 +1,31 @@ +/* + score-align-grav.hh -- declare Type_align_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef SCOREF_ALIGN_GRAV_HH +#define SCOREF_ALIGN_GRAV_HH + +#include "engraver.hh" +#include "assoc.hh" + +/** + Group a number of items across staffs + */ +class Score_priority_engraver : public Engraver +{ + Assoc align_p_assoc_; +public: + TRANSLATOR_CLONE(Score_priority_engraver); + Score_priority_engraver (); + DECLARE_MY_RUNTIME_TYPEINFO; +protected: + virtual void acknowledge_element (Score_elem_info); + virtual void do_pre_move_processing(); +}; + +#endif // SCORE_ALIGN_GRAV_HH diff --git a/lily/key-grav.cc b/lily/key-grav.cc index 3abc16b673..42359ae77a 100644 --- a/lily/key-grav.cc +++ b/lily/key-grav.cc @@ -36,6 +36,7 @@ Key_engraver::create_key() c0_i = *get_staff_info().c0_position_i_l_; kit_p_ = new Key_item (c0_i); + kit_p_->break_priority_i_ = -1; // ugh announce_element (Score_elem_info (kit_p_,keyreq_l_)); kit_p_->read (*this); } diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc index 70ca2af2bc..4fecb68d9c 100644 --- a/lily/meter-grav.cc +++ b/lily/meter-grav.cc @@ -32,6 +32,7 @@ Meter_engraver::do_process_requests() args.push (req->one_beat_i_); meter_p_ = new Meter (args); + meter_p_->break_priority_i_ = 1; // ugh } if (meter_p_) diff --git a/lily/priority-halign-grav.cc b/lily/priority-halign-grav.cc new file mode 100644 index 0000000000..a42c4a552e --- /dev/null +++ b/lily/priority-halign-grav.cc @@ -0,0 +1,50 @@ +/* + score-halign-reg.cc -- implement Priority_horizontal_align_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +#include "bar.hh" +#include "break-align-item.hh" +#include "priority-halign-grav.hh" +#include "score-priority-grav.hh" + +Priority_horizontal_align_engraver::Priority_horizontal_align_engraver() +{ + halign_p_ =0; +} + +void +Priority_horizontal_align_engraver::do_pre_move_processing() +{ + if (halign_p_) + { + typeset_element (halign_p_); + halign_p_ =0; + } +} + +void +Priority_horizontal_align_engraver::acknowledge_element (Score_elem_info i) +{ + Engraver* reg = i.origin_grav_l_arr_[0]; + if (reg->is_type_b (Score_priority_engraver::static_name())) + { + if (!halign_p_) + { + halign_p_ = new Break_align_item; + halign_p_->breakable_b_ = true; + announce_element (Score_elem_info (halign_p_,0)); + } + Item * it = i.elem_l_->item(); + if (it->break_priority_i_ == 0) + halign_p_->center_l_ = it; + + halign_p_->add (it, it->break_priority_i_); + } +} + +IMPLEMENT_IS_TYPE_B1(Priority_horizontal_align_engraver,Engraver); +ADD_THIS_TRANSLATOR(Priority_horizontal_align_engraver);