LEFT | RIGHT |
(no file at all) | |
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) 1999--2012 Han-Wen Nienhuys <hanwen@xs4all.nl> | 4 Copyright (C) 1999--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 #include "directional-element-interface.hh" | 20 #include "directional-element-interface.hh" |
21 #include "warn.hh" | 21 #include "warn.hh" |
22 #include "grob.hh" | 22 #include "grob.hh" |
23 | 23 |
24 Direction | 24 Direction |
| 25 recursive_get_grob_direction (Grob *me) |
| 26 { |
| 27 Direction d = get_grob_direction (me); |
| 28 if (d == CENTER) |
| 29 { |
| 30 Grob *yp = me->get_parent (Y_AXIS); |
| 31 if (yp) |
| 32 return recursive_get_grob_direction (yp); |
| 33 } |
| 34 |
| 35 return d; |
| 36 } |
| 37 |
| 38 Direction |
25 get_grob_direction (Grob *me) | 39 get_grob_direction (Grob *me) |
26 { | 40 { |
27 SCM d = me->get_property ("direction"); | 41 SCM d = me->get_property ("direction"); |
28 if (d == ly_symbol2scm ("calculation-in-progress")) | 42 if (d == ly_symbol2scm ("calculation-in-progress")) |
29 { | 43 { |
30 programming_error ("Grob direction requested while calculation in" | 44 programming_error ("Grob direction requested while calculation in" |
31 " progress."); | 45 " progress."); |
32 return UP; | 46 return UP; |
33 } | 47 } |
34 if (!is_direction (d)) | 48 if (!is_direction (d)) |
35 return CENTER; | 49 return CENTER; |
36 | 50 |
37 return to_dir (d); | 51 return to_dir (d); |
38 } | 52 } |
39 | 53 |
40 void | 54 void |
41 set_grob_direction (Grob *me, Direction d) | 55 set_grob_direction (Grob *me, Direction d) |
42 { | 56 { |
43 SCM sd = scm_from_int (d); | 57 SCM sd = scm_from_int (d); |
44 me->set_property ("direction", sd); | 58 me->set_property ("direction", sd); |
45 } | 59 } |
LEFT | RIGHT |