X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fbeam-collision-engraver.cc;h=4494bb03c2d3fd2397a8deb5917840451975cce8;hb=b872748c6aa8bb721ced458691b38ac2fac5dfc8;hp=364d725c9afab0383163eb3de61ac72e135230e2;hpb=cb951038d3e74a85ec8539d0dc51260088251556;p=lilypond.git diff --git a/lily/beam-collision-engraver.cc b/lily/beam-collision-engraver.cc index 364d725c9a..4494bb03c2 100644 --- a/lily/beam-collision-engraver.cc +++ b/lily/beam-collision-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2011--2012 Mike Solomon + Copyright (C) 2011--2015 Mike Solomon LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,15 +30,15 @@ protected: vector beams_; vector covered_grobs_; - DECLARE_ACKNOWLEDGER (note_head); - DECLARE_ACKNOWLEDGER (stem); - DECLARE_ACKNOWLEDGER (accidental); - DECLARE_ACKNOWLEDGER (clef); - DECLARE_ACKNOWLEDGER (octavate_eight); - 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 (); @@ -49,7 +49,9 @@ public: 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) @@ -115,17 +117,17 @@ Beam_collision_engraver::finalize () 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 (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 (covered_grob)) + if (unsmob (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 (covered_grob->get_object ("stem"))) + if (Grob *beam = unsmob (stem->get_object ("beam"))) if (beam == beam_grob) continue; @@ -167,7 +169,7 @@ Beam_collision_engraver::acknowledge_key_signature (Grob_info i) } void -Beam_collision_engraver::acknowledge_octavate_eight (Grob_info i) +Beam_collision_engraver::acknowledge_clef_modifier (Grob_info i) { covered_grobs_.push_back (i); } @@ -193,15 +195,20 @@ Beam_collision_engraver::acknowledge_beam (Grob_info i) #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, octavate_eight); -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 */