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) 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 |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 || g->get_property ("avoid-slur") == ly_symbol2scm ("around"); | 48 || g->get_property ("avoid-slur") == ly_symbol2scm ("around"); |
49 } | 49 } |
50 | 50 |
51 LY_DEFINE (ly_grob_script_priority_less, "ly:grob-script-priority-less", | 51 LY_DEFINE (ly_grob_script_priority_less, "ly:grob-script-priority-less", |
52 2, 0, 0, (SCM a, SCM b), | 52 2, 0, 0, (SCM a, SCM b), |
53 "Compare two grobs by script priority. For internal use.") | 53 "Compare two grobs by script priority. For internal use.") |
54 { | 54 { |
55 Grob *i1 = unsmob_grob (a); | 55 Grob *i1 = unsmob_grob (a); |
56 Grob *i2 = unsmob_grob (b); | 56 Grob *i2 = unsmob_grob (b); |
57 | 57 |
58 if (unsmob_grob (i1->get_object ("slur")) && unsmob_grob (i2->get_object ("slu
r"))) | 58 /* |
| 59 * avoid-staff of slur trumps script priority. If one grob is |
| 60 * supposed to be printed outside a slur and another grob inside, |
| 61 * we place the inside grob below the outside even if the inside |
| 62 * grob has a higher script-priority. |
| 63 */ |
| 64 if (unsmob_grob (i1->get_object ("slur")) |
| 65 && unsmob_grob (i2->get_object ("slur"))) |
59 { | 66 { |
60 int push1 = pushed_by_slur (i1); | 67 int push1 = pushed_by_slur (i1); |
61 int push2 = pushed_by_slur (i2); | 68 int push2 = pushed_by_slur (i2); |
62 if (push1 != push2) | 69 if (push1 != push2) |
63 return push1 < push2 ? SCM_BOOL_T : SCM_BOOL_F; | 70 return push1 < push2 ? SCM_BOOL_T : SCM_BOOL_F; |
64 } | 71 } |
65 | 72 |
66 SCM p1 = i1->get_property ("script-priority"); | 73 SCM p1 = i1->get_property ("script-priority"); |
67 SCM p2 = i2->get_property ("script-priority"); | 74 SCM p2 = i2->get_property ("script-priority"); |
68 | 75 |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 } | 195 } |
189 } | 196 } |
190 | 197 |
191 ADD_INTERFACE (Script_column, | 198 ADD_INTERFACE (Script_column, |
192 "An interface that sorts scripts according to their" | 199 "An interface that sorts scripts according to their" |
193 " @code{script-priority} and @code{outside-staff-priority}.", | 200 " @code{script-priority} and @code{outside-staff-priority}.", |
194 | 201 |
195 /* properties */ | 202 /* properties */ |
196 "" | 203 "" |
197 ); | 204 ); |
LEFT | RIGHT |