- Real internote_f = paper ()->internote_f ();
- Real dx = internote_f;
- Real w = extent (X_AXIS).length () - dx;
- Molecule volta (lookup_l ()->volta (w, last_b_));
- Real h = volta.dim_.y ().length ();
- Molecule num (number_p_->get_molecule (paper (), LEFT));
- Real dy = column_arr_.top ()->extent (Y_AXIS) [UP] >
- column_arr_[0]->extent (Y_AXIS) [UP];
- dy += 2 * h;
+ * Should look for system_start_delim to find left edge of staff.
+
+
+*/
+
+MAKE_SCHEME_CALLBACK(Volta_spanner,brew_molecule);
+SCM
+Volta_spanner::brew_molecule (SCM smob)
+{
+ Score_element *me = unsmob_element (smob);
+ Link_array<Item> bar_arr
+ = Pointer_group_interface__extract_elements (me, (Item*)0, "bars");
+
+ if (!bar_arr.size ())
+ return SCM_EOL;
+
+ bool no_vertical_start = false;
+ bool no_vertical_end = to_boolean (me->get_elt_property ("last-volta"));
+ Spanner *orig_span = dynamic_cast<Spanner*> (me->original_l_);
+ if (orig_span && (orig_span->broken_into_l_arr_[0] != (Spanner*)me))
+ no_vertical_start = true;
+ if (orig_span && (orig_span->broken_into_l_arr_.top () != (Spanner*)me))
+ no_vertical_end = true;
+
+#if 0
+ // FIXME
+ if (bar_arr.top ()->me->get_elt_property (type_str_.length_i () > 1)
+ no_vertical_end = false;
+#endif
+
+ Real staff_space = me->paper_l ()->get_var ("staffspace");
+ Real staff_thick = me->paper_l ()->get_var ("stafflinethickness");
+ Real half_space = staff_space / 2;