X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffigured-bass-engraver.cc;h=b72b0b91e45f83da4a1a5d0a995ac59bbdb8009d;hb=545092a25d8ca41dc90b87482474b3719f7130a9;hp=aeb5c1e1fe3b8a65bacf6356fdd4bef96e5c642d;hpb=b1323f33e9aa4b9eea05eefb8755c907d4d762d4;p=lilypond.git diff --git a/lily/figured-bass-engraver.cc b/lily/figured-bass-engraver.cc index aeb5c1e1fe..b72b0b91e4 100644 --- a/lily/figured-bass-engraver.cc +++ b/lily/figured-bass-engraver.cc @@ -1,54 +1,49 @@ -/* -figured-bass-engraver.cc -- implement Figured_bass_engraver +/* + figured-bass-engraver.cc -- implement Figured_bass_engraver -source file of the GNU LilyPond music typesetter + source file of the GNU LilyPond music typesetter -(c) 2002--2004 Han-Wen Nienhuys - - */ + (c) 2002--2005 Han-Wen Nienhuys +*/ #include "engraver.hh" -#include "text-item.hh" -#include "event.hh" +#include "text-interface.hh" #include "item.hh" #include "context.hh" +#include "translator.icc" + class Figured_bass_engraver : public Engraver { - TRANSLATOR_DECLARATIONS(Figured_bass_engraver); + TRANSLATOR_DECLARATIONS (Figured_bass_engraver); protected: Link_array figures_; - Music * rest_req_; + Music *rest_event_; - Grob * figure_; - - virtual bool try_music (Music*); - virtual void stop_translation_timestep (); - virtual void process_music (); -}; + Grob *figure_; + virtual bool try_music (Music *); + void stop_translation_timestep (); + void process_music (); +}; -Figured_bass_engraver::Figured_bass_engraver() +Figured_bass_engraver::Figured_bass_engraver () { figure_ = 0; - rest_req_ = 0; + rest_event_ = 0; } void Figured_bass_engraver::stop_translation_timestep () { - if (figure_) - { - typeset_grob (figure_); - figure_ = 0; - } + figure_ = 0; figures_.clear (); - rest_req_ = 0; + rest_event_ = 0; } bool -Figured_bass_engraver::try_music (Music*m) +Figured_bass_engraver::try_music (Music *m) { if (m->is_mus_type ("bass-figure-event")) { @@ -57,7 +52,7 @@ Figured_bass_engraver::try_music (Music*m) } else if (m->is_mus_type ("rest-event")) { - rest_req_ = m; + rest_event_ = m; return true; } return false; @@ -66,36 +61,33 @@ Figured_bass_engraver::try_music (Music*m) void Figured_bass_engraver::process_music () { - if (rest_req_) + if (rest_event_) { - figure_ = make_item ("BassFigure"); - announce_grob(figure_, rest_req_->self_scm()); // todo - figure_->set_property ("text" , scm_makfrom0str ("-")); + figure_ = make_item ("BassFigure", rest_event_->self_scm ()); + figure_->set_property ("text", scm_makfrom0str ("-")); } else if (figures_.size ()) { SCM proc = get_property ("bassFigureFormatFunction"); - if (gh_procedure_p (proc)) + if (ly_is_procedure (proc)) { SCM l = SCM_EOL; - - for (int i = 0; i self_scm(), l); - - SCM markup = scm_call_2 (proc, l, daddy_context_->self_scm ()); - - figure_ = make_item ("BassFigure"); - figure_->set_property ("text", markup); - announce_grob(figure_, figures_[0]->self_scm()); // todo + SCM *t = &l; + for (int i = 0; i < figures_.size (); i++) + { + *t = scm_cons (figures_[i]->self_scm (), SCM_EOL); + t = SCM_CDRLOC (*t); + } + figure_ = make_item ("BassFigure", figures_[0]->self_scm ()); + scm_call_3 (proc, l, context ()->self_scm (), + figure_->self_scm ()); } } } - -ENTER_DESCRIPTION(Figured_bass_engraver, -/* descr */ "Make figured bass numbers.", -/* creats*/ "BassFigure", -/* accepts */ "rest-event bass-figure-event", -/* acks */ "", -/* reads */ "bassFigureFormatFunction", -/* write */ ""); +ADD_TRANSLATOR (Figured_bass_engraver, + /* doc */ "Make figured bass numbers.", + /* create */ "BassFigure", + /* accept */ "rest-event bass-figure-event", + /* read */ "bassFigureFormatFunction", + /* write */ "");