/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2011--2014 Mike Solomon <mike@mikesolomon.org>
+ Copyright (C) 2011--2015 Mike Solomon <mike@mikesolomon.org>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
vector<Grob_info> beams_;
vector<Grob_info> covered_grobs_;
- DECLARE_ACKNOWLEDGER (note_head);
- DECLARE_ACKNOWLEDGER (stem);
- DECLARE_ACKNOWLEDGER (accidental);
- DECLARE_ACKNOWLEDGER (clef);
- DECLARE_ACKNOWLEDGER (clef_modifier);
- DECLARE_ACKNOWLEDGER (key_signature);
- DECLARE_ACKNOWLEDGER (time_signature);
- DECLARE_ACKNOWLEDGER (beam);
- DECLARE_ACKNOWLEDGER (flag);
+ void acknowledge_note_head (Grob_info);
+ void acknowledge_stem (Grob_info);
+ void acknowledge_accidental (Grob_info);
+ void acknowledge_clef (Grob_info);
+ void acknowledge_clef_modifier (Grob_info);
+ void acknowledge_key_signature (Grob_info);
+ void acknowledge_time_signature (Grob_info);
+ void acknowledge_beam (Grob_info);
+ void acknowledge_flag (Grob_info);
virtual void finalize ();
TRANSLATOR_DECLARATIONS (Beam_collision_engraver);
};
-Beam_collision_engraver::Beam_collision_engraver () {}
+Beam_collision_engraver::Beam_collision_engraver (Context *c)
+ : Engraver (c)
+{}
bool
Beam_collision_engraver::covered_grob_has_interface (Grob *covered_grob, Grob *beam)
if ((covered_grob_spanned_rank[RIGHT] >= beam_spanned_rank_[LEFT])
&& !(to_boolean (beam_grob->get_property ("collision-voice-only"))
&& (covered_grob_context != beam_context))
- && !(Beam::has_interface (covered_grob)
+ && !(has_interface<Beam> (covered_grob)
&& (covered_grob_spanned_rank[LEFT] <= beam_spanned_rank_[LEFT]))
&& covered_grob_has_interface (covered_grob, beam_grob))
{
// Do not consider note heads attached to the beam.
- if (Stem::has_interface (covered_grob))
- if (unsmob_grob (covered_grob->get_object ("beam")))
+ if (has_interface<Stem> (covered_grob))
+ if (unsmob<Grob> (covered_grob->get_object ("beam")))
continue;
- if (Grob *stem = unsmob_grob (covered_grob->get_object ("stem")))
- if (Grob *beam = unsmob_grob (stem->get_object ("beam")))
+ if (Grob *stem = unsmob<Grob> (covered_grob->get_object ("stem")))
+ if (Grob *beam = unsmob<Grob> (stem->get_object ("beam")))
if (beam == beam_grob)
continue;
#include "translator.icc"
-ADD_ACKNOWLEDGER (Beam_collision_engraver, note_head);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, stem);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, clef);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, key_signature);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, time_signature);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, clef_modifier);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, flag);
-ADD_ACKNOWLEDGER (Beam_collision_engraver, beam);
+
+void
+Beam_collision_engraver::boot ()
+{
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, note_head);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, stem);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, accidental);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, clef);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, key_signature);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, time_signature);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, clef_modifier);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, flag);
+ ADD_ACKNOWLEDGER (Beam_collision_engraver, beam);
+}
ADD_TRANSLATOR (Beam_collision_engraver,
/* doc */