2 new-staff-margin-engraver.cc -- implement Instrument_name_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "engraver.hh"
11 #include "text-item.hh"
13 #include "span-bar.hh"
15 class Instrument_name_engraver : public Engraver
19 void create_text (SCM s);
21 VIRTUAL_COPY_CONS(Translator);
22 Instrument_name_engraver ();
24 virtual void acknowledge_element (Score_element_info);
25 virtual void do_pre_move_processing ();
28 ADD_THIS_TRANSLATOR(Instrument_name_engraver);
30 Instrument_name_engraver::Instrument_name_engraver ()
37 Instrument_name_engraver::do_pre_move_processing ()
41 typeset_element (text_);
47 Instrument_name_engraver::create_text (SCM txt)
51 text_ = new Text_item;
52 text_->set_elt_property ("text", txt);
53 text_->set_elt_property ("breakable", SCM_BOOL_T);
56 TODO: use more lispish names for break-align-symbols
58 text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
59 text_->set_elt_property ("visibility-lambda",
60 scm_eval (ly_symbol2scm ("begin-of-line-visible")));
62 announce_element (Score_element_info (text_,0));
67 Instrument_name_engraver::acknowledge_element (Score_element_info i)
69 SCM s = get_property ("instrument");
71 if (now_mom () > Moment (0))
72 s = get_property ("instr");
76 if (Bar* b= dynamic_cast<Bar*> (i.elem_l_))
79 if (Span_bar* s= dynamic_cast<Span_bar*> (b))
81 text_->set_parent (s, Y_AXIS);