X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fbeam.hh;h=a9b30b678668e1020b9b9e2f1a0aea2d8b552656;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=e79b2705d9a70106808735b2abe3cef8d08cf763;hpb=849ed54c1a272dac222d975e3c8d3e532aaa8f27;p=lilypond.git diff --git a/lily/include/beam.hh b/lily/include/beam.hh index e79b2705d9..a9b30b6786 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -3,16 +3,16 @@ source file of the LilyPond music typesetter - (c) 1996--2006 Han-Wen Nienhuys + (c) 1996--2008 Han-Wen Nienhuys Jan Nieuwenhuizen */ #ifndef BEAM_HH #define BEAM_HH +#include "grob-interface.hh" #include "std-vector.hh" #include "lily-proto.hh" -#include "lily-guile.hh" #include "stem-info.hh" /* @@ -34,28 +34,57 @@ struct Beam_quant_parameters Real STEM_LENGTH_LIMIT_PENALTY; Real DAMPING_DIRECTION_PENALTY; Real MUSICAL_DIRECTION_FACTOR; + Real HINT_DIRECTION_PENALTY; Real IDEAL_SLOPE_FACTOR; Real ROUND_TO_ZERO_SLOPE; void fill (Grob *him); }; +struct Beam_segment +{ + int vertical_count_; + Interval horizontal_; + Beam_segment (); +}; + +struct Beam_stem_segment +{ + Beam_stem_segment (); + + Grob *stem_; + Real width_; + Real stem_x_; + int rank_; + vsize stem_index_; + bool gapped_; + Direction dir_; + int max_connect_; + +}; + + +bool operator <(Beam_stem_segment const &a, Beam_stem_segment const &b); + class Beam { public: - static int visible_stem_count (Grob *); - static Grob *first_visible_stem (Grob *); - static Grob *last_visible_stem (Grob *); - static bool has_interface (Grob *); + static int normal_stem_count (Grob *); + static Grob *first_normal_stem (Grob *); + static Grob *last_normal_stem (Grob *); + DECLARE_GROB_INTERFACE(); static void add_stem (Grob *, Grob *); + static bool is_cross_staff (Grob *); static bool is_knee (Grob *); - static void set_beaming (Grob *, Beaming_info_list const *); + static void set_beaming (Grob *, Beaming_pattern const *); static void set_stemlens (Grob *); static int get_beam_count (Grob *me); static Real get_beam_translation (Grob *me); static Real get_thickness (Grob *me); static void connect_beams (Grob *me); - + static vector get_beam_segments (Grob *me_grob, Grob **common); + static Interval no_visible_stem_positions (Grob *me, Interval default_value); + DECLARE_SCHEME_CALLBACK (rest_collision_callback, (SCM element, SCM prev_off)); DECLARE_SCHEME_CALLBACK (print, (SCM)); DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM)); @@ -63,8 +92,10 @@ public: DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); DECLARE_SCHEME_CALLBACK (calc_positions, (SCM)); DECLARE_SCHEME_CALLBACK (calc_least_squares_positions, (SCM, SCM)); + DECLARE_SCHEME_CALLBACK (calc_normal_stems, (SCM)); DECLARE_SCHEME_CALLBACK (calc_concaveness, (SCM)); DECLARE_SCHEME_CALLBACK (set_stem_lengths, (SCM)); + DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); /* position callbacks */ DECLARE_SCHEME_CALLBACK (shift_region_to_valid, (SCM, SCM)); @@ -92,7 +123,7 @@ private: static void consider_auto_knees (Grob *); static void set_stem_shorten (Grob *); static Real calc_stem_y (Grob *, Grob *s, Grob **c, - Real, Real, + Real, Real, Direction, Drul_array pos, bool french); static int forced_stem_count (Grob *); };