From: fred Date: Sun, 24 Mar 2002 19:34:51 +0000 (+0000) Subject: lilypond-0.0.41 X-Git-Tag: release/1.5.59~5214 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2b01f3fdfdebec119060ceed4cecd3a8240af3b8;p=lilypond.git lilypond-0.0.41 --- diff --git a/lily/include/midi-output.hh b/lily/include/midi-output.hh index 19457172cd..d5e9481f25 100644 --- a/lily/include/midi-output.hh +++ b/lily/include/midi-output.hh @@ -9,7 +9,7 @@ #ifndef MIDIOUTPUT_HH #define MIDIOUTPUT_HH -#include "pscore.hh" +#include "p-score.hh" struct Midi_output { Midi_output(Score* score_l, Midi_def* ); diff --git a/lily/include/p-score.hh b/lily/include/p-score.hh new file mode 100644 index 0000000000..eeec67e2fb --- /dev/null +++ b/lily/include/p-score.hh @@ -0,0 +1,106 @@ +// the breaking problem for a score. + +#ifndef PSCORE_HH +#define PSCORE_HH + +#include "colhpos.hh" +#include "varray.hh" +#include "p-col.hh" +#include "p-staff.hh" + + +/** all stuff which goes onto paper. notes, signs, symbols in a score can be grouped in two ways: + horizontally (staffwise), and vertically (columns). #PScore# + contains the items, the columns and the staffs. + */ + +struct PScore { + Paper_def *paper_l_; + + /// the columns, ordered left to right + IPointerList cols; + + /// the idealspacings, no particular order + IPointerList suz; + + /// the staffs ordered top to bottom + IPointerList staffs; + + /// all symbols in score. No particular order. + IPointerList its; + + /// if broken, the different lines + IPointerList lines; + + /// crescs etc; no particular order + IPointerList spanners; + + /// broken spanners + IPointerList broken_spans; + + /* *************** */ + /* CONSTRUCTION */ + + PScore(Paper_def*); + /// add a line to the broken stuff. Positions given in #config# + void set_breaking(Array); + + void add(PStaff *); + + + /** add an item. + add the item in specified containers. If breakstatus is set + properly, add it to the {pre,post}break of the pcol. + */ + void typeset_item(Item *item_p, PCol *pcol_l,PStaff*pstaf_l,int breakstatus=1); + + /// add a Spanner + void typeset_spanner(Spanner*, PStaff*); + + /// add to bottom of pcols + void add(PCol*); + void add_broken(Spanner*); + + /* INSPECTION */ + Array select_items(PStaff*, PCol*); + + /** + @return argument as a cursor of the list + */ + PCursor find_col(const PCol *)const; + + /* MAIN ROUTINES */ + void process(); + + /// last deed of this struct + void output(Tex_stream &ts); + + /* UTILITY ROUTINES */ + + /// get the spacing between c1 and c2, create one if necessary. + Idealspacing* get_spacing(PCol *c1, PCol *c2); + + /// connect c1 and c2 + void do_connect(PCol *c1, PCol *c2, Real distance_f, Real strength_f); + + /// connect c1 and c2 and any children of c1 and c2 + void connect(PCol* c1, PCol *c2, Real distance_f,Real strength_f= 1.0); + + /* STANDARD ROUTINES */ + void OK()const; + void print() const; +private: + /// before calc_breaking + void preprocess(); + + /// calculate where the lines are to be broken, and use results + void calc_breaking(); + + /// after calc_breaking + void postprocess(); + + /// delete unused columns + void clean_cols(); +}; + +#endif diff --git a/lily/include/staffline.hh b/lily/include/staffline.hh index 9fbe3ec917..107d360c79 100644 --- a/lily/include/staffline.hh +++ b/lily/include/staffline.hh @@ -12,7 +12,7 @@ #include "plist.hh" #include "varray.hh" #include "glob.hh" -#include "pstaff.hh" +#include "p-staff.hh" /// one broken line of staff. struct Line_of_staff {