/*
- spanner.hh -- part of LilyPond
+ spanner.hh -- part of GNU LilyPond
(c) 1996,97 Han-Wen Nienhuys
*/
#ifndef SPANNER_HH
#define SPANNER_HH
-#include "proto.hh"
-#include "staff-elem.hh"
-
+#include "lily-proto.hh"
+#include "score-elem.hh"
/** a symbol which is attached between two columns. A spanner is a
symbol which spans across several columns, so its final appearance
is absolutely necessary for beams, since they have to adjust the
length of stems of notes they encompass.
- */
+ */
class Spanner:public virtual Score_elem {
public:
PCol *left_col_l_, *right_col_l_;
-
/* *************** */
- NAME_MEMBERS(Spanner);
+ DECLARE_MY_RUNTIME_TYPEINFO;
virtual Spanner* spanner() { return this; }
Spanner();
- Spanner *broken_at(PCol *c1, PCol *c2) const;
+ bool broken_b() const;
+ Spanner* find_broken_piece(Line_of_score*)const;
protected:
-
- virtual Interval do_width()const;
- void do_print()const;
-
+ void set_my_columns();
+ SCORE_ELEM_CLONE(Spanner);
/**
- clone a piece of this spanner.
- PRE
- c1 >= start, c2 <= stop
- */
- virtual Spanner *do_break_at( PCol *c1, PCol *c2) const=0;
+ this is virtual; for instance, Line_of_score overrides it.
+ */
+ virtual void break_into_pieces(bool);
+
+ Link_array<Spanner> broken_into_l_arr_;
+
+ virtual void do_break_processing();
+ virtual Interval do_width()const;
+ virtual void do_print()const;
+ virtual Line_of_score*line_l()const;
};
#endif