2 slur-scoring.hh -- declare Slur_score_parameters
4 source file of the GNU LilyPond music typesetter
6 (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
10 #ifndef SLUR_SCORING_HH
11 #define SLUR_SCORING_HH
14 #include "lily-proto.hh"
17 struct Slur_score_parameters
20 Real head_encompass_penalty_;
21 Real stem_encompass_penalty_;
22 Real closeness_factor_;
23 Real edge_attraction_factor_;
24 Real same_slope_penalty_;
25 Real steeper_slope_factor_;
26 Real non_horizontal_penalty_;
28 Real max_slope_factor_;
29 Real extra_object_collision_;
30 Real accidental_collision_;
31 Real free_slur_distance_;
32 Real free_head_distance_;
33 Real extra_encompass_free_distance_;
34 Real absolute_closeness_measure_;
35 Real edge_slope_exponent_;
36 Real head_slur_distance_max_ratio_;
37 Real head_slur_distance_factor_;
39 void fill (Grob *him);
44 struct Extra_collision_info
51 Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p)
59 Extra_collision_info ()
79 Real get_point (Direction dir) const
97 Interval slur_head_extent_;
110 struct Slur_score_state
113 Grob *common_[NO_AXES];
115 bool edge_has_beams_;
120 Link_array<Grob> columns_;
121 Array<Encompass_info> encompass_infos_;
122 Array<Extra_collision_info> extra_encompass_infos_;
125 Slur_score_parameters parameters_;
126 Drul_array<Bound_info> extremes_;
127 Drul_array<Offset> base_attachments_;
128 Link_array<Slur_configuration> configurations_;
135 Bezier get_best_curve ();
137 void set_next_direction ();
139 Drul_array<Bound_info> get_bound_info () const;
140 void generate_curves () const;
141 Link_array<Slur_configuration> enumerate_attachments (Drul_array<Real> end_ys) const;
142 Drul_array<Offset> get_base_attachments() const;
143 Drul_array<Real> get_y_attachment_range() const;
144 Encompass_info get_encompass_info (Grob *col) const;
145 Array<Extra_collision_info> get_extra_encompass_infos () const;
146 Real move_away_from_staffline (Real y, Grob *on_staff) const;
150 void set_slur_control_points (Grob *me);
152 #endif /* SLUR_SCORING_HH */