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) 1997--2015 Han-Wen Nienhuys <hanwen@xs4all.nl> | 4 Copyright (C) 1997--2015 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 17 matching lines...) Expand all Loading... |
28 #include "warn.hh" | 28 #include "warn.hh" |
29 | 29 |
30 #include "translator.icc" | 30 #include "translator.icc" |
31 | 31 |
32 SCM | 32 SCM |
33 Slur_engraver::event_symbol () const | 33 Slur_engraver::event_symbol () const |
34 { | 34 { |
35 return ly_symbol2scm ("slur-event"); | 35 return ly_symbol2scm ("slur-event"); |
36 } | 36 } |
37 | 37 |
| 38 bool |
| 39 Slur_engraver::double_property () const |
| 40 { |
| 41 return to_boolean (get_property ("doubleSlurs")); |
| 42 } |
| 43 |
38 SCM | 44 SCM |
39 Slur_engraver::double_property_symbol () const | 45 Slur_engraver::grob_symbol () const |
40 { | |
41 return ly_symbol2scm ("doubleSlurs"); | |
42 } | |
43 | |
44 SCM | |
45 Slur_engraver::grob_name () const | |
46 { | 46 { |
47 return ly_symbol2scm ("Slur"); | 47 return ly_symbol2scm ("Slur"); |
48 } | 48 } |
49 | 49 |
50 const char * | 50 const char * |
51 Slur_engraver::object_name () const | 51 Slur_engraver::object_name () const |
52 { | 52 { |
53 return "slur"; | 53 return "slur"; |
54 } | 54 } |
55 | 55 |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 slurs_.clear (); | 224 slurs_.clear (); |
225 } | 225 } |
226 | 226 |
227 void | 227 void |
228 Slur_engraver::create_slur (const string &spanner_id, Event_info evi, Grob *g_ca
use, Direction dir, bool left_broken) | 228 Slur_engraver::create_slur (const string &spanner_id, Event_info evi, Grob *g_ca
use, Direction dir, bool left_broken) |
229 { | 229 { |
230 Grob *ccc = left_broken | 230 Grob *ccc = left_broken |
231 ? unsmob<Grob> (get_property ("currentCommandColumn")) | 231 ? unsmob<Grob> (get_property ("currentCommandColumn")) |
232 : 0; // efficiency | 232 : 0; // efficiency |
233 SCM cause = evi.slur_ ? evi.slur_->self_scm () : g_cause->self_scm (); | 233 SCM cause = evi.slur_ ? evi.slur_->self_scm () : g_cause->self_scm (); |
234 Spanner *slur = make_spanner (grob_name (), cause); | 234 Spanner *slur = make_spanner (grob_symbol (), cause); |
235 slur->set_property ("spanner-id", ly_string2scm (spanner_id)); | 235 slur->set_property ("spanner-id", ly_string2scm (spanner_id)); |
236 if (dir) | 236 if (dir) |
237 set_grob_direction (slur, dir); | 237 set_grob_direction (slur, dir); |
238 if (left_broken) | 238 if (left_broken) |
239 slur->set_bound (LEFT, ccc); | 239 slur->set_bound (LEFT, ccc); |
240 slurs_.push_back (slur); | 240 slurs_.push_back (slur); |
241 if (evi.note_) | 241 if (evi.note_) |
242 note_slurs_[START].insert (Note_slurs::value_type (evi.note_, slur)); | 242 note_slurs_[START].insert (Note_slurs::value_type (evi.note_, slur)); |
243 | 243 |
244 SCM dps = double_property_symbol (); | 244 if (double_property ()) |
245 if (!SCM_UNBNDP (dps) && to_boolean (get_property (dps))) | |
246 { | 245 { |
247 set_grob_direction (slur, DOWN); | 246 set_grob_direction (slur, DOWN); |
248 slur = make_spanner (grob_name (), cause); | 247 slur = make_spanner (grob_symbol (), cause); |
249 slur->set_property ("spanner-id", ly_string2scm (spanner_id)); | 248 slur->set_property ("spanner-id", ly_string2scm (spanner_id)); |
250 set_grob_direction (slur, UP); | 249 set_grob_direction (slur, UP); |
251 if (left_broken) | 250 if (left_broken) |
252 slur->set_bound (LEFT, ccc); | 251 slur->set_bound (LEFT, ccc); |
253 slurs_.push_back (slur); | 252 slurs_.push_back (slur); |
254 if (evi.note_) | 253 if (evi.note_) |
255 note_slurs_[START].insert(Note_slurs::value_type (evi.note_, slur)); | 254 note_slurs_[START].insert(Note_slurs::value_type (evi.note_, slur)); |
256 } | 255 } |
257 | 256 |
258 } | 257 } |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 for (vsize i = 0; i < objects_to_acknowledge_.size (); i++) | 396 for (vsize i = 0; i < objects_to_acknowledge_.size (); i++) |
398 Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_
, end_slurs_); | 397 Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_
, end_slurs_); |
399 | 398 |
400 note_slurs_[LEFT].clear (); | 399 note_slurs_[LEFT].clear (); |
401 note_slurs_[RIGHT].clear (); | 400 note_slurs_[RIGHT].clear (); |
402 objects_to_acknowledge_.clear (); | 401 objects_to_acknowledge_.clear (); |
403 end_slurs_.clear (); | 402 end_slurs_.clear (); |
404 start_events_.clear (); | 403 start_events_.clear (); |
405 stop_events_.clear (); | 404 stop_events_.clear (); |
406 } | 405 } |
LEFT | RIGHT |