X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fspanner.hh;h=b67dde0843108730489a6f33078a9555ceb83314;hb=cb20a87a5875c0f9d4c7550e831db2d03bc9a41c;hp=23455d73b1b65ae82fd8243cef509fe4ed4fd0af;hpb=f0e8911e5a86748a9c70afcee42b6a3618dbef10;p=lilypond.git diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 23455d73b1..b67dde0843 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -1,7 +1,20 @@ /* - spanner.hh -- part of GNU LilyPond + This file is part of LilyPond, the GNU music typesetter. - (c) 1996--2007 Han-Wen Nienhuys + Copyright (C) 1996--2011 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 + 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 SPANNER_HH @@ -31,24 +44,25 @@ class Spanner : public Grob Drul_array spanned_drul_; vsize break_index_; - DECLARE_CLASSNAME(Spanner); + DECLARE_CLASSNAME (Spanner); public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_normalized_endpoints, (SCM)); 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); - bool fast_substitute_grob_array (SCM sym, Grob_array *); Interval_t spanned_time () const; - virtual Interval_t spanned_rank_iv () const; + virtual Interval_t spanned_rank_interval () const; void set_bound (Direction d, Grob *); Item *get_bound (Direction d) const; @@ -62,18 +76,22 @@ public: static bool less (Spanner *const &, Spanner *const &); virtual Grob *find_broken_piece (System *) const; virtual void derived_mark () const; - DECLARE_GROB_INTERFACE(); + 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 (); + bool fast_substitute_grob_array (SCM sym, Grob_array *); }; void add_bound_item (Spanner *, Grob *); bool spanner_less (Spanner *s1, Spanner *s2); -int broken_spanner_index (Spanner const *sp); #endif