/*
line-of-score.hh -- part of GNU LilyPond
- (c) 1996--1999 Han-Wen Nienhuys
+ (c) 1996--2000 Han-Wen Nienhuys
*/
#ifndef SCORELINE_HH
#define SCORELINE_HH
-#include "colhpos.hh"
+#include "protected-scm.hh"
+#include "column-x-positions.hh"
#include "spanner.hh"
-#include "super-element.hh"
-/// the columns of a score that form one line.
-class Line_of_score : public Spanner , public Super_element
+/**
+ The columns of a score that form one line. The toplevel element.
+ Any element has a Line_of_score as both X and Y reference
+ point. The Paper_score contains one element of this type. Control
+ enters the Score_element dependency calculation from this single
+ Line_of_score object.
+
+
+ properties:
+
+ all-elements -- list of all score elements in this line. Needed
+ for protecting elements from GC.
+
+ columns -- list of all paper columns
+
+ */
+class Line_of_score : public Spanner
{
public:
- Link_array<Paper_column> cols_;
- bool error_mark_b_;
+ void post_processing();
+
+ /// -> SCM
+ int rank_i_;
+
+ Protected_scm output_;
Line_of_score();
- void add_element (Score_element *);
-
/// is #c# contained in #*this#?
bool contains_b (Paper_column const *c) const;
-
- Link_array<Line_of_score> get_lines() const;
- Line_of_score * set_breaking (Array<Column_x_positions> const&, int j) const;
-
-protected:
- virtual Link_array<Score_element> get_extra_dependencies () const;
+ int element_count () const;
+ void break_into_pieces (Array<Column_x_positions> const&);
+ void output_lines ();
- virtual Interval do_width() const;
- virtual void do_print() const;
+ Link_array<Item> broken_col_range (Item const*, Item const*) const;
+ Link_array<Paper_column> column_l_arr () const;
+
+ void add_column (Paper_column*);
+ void typeset_element (Score_element*);
+ void output_molecule (SCM, Offset);
+ void output_scheme (SCM);
+ void pre_processing ();
+protected:
VIRTUAL_COPY_CONS(Score_element);
};