X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Finclude%2Fbeam.hh;h=acfb81803bf739d85f6011fc9abd31044e64dac4;hb=refs%2Ftags%2Frelease%2F1.1.29;hp=c1b1b971b9dcae1f58838d753343d92a1531acf0;hpb=439b9eae8f830918d62c7374d4f72a1079334316;p=lilypond.git diff --git a/lily/include/beam.hh b/lily/include/beam.hh index c1b1b971b9..acfb81803b 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -1,50 +1,75 @@ /* beam.hh -- part of GNU LilyPond - (c) 1996,97 Han-Wen Nienhuys + (c) 1996--1999 Han-Wen Nienhuys */ #ifndef BEAM_HH #define BEAM_HH + #include "lily-proto.hh" #include "directional-spanner.hh" +#include "stem-info.hh" #include "plist.hh" -/** a beam connects multiple stems Beam adjusts the stems its owns to - make sure that they reach the beam and that point in the correct - direction */ +/** a beam connects multiple stems. + + Beam adjusts the stems its owns to make sure that they reach the + beam and that point in the correct direction */ class Beam: public Directional_spanner { public: - Link_array stems; + /** + The beams should be prevented to conflict with the stafflines, + especially at small slopes. + */ + enum Quantisation { NONE, NORMAL, TRADITIONAL, TEST }; + enum Dir_algorithm { /* DOWN=-1, UP=1, */ MAJORITY=2, MEAN, MEDIAN }; + + Link_array stems_; /// the slope of the beam in posns / point (dimension) - Real slope; + Real slope_f_; + /// the slope as solved; not quantised or damped + Real solved_slope_f_; /// position of leftmost end of beam - Real left_pos; - + Real left_y_; + /// should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams + int damping_i_; + /// should beam pos / slope be quantised? 0: no, 1: yes, 2: traditional + Quantisation quantisation_; + /// maximum number of beams (for opening-up of beam-spacing) + int multiple_i_; + + /// vertical align distance between staffs + Drul_array vertical_align_drul_; - /* *************** */ - DECLARE_MY_RUNTIME_TYPEINFO; + Array sinfo_; + Beam(); - void add (Stem*); + void add_stem (Stem*); void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current); - void set_stemlens(); - SCORE_ELEM_CLONE(Beam); + void set_stemlens (); + VIRTUAL_COPY_CONS(Score_element); protected: - Interval do_width() const; - Offset center() const; - void set_default_dir(); - virtual void do_pre_processing(); - virtual void do_post_processing(); - virtual void do_substitute_dependent (Score_elem*, Score_elem*); + virtual Interval do_width () const; + Offset center () const; + void set_default_dir (); + void set_steminfo (); + virtual void do_pre_processing (); + virtual void do_post_processing (); + virtual void do_substitute_dependent (Score_element*, Score_element*); virtual void do_print() const; + virtual void quantise_left_y (bool extend_b); virtual Molecule stem_beams (Stem *here, Stem *next, Stem *prev) const; - virtual void solve_slope(); - virtual Molecule*brew_molecule_p() const; + virtual void calculate_slope (); + virtual Real check_stemlengths_f (bool set_b); + virtual void solve_slope (); + virtual void quantise_dy (); + virtual Molecule*do_brew_molecule_p () const; }; #endif // BEAM_HH