source file of the GNU LilyPond music typesetter
- (c) 1998--2003 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
*/
#include <ctype.h>
#include "engraver.hh"
#include "engraver-group-engraver.hh"
#include "item.hh"
+#include "context.hh"
/**
put stuff over or next to bars. Examples: bar numbers, marginal notes,
class Metronome_mark_engraver : public Engraver
{
public:
- TRANSLATOR_DECLARATIONS(Metronome_mark_engraver);
+ TRANSLATOR_DECLARATIONS (Metronome_mark_engraver);
protected:
- Item* text_;
- Grob * bar_line_;
+ Item *text_;
+ Grob *bar_line_;
protected:
virtual void stop_translation_timestep ();
virtual void acknowledge_grob (Grob_info);
void create_items (Music*);
- virtual bool try_music (Music *req);
- virtual void start_translation_timestep ();
+ virtual bool try_music (Music *ev);
virtual void process_music ();
private:
- Music * mark_req_;
+ Music *mark_ev_;
};
Metronome_mark_engraver::Metronome_mark_engraver ()
{
text_ =0;
- mark_req_ = 0;
+ mark_ev_ = 0;
}
void
if (bar_line_ && !text_->get_parent (X_AXIS))
text_->set_parent (bar_line_, X_AXIS);
- text_->set_grob_property ("side-support-elements" , get_property ("stavesFound"));
- typeset_grob (text_);
+ text_->set_property ("side-support-elements" , get_property ("stavesFound"));
+
text_ =0;
}
+ mark_ev_ = 0;
}
if (text_)
return;
- SCM s = get_property ("MetronomeMark");
- text_ = new Item (s);
+ text_ = make_item ("MetronomeMark", rq->self_scm () );
- announce_grob(text_, rq->self_scm());
}
-void
-Metronome_mark_engraver::start_translation_timestep ()
-{
- mark_req_ = 0;
-}
bool
Metronome_mark_engraver::try_music (Music* r)
{
- mark_req_ = r;
+ mark_ev_ = r;
return true;
}
void
Metronome_mark_engraver::process_music ()
{
- if (mark_req_)
+ if (mark_ev_)
{
- create_items (mark_req_);
+ create_items (mark_ev_);
SCM proc = get_property ("metronomeMarkFormatter");
- SCM result= scm_call_2 (proc, mark_req_->self_scm (),
- daddy_trans_->self_scm());
+ SCM result= scm_call_2 (proc, mark_ev_->self_scm (),
+ context ()->self_scm ());
- text_->set_grob_property ("text", result);
+ text_->set_property ("text", result);
}
}
-ENTER_DESCRIPTION(Metronome_mark_engraver,
-/* descr */ "Engrave metro nome marking. This delegates the real work to the function in the metronomeMarkFormatter property",
+ENTER_DESCRIPTION (Metronome_mark_engraver,
+/* descr */ "Engrave metro nome marking. This delegates the formatting work "
+ "to the function in the metronomeMarkFormatter property. "
+ "The mark is put over all staves. "
+ "The staves are taken from the @code{stavesFound} property, "
+ "which is maintained by @code{@ref{Staff_collecting_engraver}}. "
+
+ ,
/* creats*/ "MetronomeMark",
/* accepts */ "metronome-change-event",
/* acks */ "time-signature-interface bar-line-interface",