2 mark-engraver.cc -- implement Mark_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
9 #include "command-request.hh"
10 #include "bar-script-engraver.hh"
11 #include "engraver-group-engraver.hh"
12 #include "text-item.hh"
14 /**Print rehearsal marks.
16 class Mark_engraver : public Bar_script_engraver
20 VIRTUAL_COPY_CONS(Translator);
22 virtual bool do_try_music (Music *req_l);
23 virtual void do_process_music ();
24 virtual void do_post_move_processing ();
26 Mark_req * mark_req_l_;
30 ADD_THIS_TRANSLATOR (Mark_engraver);
32 Mark_engraver::Mark_engraver ()
40 Mark_engraver::do_post_move_processing ()
47 Mark_engraver::do_try_music (Music* r_l)
49 if (Mark_req *mr = dynamic_cast <Mark_req *> (r_l))
51 if (mark_req_l_ && mr->equal_b (mark_req_l_))
62 Mark_engraver::do_process_music ()
66 create_items (mark_req_l_);
70 SCM m = (mark_req_l_->mark_label_ == SCM_UNDEFINED)
71 ? get_property ("rehearsalMark")
72 : SCM(mark_req_l_->mark_label_);
76 int mark_count = gh_scm2int (m);
77 t = to_str (mark_count);
79 m = gh_int2scm (mark_count);
81 else if (gh_string_p (m))
83 t = ly_scm2string (m);
91 m = ly_str02scm (next.ch_C());
98 daddy_trans_l_->set_property ("rehearsalMark", m);
101 text_p_->set_elt_property ("text",
102 ly_str02scm ( t.ch_C()));
103 SCM st = ly_str02scm ((t.index_any_i ("0123456789") >= 0 )
105 text_p_->set_elt_property ("style", st);