source file of the GNU LilyPond music typesetter
- (c) 2002--2007 Juergen Reuter <reuter@ipd.uka.de>
+ (c) 2002--2009 Juergen Reuter <reuter@ipd.uka.de>
Han-Wen Nienhuys <hanwen@xs4all.nl
*/
#include "protected-scm.hh"
#include "side-position-interface.hh"
#include "separation-item.hh"
-#include "staff-symbol-referencer.hh"
+#include "staff-symbol-referencer.hh"
#include "stream-event.hh"
#include "translator.icc"
{
public:
TRANSLATOR_DECLARATIONS (Ambitus_engraver);
+protected:
+ DECLARE_ACKNOWLEDGER (note_head);
+
void process_music ();
- void acknowledge_note_head (Grob_info);
void stop_translation_timestep ();
virtual void finalize ();
virtual void derived_mark () const;
Ambitus_engraver::acknowledge_note_head (Grob_info info)
{
Stream_event *nr = info.event_cause ();
+ SCM p = nr->get_property ("pitch");
+ /*
+ If the engraver is added to a percussion context,
+ filter out unpitched note heads.
+ */
+ if (!unsmob_pitch (p))
+ return;
if (nr && nr->in_event_class ("note-event"))
{
- Pitch pitch = *unsmob_pitch (nr->get_property ("pitch"));
+ Pitch pitch = *unsmob_pitch (p);
Drul_array<bool> expands = pitch_interval_.add_point (pitch);
if (expands[UP])
causes_[UP] = nr;
{
if (ambitus_ && !pitch_interval_.is_empty ())
{
- Grob * accidental_placement =
+ Grob *accidental_placement =
make_item ("AccidentalPlacement",
accidentals_[DOWN]->self_scm ());
ADD_ACKNOWLEDGER (Ambitus_engraver, note_head);
ADD_TRANSLATOR (Ambitus_engraver,
- /* doc */ "",
+ /* doc */
+ "",
+
/* create */
+ "AccidentalPlacement "
"Ambitus "
+ "AmbitusAccidental "
"AmbitusLine "
- "AmbitusNoteHead "
- "AmbitusAccidental",
- /* read */ "",
- /* write */ "");
+ "AmbitusNoteHead ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );