2 note-head-line-engraver.cc -- implement Note_head_line_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2000--2006 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 DECLARE_ACKNOWLEDGER (rhythmic_head
);
25 virtual void finalize ();
26 void stop_translation_timestep ();
27 virtual bool try_music (Music
*);
28 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 ()
56 line_
= make_spanner ("Glissando", event_
->self_scm ());
60 Glissando_engraver::acknowledge_rhythmic_head (Grob_info info
)
62 Grob
*g
= info
.grob ();
64 line_
->set_bound (LEFT
, g
);
67 last_line_
->set_bound (RIGHT
, g
);
71 Glissando_engraver::stop_translation_timestep ()
73 if (last_line_
&& last_line_
->get_bound (RIGHT
))
78 programming_error ("overwriting glissando");
86 Glissando_engraver::finalize ()
90 String msg
= _ ("unterminated glissando");
93 event_
->origin ()->warning (msg
);
102 #include "translator.icc"
104 ADD_ACKNOWLEDGER (Glissando_engraver
, rhythmic_head
);
105 ADD_TRANSLATOR (Glissando_engraver
,
106 /* doc */ "Engrave a glissandi",
107 /* create */ "Glissando",
108 /* accept */ "glissando-event",
109 /* read */ "followVoice",