LEFT | RIGHT |
1 /* | 1 /* |
2 This file is part of LilyPond, the GNU music typesetter. | 2 This file is part of LilyPond, the GNU music typesetter. |
3 | 3 |
4 Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl> | 4 Copyright (C) 2004--2012 Han-Wen Nienhuys <hanwen@xs4all.nl> |
5 | 5 |
6 LilyPond is free software: you can redistribute it and/or modify | 6 LilyPond is free software: you can redistribute it and/or modify |
7 it under the terms of the GNU General Public License as published by | 7 it under the terms of the GNU General Public License as published by |
8 the Free Software Foundation, either version 3 of the License, or | 8 the Free Software Foundation, either version 3 of the License, or |
9 (at your option) any later version. | 9 (at your option) any later version. |
10 | 10 |
11 LilyPond is distributed in the hope that it will be useful, | 11 LilyPond is distributed in the hope that it will be useful, |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 GNU General Public License for more details. | 14 GNU General Public License for more details. |
15 | 15 |
16 You should have received a copy of the GNU General Public License | 16 You should have received a copy of the GNU General Public License |
17 along with LilyPond. If not, see <http://www.gnu.org/licenses/>. | 17 along with LilyPond. If not, see <http://www.gnu.org/licenses/>. |
18 */ | 18 */ |
19 | 19 |
20 #ifndef SLUR_HH | 20 #ifndef SLUR_HH |
21 #define SLUR_HH | 21 #define SLUR_HH |
22 | 22 |
23 #include "lily-proto.hh" | 23 #include "lily-proto.hh" |
24 #include "std-vector.hh" | 24 #include "std-vector.hh" |
25 #include "grob-interface.hh" | 25 #include "grob-interface.hh" |
26 | 26 |
| 27 struct Slur_info |
| 28 { |
| 29 Slur_info (Grob *slur); |
| 30 Grob *slur_; |
| 31 vector<Grob *> stubs_; |
| 32 }; |
| 33 |
27 class Slur | 34 class Slur |
28 { | 35 { |
29 public: | 36 public: |
30 static void add_column (Grob *me, Grob *col); | 37 static void add_column (Grob *me, Grob *col); |
31 static void add_extra_encompass (Grob *me, Grob *col); | 38 static void add_extra_encompass (Grob *me, Grob *col); |
32 static void main_to_stub (Grob *main, Grob *stub); | 39 static void main_to_stub (Grob *main, Grob *stub); |
33 static void replace_breakable_encompass_objects (Grob *me); | 40 static void replace_breakable_encompass_objects (Grob *me); |
34 static void auxiliary_acknowledge_extra_object (Grob_info const &, vector<Grob
*> &, vector<Grob *> &); | 41 static void auxiliary_acknowledge_extra_object (Grob_info const &, vector<Slur
_info> &, vector<Slur_info> &); |
35 DECLARE_SCHEME_CALLBACK (print, (SCM)); | 42 DECLARE_SCHEME_CALLBACK (print, (SCM)); |
36 DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); | 43 DECLARE_SCHEME_CALLBACK (calc_control_points, (SCM)); |
37 DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); | 44 DECLARE_SCHEME_CALLBACK (calc_direction, (SCM)); |
38 DECLARE_SCHEME_CALLBACK (direction_from_shadowed_slur, (SCM)); | |
39 DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); | 45 DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM)); |
40 DECLARE_SCHEME_CALLBACK (height, (SCM)); | 46 DECLARE_SCHEME_CALLBACK (height, (SCM)); |
| 47 DECLARE_SCHEME_CALLBACK (extremal_stub_vertical_skylines, (SCM)); |
41 DECLARE_SCHEME_CALLBACK (vertical_skylines, (SCM)); | 48 DECLARE_SCHEME_CALLBACK (vertical_skylines, (SCM)); |
42 DECLARE_SCHEME_CALLBACK (outside_slur_callback, (SCM, SCM)); | 49 DECLARE_SCHEME_CALLBACK (outside_slur_callback, (SCM, SCM)); |
43 DECLARE_SCHEME_CALLBACK (pure_outside_slur_callback, (SCM, SCM, SCM, SCM)); | 50 DECLARE_SCHEME_CALLBACK (pure_outside_slur_callback, (SCM, SCM, SCM, SCM)); |
44 DECLARE_SCHEME_CALLBACK (outside_slur_cross_staff, (SCM, SCM)); | 51 DECLARE_SCHEME_CALLBACK (outside_slur_cross_staff, (SCM, SCM)); |
45 DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); | 52 DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM)); |
46 DECLARE_GROB_INTERFACE (); | 53 DECLARE_GROB_INTERFACE (); |
47 static Bezier get_curve (Grob *me); | 54 static Bezier get_curve (Grob *me); |
48 }; | 55 }; |
49 | 56 |
50 #endif /* SLUR_HH */ | 57 #endif /* SLUR_HH */ |
LEFT | RIGHT |