* lily/note-collision.cc (do_shifts): align colliding notes to
[lilypond.git] / lily / slur-performer.cc
blob1836016161cc7c551bb056dd09a52bb19ddbf303
1 /*
2 slur-performer.cc -- implement Slur_performer
4 source file of the GNU LilyPond music typesetter
6 (c) 1996--2004 Jan Nieuwenhuizen <janneke@gnu.org>
7 */
9 #include "performer.hh"
10 #include "event.hh"
11 #include "audio-item.hh"
12 #include "audio-column.hh"
13 #include "global-context.hh"
14 #include "warn.hh"
17 this is C&P from beam_performer.
20 class Slur_performer : public Performer {
21 public:
22 TRANSLATOR_DECLARATIONS (Slur_performer);
24 protected:
25 virtual bool try_music (Music *ev) ;
26 virtual void start_translation_timestep ();
27 virtual void process_music ();
28 void set_melisma (bool);
29 private:
30 Music *start_ev_;
31 Music *now_stop_ev_;
32 bool slur_;
35 Slur_performer::Slur_performer ()
37 slur_ = false;
38 start_ev_ = 0;
39 now_stop_ev_ = 0;
43 void
44 Slur_performer::process_music ()
46 if (now_stop_ev_)
48 slur_ = false;
49 set_melisma (false);
52 if (start_ev_)
54 slur_ = true;
55 set_melisma (true);
60 void
61 Slur_performer::set_melisma (bool ml)
63 context ()->set_property ("slurMelismaBusy", ml ? SCM_BOOL_T :SCM_BOOL_F);
66 void
67 Slur_performer::start_translation_timestep ()
69 start_ev_ = 0;
70 now_stop_ev_ = 0;
73 bool
74 Slur_performer::try_music (Music *m)
76 if (m->is_mus_type ("slur-event"))
78 Direction d = to_dir (m->get_property ("span-direction"));
80 if (d == START)
82 start_ev_ = m;
84 else if (d==STOP)
86 now_stop_ev_ = m;
88 return true;
90 return false;
93 ENTER_DESCRIPTION (Slur_performer,"","",
94 "slur-event","","","");