]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/spanner.hh
release: 1.1.1
[lilypond.git] / lily / include / spanner.hh
index df5e9e58e9c1bab72434d01d6a74f1480e1d5e6a..255b21eaa82a245e10d81b48bceaa0227a3551ae 100644 (file)
@@ -1,17 +1,18 @@
 /*
-  spanner.hh -- part of LilyPond
+  spanner.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef SPANNER_HH
 #define SPANNER_HH
 
-#include "proto.hh"
-#include "staff-elem.hh"
+#include "lily-proto.hh"
+#include "score-element.hh"
+#include "drul-array.hh"
+#include "rod.hh"
 
-
-/** a symbol which is attached between two columns. A spanner is a
+/** 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.
 
   is absolutely necessary for beams, since they have to adjust the
   length of stems of notes they encompass.
 
-    */
-class Spanner:public virtual Score_elem {
+  */
+class Spanner : public virtual Score_element {
 public:
-    PCol *left_col_l_, *right_col_l_;
-
-    
-    /* *************** */
-    NAME_MEMBERS(Spanner);
-    virtual Spanner* spanner() { return this; }    
-    Spanner();
-    Spanner *broken_at(PCol *c1,  PCol *c2) const;
+  Drul_array<Item*> spanned_drul_;
+  void set_bounds (Direction d, Item*);
+
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Spanner ();
+  Spanner (Spanner const &);
+  bool broken_b () const;
+  virtual Array<Rod> get_rods () const;
+  Spanner* find_broken_piece (Line_of_score*) const;
 protected:
+  void set_my_columns ();
+  SCORE_ELEMENT_CLONE (Spanner);
 
-    virtual Interval do_width()const;
-    void do_print()const;
+  /**
+    this is virtual; for instance, Line_of_score overrides it.
+    */
+  virtual void break_into_pieces ();
 
+  Link_array<Spanner> broken_into_l_arr_;
+  Spanner * unbroken_original_l_;
 
-    /**
-      clone a piece of  this spanner.
-      PRE
-      c1 >= start, c2  <= stop
-    */
-    virtual Spanner *do_break_at( PCol *c1,  PCol *c2) const=0;
+  virtual void do_unlink ();
+  virtual void do_junk_links ();
+  virtual void do_brew_molecule ();
+  virtual void do_space_processing ();
+  virtual void do_break_processing ();
+  virtual Interval do_width () const;
+  virtual void do_print () const;
+  virtual Line_of_score*line_l () const;
 };
 #endif