1 #include "cross-staff.hh"
3 #include "align-interface.hh"
6 #include "paper-def.hh"
11 calc_interstaff_dist (Item *item, Spanner *span)
13 Real interstaff = 0.0;
14 Score_element *common = item->common_refpoint (span, Y_AXIS);
17 if (Align_interface::has_interface (common) && Align_interface::axis(common) == Y_AXIS)
19 SCM threshold = common->get_elt_property ("threshold");
20 if (!gh_pair_p (threshold)
21 || !scm_equal_p (gh_car (threshold), gh_cdr (threshold)))
22 warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken"));
27 if (gh_pair_p (threshold))
28 interstaff = gh_scm2double (gh_car (threshold)) * interstaff;
30 Score_element * span_refpoint = span;
31 while (span_refpoint->parent_l (Y_AXIS) != common)
32 span_refpoint = span_refpoint->parent_l (Y_AXIS);
34 Score_element * note_refpoint = item;
35 while (note_refpoint->parent_l (Y_AXIS) != common)
36 note_refpoint = note_refpoint->parent_l (Y_AXIS);
39 Align_interface::get_count (common,(Score_element*) dynamic_cast<Score_element *> (span_refpoint));
41 Align_interface::get_count (common,(Score_element*) dynamic_cast<Score_element *> (note_refpoint));
44 our staff is lower -> interstaff *= -1
47 if (span_prio < item_prio)