X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fpaper-score.hh;h=e3d0813b4b0820754390a6356bd97f84ad7950ff;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=e27fe7294366f270952b488d79fadca1bb212643;hpb=ad4297de0246935caa4c51f4e152e20009a6f64e;p=lilypond.git diff --git a/lily/include/paper-score.hh b/lily/include/paper-score.hh index e27fe72943..e3d0813b4b 100644 --- a/lily/include/paper-score.hh +++ b/lily/include/paper-score.hh @@ -1,84 +1,67 @@ /* - paper-score.hh -- declare Paper_score + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1996--2015 Han-Wen Nienhuys - (c) 1996, 1997--1999 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. + + 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. + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . +*/ -#ifndef P_SCORE_HH -#define P_SCORE_HH +#ifndef PAPER_SCORE_HH +#define PAPER_SCORE_HH -#include "colhpos.hh" -#include "parray.hh" -#include "lily-proto.hh" +#include "column-x-positions.hh" #include "music-output.hh" -#include "lily-guile.hh" - -/** all stuff which goes onto paper. notes, signs, symbols in a score - #Paper_score# contains the items, the columns. - - */ +/* LAYOUT output */ class Paper_score : public Music_output { - /// crescs etc; no particular order - Link_array span_p_arr_; - - /// other elements - Link_array elem_p_arr_; - Link_array break_helpers_arr_; - - SCM protected_scms_; + Output_def *layout_; + System *system_; + SCM systems_; + SCM paper_systems_; + + mutable vector cols_; + mutable vector break_indices_; + mutable vector break_ranks_; public: - Paper_def *paper_l_; - - /// the columns, ordered left to right - Link_array col_l_arr_; - - Paper_outputter *outputter_l_; - Line_of_score * line_l_; - - Paper_score (); - - - /// add to bottom of pcols - void add_column (Paper_column*); - - /** - @return index of argument. - */ - int find_col_idx (Paper_column const *) const; - - Link_array broken_col_range (Item const*,Item const*) const; - - - /* STANDARD ROUTINES */ - void print() const; - - void typeset_element (Score_element*); - void typeset_broken_spanner (Spanner*); - /// add a Spanner - void typeset_unbroken_spanner (Spanner*); - - - virtual ~Paper_score(); + Paper_score (Output_def *); + + DECLARE_CLASSNAME (Paper_score); + + static Paper_score *unsmob (SCM ps) { + return dynamic_cast (Music_output::unsmob (ps)); + } + static bool is_smob (SCM ps) { + return Music_output::is_smob (ps) && unsmob (ps); + } + + Output_def *layout () const; + System *root_system () const; + + void typeset_system (System *); + vector calc_breaking (); + vector get_break_indices () const; + vector get_break_ranks () const; + vector get_columns () const; + SCM get_paper_systems (); protected: - /* MAIN ROUTINES */ - virtual void process(); + void find_break_indices () const; + virtual void process (); + virtual void derived_mark () const; private: - /// before calc_breaking - void preprocess(); - - void calc_idealspacing(); - /// calculate where the lines are to be broken, and use results - Array calc_breaking(); - - /// after calc_breaking - void postprocess(); - Paper_score (Paper_score const &); + Paper_score (Paper_score const &); // Do not define! Not copyable! }; -#endif +#endif /* PAPER_SCORE_HH */