X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpaper-column.hh;h=01a84d50dfd9a7085dfb7bbb1d13059e208ba507;hb=acc59c0001801a94f1759f8b059c661ece678e52;hp=c898b9faacd17d85fef32d61376c27c1774a606e;hpb=19fbc4154436823f3365e0bc42c4420f2233a860;p=lilypond.git diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index c898b9faac..01a84d50df 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -1,73 +1,64 @@ /* - paper-column.hh -- declare Paper_column + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ + Copyright (C) 1997--2012 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. -#ifndef P_COL_HH -#define P_COL_HH - -#include "axis-group-item.hh" -#include "rod.hh" -#include "spring.hh" - -/** - stuff grouped vertically. - This is a class to address items vertically. It contains the data for: - \begin{itemize} - \item - unbroken score - \item - broken score - \item - the linespacing problem - \end{itemize} - */ - -class Paper_column : public Axis_group_item { -public: - VIRTUAL_COPY_CONS(Score_element); - Drul_array > minimal_dists_arr_drul_; - Drul_array > spring_arr_drul_; + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - /// set a minimum distance - void add_rod (Paper_column * to, Real distance); - void add_spring (Paper_column * to, Real dist, Real strength); + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ - virtual Paper_column * column_l () const; - virtual Line_of_score *line_l () const; +#ifndef PAPER_COLUMN_HH +#define PAPER_COLUMN_HH +#include "item.hh" +#include "rod.hh" +class Paper_column : public Item +{ + int rank_; /// if lines are broken then this column is in #line# - Line_of_score *line_l_; - + System *system_; - /// which one (left =0) - int rank_i() const; +public: + Paper_column (SCM); + Paper_column (Paper_column const &); - Paper_column (Moment when); - Moment when_mom ()const; + virtual Grob *clone () const; + virtual void do_break_processing (); + virtual Paper_column *get_column () const; + virtual System *get_system () const; + void set_system (System *); - bool musical_b () const; + static int compare (Grob *const &a, + Grob *const &b); + static bool less_than (Grob *const &a, + Grob *const &b); + int get_rank () const { return rank_; } void set_rank (int); - virtual void do_print() const; -private: - - /** - The ranking: left is smaller than right - -1 is uninitialised. - */ - int rank_i_; + DECLARE_SCHEME_CALLBACK (print, (SCM)); + DECLARE_SCHEME_CALLBACK (before_line_breaking, (SCM)); + + DECLARE_GROB_INTERFACE (); + static int get_rank (Grob const *); + static bool is_musical (Grob *); + static Moment when_mom (Grob *); + static bool is_used (Grob *); + static bool is_breakable (Grob *); + static bool is_extraneous_column_from_ligature (Grob *); + static Real minimum_distance (Grob *l, Grob *r); + static Interval break_align_width (Grob *me, SCM align_sym); }; - -// #include "compare.hh" -// INSTANTIATE_COMPARE(Paper_column &, Paper_column::compare); - -#endif // P_COL_HH - +#endif // PAPER_COLUMN_HH