X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fvolta-spanner.cc;h=3046205792b03c30032affb687206d779f40e467;hb=4b40ecf0af9b4ff3fcf4287ae685ac1a9cc89523;hp=b2b42ac4f5dc479c27231d6d5be6c6d0f64d085b;hpb=7249d131a7b58117ad502f17975af50ea4144a05;p=lilypond.git diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index b2b42ac4f5..3046205792 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -9,10 +9,11 @@ #include "box.hh" #include "debug.hh" -#include "lookup.hh" +#include "font-interface.hh" #include "molecule.hh" #include "paper-column.hh" #include "paper-def.hh" +#include "text-item.hh" #include "volta-spanner.hh" #include "group-interface.hh" #include "side-position-interface.hh" @@ -20,13 +21,10 @@ void -Volta_spanner::set_interface (Score_element*me) +Volta_spanner::set_interface (Grob*) { - Side_position::set_axis (me, Y_AXIS); - Directional_element_interface::set (me, UP); } - /* this is too complicated. Yet another version of side-positioning, badly implemented. @@ -35,14 +33,13 @@ Volta_spanner::set_interface (Score_element*me) * Should look for system_start_delim to find left edge of staff. - */ MAKE_SCHEME_CALLBACK(Volta_spanner,brew_molecule,1); SCM Volta_spanner::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Link_array bar_arr = Pointer_group_interface__extract_elements (me, (Item*)0, "bars"); @@ -50,7 +47,7 @@ Volta_spanner::brew_molecule (SCM smob) return SCM_EOL; bool no_vertical_start = false; - bool no_vertical_end = to_boolean (me->get_elt_property ("last-volta")); + bool no_vertical_end = to_boolean (me->get_grob_property ("last-volta")); Spanner *orig_span = dynamic_cast (me->original_l_); if (orig_span && (orig_span->broken_into_l_arr_[0] != (Spanner*)me)) no_vertical_start = true; @@ -59,13 +56,12 @@ Volta_spanner::brew_molecule (SCM smob) #if 0 // FIXME - if (bar_arr.top ()->me->get_elt_property (type_str_.length_i () > 1) + if (bar_arr.top ()->me->get_grob_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; + Real half_space = 0.5; /* the volta spanner is attached to the bar-line, which is moved @@ -73,8 +69,8 @@ Volta_spanner::brew_molecule (SCM smob) */ Real left = 0.0; Real w = dynamic_cast(me)->spanner_length () - left - half_space; - Real h = staff_space * gh_scm2double (me->get_elt_property ("height")); - Real t = staff_thick * gh_scm2double (me->get_elt_property ("thickness")); + Real h = gh_scm2double (me->get_grob_property ("height")); + Real t = staff_thick * gh_scm2double (me->get_grob_property ("thickness")); /* ugh: should build from line segments. @@ -88,20 +84,20 @@ Volta_spanner::brew_molecule (SCM smob) SCM_UNDEFINED)); Box b (Interval (0, w), Interval (0, h)); - Molecule mol (b, at); - Molecule num (me->lookup_l ()->text ("volta", - ly_scm2string (me->get_elt_property("text")), - me->paper_l ())); + Molecule mol (b, at); + SCM text = me->get_grob_property("text"); + SCM properties = gh_list (me->mutable_property_alist_, me->immutable_property_alist_,SCM_UNDEFINED); + Molecule num = Text_item::text2molecule (me, text, properties); mol.add_at_edge (X_AXIS, LEFT, num, - num.extent (X_AXIS).length () - - staff_space); + - 1.0); mol.translate_axis (left, X_AXIS); - return mol.create_scheme(); + return mol.smobbed_copy (); } void -Volta_spanner::add_bar (Score_element *me, Item* b) +Volta_spanner::add_bar (Grob *me, Item* b) { Pointer_group_interface::add_element(me, "bars",b); Side_position::add_support (me,b); @@ -109,7 +105,7 @@ Volta_spanner::add_bar (Score_element *me, Item* b) } void -Volta_spanner::add_column (Score_element*me, Score_element* c) +Volta_spanner::add_column (Grob*me, Grob* c) { Side_position::add_support (me,c); }