(Which properties to
[lilypond.git] / lily / melisma-translator.cc
blob5f057b28d5f46eb675a9fcb510b718661b125b7a
1 /*
2 melisma-engraver.cc -- implement Melisma_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1999--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
8 */
11 duplicated in melisma-performer
13 #include "engraver.hh"
14 #include "event.hh"
15 #include "grob.hh"
16 #include "context.hh"
19 /**
20 Signal existence of melismas.
22 class Melisma_translator : public Translator
24 public:
25 TRANSLATOR_DECLARATIONS (Melisma_translator);
26 protected:
27 virtual bool try_music (Music *);
28 virtual void process_music ();
29 virtual void start_translation_timestep ();
30 Music * event_;
34 bool
35 Melisma_translator::try_music (Music *m)
37 if (m->is_mus_type ("melisma-playing-event"))
39 return melisma_busy (daddy_context_);
41 else if (m->is_mus_type ("melisma-span-event"))
43 event_ = m;
44 return true;
47 return false;
50 void
51 Melisma_translator::process_music ()
53 if (event_)
55 SCM sd = event_->get_property ("span-direction");
56 Direction d = to_dir (sd);
57 if (d == START)
58 daddy_context_->set_property ("melismaBusy", SCM_BOOL_T);
59 else
60 daddy_context_->unset_property (ly_symbol2scm ("melismaBusy"));
65 void
66 Melisma_translator::start_translation_timestep ()
68 event_ = 0;
71 Melisma_translator::Melisma_translator ()
73 event_ = 0;
76 ENTER_DESCRIPTION (Melisma_translator,
77 /* descr */ "This translator collects melisma information about ties, beams, and user settings (@code{melismaBusy}, and signals it to the @code{\addlyrics} code. ",
78 /* creats*/ "",
79 /* accepts */ "melisma-playing-event melisma-span-event",
80 /* acks */ "",
81 /* reads */ "melismaBusy melismaBusyProperties slurMelismaBusy tieMelismaBusy beamMelismaBusy",
82 /* write */ "");