X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fligature-engraver.hh;h=6f53331a4e5493627debd1ebea1bc48952f28726;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=bc5577a022e182fe6106a89bbfdc11c3fe6c6a9d;hpb=ca0b17c8114a61e317c2cd7d4fe4e2661337aebf;p=lilypond.git diff --git a/lily/include/ligature-engraver.hh b/lily/include/ligature-engraver.hh index bc5577a022..6f53331a4e 100644 --- a/lily/include/ligature-engraver.hh +++ b/lily/include/ligature-engraver.hh @@ -1,46 +1,64 @@ -/* - ligature-engraver.hh -- declare Ligature_engraver - - source file of the GNU LilyPond music typesetter - - (c) 2002 Juergen Reuter - - */ -#ifndef LIGATUREENGRAVER_HH -#define LIGATUREEENGRAVER_HH +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2002--2015 Juergen Reuter + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ + +#ifndef LIGATURE_ENGRAVER_HH +#define LIGATURE_ENGRAVER_HH #include "engraver.hh" +#include "moment.hh" class Ligature_engraver : public Engraver { protected: - virtual void stop_translation_timestep (); - virtual void start_translation_timestep (); + Ligature_engraver (); + void stop_translation_timestep (); virtual void finalize (); - virtual void acknowledge_grob (Grob_info); - virtual bool try_music (Music*); - virtual void process_music (); - virtual void try_stop_ligature (); - virtual Spanner *create_ligature_spanner (); - - Spanner *finished_ligature_; - Spanner *ligature_; + DECLARE_ACKNOWLEDGER (rest); + DECLARE_ACKNOWLEDGER (ligature_head); + virtual void listen_ligature (Stream_event *ev); + void process_music (); + virtual Spanner *create_ligature_spanner () = 0; + virtual void typeset_ligature (Spanner *ligature, + vector const &primitives) = 0; + virtual Spanner *current_ligature (); SCM brew_ligature_primitive_proc; public: - TRANSLATOR_DECLARATIONS(Ligature_engraver); + // no TRANSLATOR_DECLARATIONS (Ligature_engraver) needed since this + // class is abstract private: - Drul_array reqs_drul_; - - Music *prev_start_req_; + Drul_array events_drul_; + + Spanner *ligature_; + vector primitives_; + + Spanner *finished_ligature_; + vector finished_primitives_; + + Stream_event *prev_start_event_; // moment where ligature started. Moment ligature_start_mom_; - Grob *last_bound; - + Grob *last_bound_; }; -#endif // ENGRAVERGROUP_HH +#endif // LIGATURE_ENGRAVER_HH