2 slur-scoring.hh -- declare Slur_score_parameters
4 source file of the GNU LilyPond music typesetter
6 (c) 2004--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
9 #ifndef SLUR_SCORING_HH
10 #define SLUR_SCORING_HH
13 #include "lily-proto.hh"
14 #include "std-vector.hh"
15 #include "lily-guile.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_penalty_;
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);
42 struct Extra_collision_info
50 Extra_collision_info (Grob *g, Real idx, Interval x, Interval y, Real p);
51 Extra_collision_info ();
66 Real get_point (Direction dir) const
84 Interval slur_head_x_extent_;
97 struct Slur_score_state
100 Grob *common_[NO_AXES];
102 bool edge_has_beams_;
107 Link_array__Grob_ columns_;
108 std::vector<Encompass_info> encompass_infos_;
109 std::vector<Extra_collision_info> extra_encompass_infos_;
112 Slur_score_parameters parameters_;
113 Drul_array<Bound_info> extremes_;
114 Drul_array<Offset> base_attachments_;
115 Link_array__Slur_configuration_ configurations_;
120 ~Slur_score_state ();
122 Bezier get_best_curve ();
124 void set_next_direction ();
126 std::vector<Offset> generate_avoid_offsets () const;
127 Drul_array<Bound_info> get_bound_info () const;
128 void generate_curves () const;
129 Link_array__Slur_configuration_ enumerate_attachments (Drul_array<Real> end_ys) const;
130 Drul_array<Offset> get_base_attachments () const;
131 Drul_array<Real> get_y_attachment_range () const;
132 Encompass_info get_encompass_info (Grob *col) const;
133 std::vector<Extra_collision_info> get_extra_encompass_infos () const;
134 Real move_away_from_staffline (Real y, Grob *on_staff) const;
135 int get_closest_index (SCM inspect_quants) const;
138 void set_slur_control_points (Grob *me);
140 #endif /* SLUR_SCORING_HH */