]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/span-bar.hh
release: 1.1.42
[lilypond.git] / lily / include / span-bar.hh
index 136564678f483a9d3e90ef6e28a0458f2a3f6109..9290b5ae357088852a4429254286d79f14f392ee 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 
 #include "bar.hh"
 
+/**
+   This is a barline that is spanned across other bar lines.  This is
+   the implementation of the long barlines that occur in orchestral
+   score and other multi-staff music.
+
+   TODO: Is this usable for other stuff besides barlines? We only have
+   to span a Score_element.  Perhaps this can be used for large time
+   sigs?
+*/
 class Span_bar : public Bar
 {
-    Link_array<Bar> spanning_l_arr_;
-
+  Link_array<Score_element> spanning_l_arr_;
+  Interval get_spanned_interval () const;
 public:
-    Span_bar();
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Span_bar);
-    void add (Bar*);
-    void set (Vertical_align_element *);
-
-protected:
-    virtual Interval do_width() const;
-    virtual void do_pre_processing();
+  Span_bar();
     
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
-    virtual Molecule * brew_molecule_p() const;
-    virtual Atom get_bar_sym (Real dy) const;
+  VIRTUAL_COPY_CONS(Score_element);
+  void add_bar (Score_element*);
+  void set_align (Align_element *);
+protected:
+  void evaluate_empty ();
+
+  virtual Interval do_width() const;
+  virtual void do_pre_processing();
+  virtual void do_post_processing();
+  virtual Interval do_height () const;
+  virtual void do_substitute_element_pointer (Score_element*,Score_element*);
+  virtual Molecule * do_brew_molecule_p() const;
 };
 
 #endif // SPAN_BAR_HH