2 #include "text-item.hh"
6 class Figured_bass_engraver : public Engraver
9 TRANSLATOR_DECLARATIONS(Figured_bass_engraver);
11 Link_array<Music> figures_;
16 virtual bool try_music (Music*);
17 virtual void stop_translation_timestep ();
18 virtual void process_music ();
22 Figured_bass_engraver::Figured_bass_engraver()
29 Figured_bass_engraver::stop_translation_timestep ()
33 typeset_grob (figure_);
42 Figured_bass_engraver::try_music (Music*m)
44 if (m->is_mus_type ("bass-figure-event"))
49 else if (m->is_mus_type ("rest-event"))
58 Figured_bass_engraver::process_music ()
62 figure_ = new Item (get_property ("BassFigure"));
63 announce_grob(figure_, rest_req_->self_scm()); // todo
64 figure_->set_grob_property ("text" , scm_makfrom0str ("-"));
66 else if (figures_.size ())
68 figure_ = new Item (get_property ("BassFigure"));
71 for (int i = 0; i <figures_.size (); i++)
72 l = gh_cons (figures_[i]->self_scm(), l);
73 figure_->set_grob_property ("causes", l);
75 announce_grob(figure_, figures_[0]->self_scm()); // todo
80 ENTER_DESCRIPTION(Figured_bass_engraver,
81 /* descr */ "Make figured bass numbers.",
82 /* creats*/ "BassFigure",
83 /* accepts */ "rest-event bass-figure-event",