X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fspanner.hh;h=6c0fc1cbed436b0a4bebb5dcefc381663033df00;hb=26380ed75fbd7b32781715c043dfa5dd96dfbe4a;hp=c4670d0122bd78def662a0a791abd21f27170f77;hpb=9e7d9faf831361e98ac94aa8be4aee439f595688;p=lilypond.git diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index c4670d0122..6c0fc1cbed 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -1,74 +1,71 @@ /* spanner.hh -- part of GNU LilyPond - (c) 1996--2004 Han-Wen Nienhuys + (c) 1996--2005 Han-Wen Nienhuys */ #ifndef SPANNER_HH #define SPANNER_HH -#include "lily-proto.hh" #include "grob.hh" -#include "drul-array.hh" #include "rod.hh" /** A symbol which is attached between two columns. A spanner is a - symbol which spans across several columns, so its final appearance - can only be calculated after the breaking problem is solved. + symbol which spans across several columns, so its final appearance + can only be calculated after the breaking problem is solved. - Examples + Examples - * (de)crescendo - * slur - * beam - * bracket + * (de)crescendo + * slur + * beam + * bracket - Spanner should know about the items which it should consider: - e.g. slurs should be steep enough to "enclose" all those items. This - is absolutely necessary for beams, since they have to adjust the - length of stems of notes they encompass. - - */ -class Spanner : public Grob { - Drul_array spanned_drul_; + Spanner should know about the items which it should consider: + e.g. slurs should be steep enough to "enclose" all those items. This + is absolutely necessary for beams, since they have to adjust the + length of stems of notes they encompass. +*/ +class Spanner : public Grob +{ + Drul_array spanned_drul_; int break_index_; - + public: DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM)); - + Link_array broken_intos_; int get_break_index () const; // todo: move to somewhere else. Real get_broken_left_end_align () const; - void substitute_one_mutable_property (SCM sym, SCM val) ; + void substitute_one_mutable_property (SCM sym, SCM val); bool fast_fubstitute_grob_list (SCM sym, SCM grob_list); // TODO: make virtual and do this for Items as well. Interval_t spanned_rank_iv (); - void set_bound (Direction d, Grob*); + void set_bound (Direction d, Grob *); Item *get_bound (Direction d) const; - - Spanner (SCM); - Spanner (Spanner const &); + + Spanner (SCM, Object_key const *); + Spanner (Spanner const &, int copy_count); bool is_broken () const; void do_break (); Real spanner_length () const; - static int compare (Spanner * const &,Spanner * const &); - virtual Grob* find_broken_piece (System*) const; + static int compare (Spanner *const &, Spanner *const &); + virtual Grob *find_broken_piece (System *) const; virtual SCM do_derived_mark () const; - static bool has_interface (Grob*); + static bool has_interface (Grob *); virtual System *get_system () const; protected: void set_my_columns (); - - VIRTUAL_COPY_CONSTRUCTOR (Grob, Spanner); + virtual Grob *clone (int count) const; virtual void do_break_processing (); }; -void add_bound_item (Spanner*, Grob*); +void add_bound_item (Spanner *, Grob *); -bool spanner_less ( Spanner *s1, Spanner* s2); -int broken_spanner_index (Spanner * sp); +bool spanner_less (Spanner *s1, Spanner *s2); +int broken_spanner_index (Spanner *sp); #endif