X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Fspanner.hh;h=a5ecd3dae92c451a259a45b2fa92f2702d63c651;hb=9731b3d4f9eb2435451dc91124a02ea79ced1b29;hp=7bda060c864d20d3920837b0ce861fac92d2ee25;hpb=a339f8b9865b0f02febd351ba494129d414fb568;p=lilypond.git diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 7bda060c86..a5ecd3dae9 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1996--2011 Han-Wen Nienhuys + Copyright (C) 1996--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,12 +39,19 @@ is absolutely necessary for beams, since they have to adjust the length of stems of notes they encompass. */ -class Spanner : public Grob + +struct Preinit_Spanner { Drul_array spanned_drul_; + SCM pure_property_cache_; + Preinit_Spanner (); +}; + +class Spanner : Preinit_Spanner, public Grob +{ vsize break_index_; - DECLARE_CLASSNAME(Spanner); + DECLARE_CLASSNAME (Spanner); public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); @@ -52,11 +59,11 @@ public: DECLARE_SCHEME_CALLBACK (bounds_width, (SCM)); DECLARE_SCHEME_CALLBACK (kill_zero_spanned_time, (SCM)); - vector broken_intos_; + vector broken_intos_; vsize get_break_index () const; Spanner *broken_neighbor (Direction d) const; - + // todo: move to somewhere else. Real get_broken_left_end_align () const; void substitute_one_mutable_property (SCM sym, SCM val); @@ -76,15 +83,12 @@ public: static bool less (Spanner *const &, Spanner *const &); virtual Grob *find_broken_piece (System *) const; virtual void derived_mark () const; - DECLARE_GROB_INTERFACE(); virtual System *get_system () const; SCM get_cached_pure_property (SCM sym, int start, int end); void cache_pure_property (SCM sym, int start, int end, SCM value); protected: - SCM pure_property_cache_; - void set_my_columns (); virtual Grob *clone () const; virtual void do_break_processing ();