From 7930d1d381283980bb0ee7ea50bfa3e553231665 Mon Sep 17 00:00:00 2001 From: fred Date: Wed, 29 Jul 1998 14:03:04 +0000 Subject: [PATCH] lilypond-1.0.1 --- lily/bar-column-engraver.cc | 103 ++++++++++++++++++++++++++++++++++++ lily/bar-number-engraver.cc | 84 +++++++++++++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 lily/bar-column-engraver.cc create mode 100644 lily/bar-number-engraver.cc diff --git a/lily/bar-column-engraver.cc b/lily/bar-column-engraver.cc new file mode 100644 index 0000000000..2f1d760fa5 --- /dev/null +++ b/lily/bar-column-engraver.cc @@ -0,0 +1,103 @@ +/* + bar-column-grav.cc -- implement Bar_column_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#include "bar-column-engraver.hh" +#include "bar-column.hh" +#include "request.hh" +#include "script.hh" +#include "bar.hh" + +Bar_column_engraver::Bar_column_engraver() +{ + bar_l_ =0; + barcol_p_ =0; + break_priority_i_ = 0; +} + +void +Bar_column_engraver::do_creation_processing () +{ +} + + +void +Bar_column_engraver::do_process_requests () +{ + Scalar pri = get_property ("barColumnPriority"); + if (pri.length_i() && pri.isnum_b ()) + { + break_priority_i_ = int(pri); + } +} + +void +Bar_column_engraver::create_column () +{ + if (!barcol_p_) + { + barcol_p_ = new Bar_column; + barcol_p_->breakable_b_ =true; + barcol_p_->break_priority_i_ = break_priority_i_; + announce_element (Score_element_info (barcol_p_, 0)); + } +} + + +void +Bar_column_engraver::acknowledge_element (Score_element_info info) +{ + Item * it = info.elem_l_->access_Item (); + if (!it) + return; + + if (it->is_type_b (Script::static_name()) + && it->breakable_b_ + && info.origin_grav_l_arr_.size() == 1 + && it->break_priority_i_ == break_priority_i_) + { + create_column (); + barcol_p_->add_script ((Script*)it); + } + else if (info.origin_grav_l_arr_.size() == 1 + && it->break_priority_i_ == break_priority_i_ + && it->breakable_b_ + && it->is_type_b (Bar::static_name())) + { + create_column (); + barcol_p_->set_bar ( (Bar*)it); + } +} + + +void +Bar_column_engraver::process_acknowledged () +{ +} + + + +void +Bar_column_engraver::do_pre_move_processing() +{ + if (barcol_p_) + { + typeset_element (barcol_p_); + barcol_p_ =0; + } +} + +void +Bar_column_engraver::do_post_move_processing() +{ + script_l_arr_.clear(); + bar_l_ =0; +} + +IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver); +ADD_THIS_TRANSLATOR(Bar_column_engraver); diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc new file mode 100644 index 0000000000..8a79324621 --- /dev/null +++ b/lily/bar-number-engraver.cc @@ -0,0 +1,84 @@ +/* + bar-number-grav.cc -- implement Bar_number_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#include "bar-number-engraver.hh" +#include "script.hh" +#include "text-def.hh" +#include "paper-def.hh" +#include "command-request.hh" +#include "bar.hh" +#include "span-bar.hh" +#include "stem.hh" +#include "time-description.hh" +#include "dimension.hh" + +Bar_number_engraver::Bar_number_engraver() +{ + script_p_ =0; +} + +void +Bar_number_engraver::acknowledge_element (Score_element_info i) +{ + + Item *it=i.elem_l_->access_Item (); + if (script_p_ + || !it || !it->is_type_b (Bar::static_name())) + return; + + /* Only put numbers on bars that are at our own level (don't put + numbers over the staffs of a GrandStaff, only over the GrandStaff + itself */ + if (i.origin_grav_l_arr_.size() != 1) + return; + + Time_description const * time = get_staff_info().time_C_; + if (!time || time->cadenza_b_) + return; + + script_p_ = new Script; + Text_def *td_p = new Text_def; + td_p->text_str_ = to_str (time->bars_i_); + + td_p->align_dir_ = LEFT; + + script_p_->dir_ = UP; + script_p_->axis_ = Y_AXIS; + script_p_->specs_p_ = td_p->clone (); + script_p_->breakable_b_ = true; + + Scalar pri = get_property ("barNumberBreakPriority"); + if (pri.length_i () && pri.isnum_b ()) + { + script_p_->break_priority_i_ = int (pri); + } + else + script_p_->break_priority_i_ = it->break_priority_i_; + + Scalar padding = get_property ("barScriptPadding"); + if (padding.length_i() && padding.isnum_b ()) + { + script_p_->padding_f_ = Real(padding); + } + + announce_element (Score_element_info (script_p_,0)); +} + +void +Bar_number_engraver::do_pre_move_processing() +{ + if (script_p_) + { + typeset_element (script_p_); + script_p_ =0; + } +} + +IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver); +ADD_THIS_TRANSLATOR(Bar_number_engraver); -- 2.39.5