X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fmark-engraver.cc;h=fc09cde8baa4c0b5d2c88fc5426172ba6a37b8d8;hb=0568120713137e8d51f39f2a95f57c8e8cb5587d;hp=471bd046fb806e6dc827d28bcc8ea85643814727;hpb=243db47a88df9240a66bde37356b43aaeb41260d;p=lilypond.git diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 471bd046fb..fc09cde8ba 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -3,13 +3,13 @@ source file of the GNU LilyPond music typesetter - (c) 1998--2003 Jan Nieuwenhuizen + (c) 1998--2004 Jan Nieuwenhuizen */ #include #include "bar-line.hh" - +#include "context.hh" #include "engraver-group-engraver.hh" #include "engraver.hh" #include "item.hh" @@ -23,10 +23,9 @@ class Mark_engraver : public Engraver { public: - TRANSLATOR_DECLARATIONS(Mark_engraver); + TRANSLATOR_DECLARATIONS (Mark_engraver); protected: - Item* text_; - + Item *text_; protected: virtual void stop_translation_timestep (); virtual void acknowledge_grob (Grob_info); @@ -68,8 +67,8 @@ Mark_engraver::stop_translation_timestep () { if (text_) { - text_->set_grob_property ("side-support-elements" , get_property ("stavesFound")); - typeset_grob (text_); + SCM lst = get_property ("stavesFound"); + text_->set_property ("side-support-elements" , lst); text_ =0; } mark_ev_ = 0; @@ -82,8 +81,7 @@ Mark_engraver::create_items (Music *ev) if (text_) return; - text_ = make_item ("RehearsalMark"); - announce_grob(text_, ev->self_scm()); + text_ = make_item ("RehearsalMark", ev->self_scm ()); } @@ -96,11 +94,7 @@ Mark_engraver::try_music (Music* r) /* - TODO: make the increment function in Scheme. - - - TODO: junk the number type for rehearsalMark */ void Mark_engraver::process_music () @@ -114,38 +108,44 @@ Mark_engraver::process_music () */ - SCM m = mark_ev_->get_mus_property ("label"); + SCM m = mark_ev_->get_property ("label"); SCM proc = get_property ("markFormatter"); if (!Text_item::markup_p (m) && - gh_procedure_p (proc)) + ly_c_procedure_p (proc)) { - if (!gh_number_p (m)) + if (!ly_c_number_p (m)) m = get_property ("rehearsalMark"); if (scm_integer_p (m) == SCM_BOOL_T && scm_exact_p (m) == SCM_BOOL_T) { - int mark_count = gh_scm2int (m); + int mark_count = ly_scm2int (m); mark_count ++; - daddy_trans_->set_property ("rehearsalMark", - gh_int2scm (mark_count)); + context ()->set_property ("rehearsalMark", + scm_int2num (mark_count)); } - if (gh_number_p (m)) - m = scm_call_2 (proc, m, daddy_trans_->self_scm ()); + if (ly_c_number_p (m)) + m = scm_call_2 (proc, m, context ()->self_scm ()); else warning ("rehearsalMark does not have integer value."); } if (Text_item::markup_p (m)) - text_->set_grob_property ("text", m); + text_->set_property ("text", m); else warning ("Mark label should be markup object."); } } -ENTER_DESCRIPTION(Mark_engraver, -/* descr */ "", +ENTER_DESCRIPTION (Mark_engraver, +/* descr */ "This engraver will create RehearsalMark objects. " + "It puts them on top of all staves (which is taken from " + "the property @code{stavesFound}). If moving this engraver " + "to a different context, " + "@ref{Staff_collecting_engraver} must move along, otherwise all marks" + "end up on the same Y-location" + , /* creats*/ "RehearsalMark", /* accepts */ "mark-event", /* acks */ "bar-line-interface",