2 note-head-line-engraver.cc -- implement Note_head_line_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2000--2005 Jan Nieuwenhuizen <janneke@gnu.org>
11 #include "rhythmic-head.hh"
12 #include "engraver.hh"
15 Create line-spanner grobs for glissandi lines that connect note
18 class Glissando_engraver : public Engraver
21 TRANSLATOR_DECLARATIONS (Glissando_engraver);
24 virtual void acknowledge_grob (Grob_info);
25 virtual void finalize ();
26 virtual void stop_translation_timestep ();
27 virtual bool try_music (Music *);
28 virtual void process_music ();
35 Glissando_engraver::Glissando_engraver ()
37 last_line_ = line_ = 0;
42 Glissando_engraver::try_music (Music *m)
53 Glissando_engraver::process_music ()
57 line_ = make_spanner ("Glissando", event_->self_scm ());
62 Glissando_engraver::acknowledge_grob (Grob_info info)
64 if (Rhythmic_head::has_interface (info.grob_))
68 line_->set_bound (LEFT, g);
71 last_line_->set_bound (RIGHT, g);
76 Glissando_engraver::stop_translation_timestep ()
78 if (last_line_ && last_line_->get_bound (RIGHT))
85 programming_error ("overwriting glissando");
93 Glissando_engraver::finalize ()
97 String msg = _ ("unterminated glissando");
100 event_->origin ()->warning (msg);
109 ADD_TRANSLATOR (Glissando_engraver,
110 /* descr */ "Engrave a glissandi",
111 /* creats*/ "Glissando",
112 /* accepts */ "glissando-event",
113 /* acks */ "rhythmic-head-interface",
114 /* reads */ "followVoice",