3 new-staff-margin-engraver.cc -- implement Instrument_name_engraver
5 source file of the GNU LilyPond music typesetter
7 (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "engraver.hh"
12 #include "text-item.hh"
14 #include "system-start-delimiter.hh"
15 #include "side-position-interface.hh"
17 class Instrument_name_engraver : public Engraver
20 System_start_delimiter * delim_ ;
22 void create_text (SCM s);
24 VIRTUAL_COPY_CONS(Translator);
25 Instrument_name_engraver ();
27 virtual void acknowledge_element (Score_element_info);
28 virtual void do_pre_move_processing ();
31 ADD_THIS_TRANSLATOR(Instrument_name_engraver);
33 Instrument_name_engraver::Instrument_name_engraver ()
41 Instrument_name_engraver::do_pre_move_processing ()
45 text_->add_offset_callback (Side_position_interface::centered_on_parent,
48 typeset_element (text_);
54 Instrument_name_engraver::create_text (SCM txt)
58 text_ = new Text_item;
59 text_->set_elt_property ("text", txt);
60 text_->set_elt_property ("breakable", SCM_BOOL_T);
63 TODO: use more lispish names for break-align-symbols
65 text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
66 text_->set_elt_property ("visibility-lambda",
67 scm_eval (ly_symbol2scm ("begin-of-line-visible")));
70 text_->set_parent (delim_, Y_AXIS);
72 announce_element (Score_element_info (text_,0));
77 Instrument_name_engraver::acknowledge_element (Score_element_info i)
79 SCM s = get_property ("instrument");
81 if (now_mom () > Moment (0))
82 s = get_property ("instr");
86 if (Bar* b= dynamic_cast<Bar*> (i.elem_l_))
92 if (dynamic_cast <System_start_delimiter*> (i.elem_l_)
93 && i.origin_trans_l_->daddy_trans_l_ == daddy_trans_l_)
95 delim_ = dynamic_cast<System_start_delimiter*> (i.elem_l_);