- return Molecule (fm->text_dimension (ly_scm2string (text)), list);
-}
-
-
-/*
- TODO:
-
- DOCME.
-
-
- MARKUP_TEXT must be compound (may not be simple string.)
-
- */
-Molecule
-Text_item::markup_text2molecule (Grob *me, SCM markup_text,
- SCM alist_chain)
-{
- SCM f = me->get_paper ()->lookup_variable (ly_symbol2scm ("markup-to-properties"));
-
- SCM markup = ly_car (markup_text);
- SCM text = ly_cdr (markup_text);
-
- /* ARGRGRRGRARGRA
- */
-
- SCM abbrev = me->get_paper ()->lookup_variable (ly_symbol2scm ("abbreviation-alist"));
- SCM style = me->get_paper ()->lookup_variable (ly_symbol2scm ("style-alist"));
-
- SCM p = gh_cons (scm_call_3 (f, abbrev, style, markup), alist_chain);
-
- Real staff_space = Staff_symbol_referencer::staff_space (me);
-
- /*
- Line mode is default.
- */
- Axis axis = X_AXIS;
-
- SCM a = ly_assoc_chain (ly_symbol2scm ("axis"), p);
- if (gh_pair_p (a) && ly_axis_p (ly_cdr (a)))
- axis = (Axis)gh_scm2int (ly_cdr (a));
-
- Real baseline_skip = 0;
- SCM b = ly_assoc_chain (ly_symbol2scm ("baseline-skip"), p);
- if (gh_pair_p (b) && gh_number_p (ly_cdr (b)))
- baseline_skip = gh_scm2double (ly_cdr (b)) * staff_space;
-
- Real kern[2] = {0,0};
-
- SCM k = ly_assoc_chain (ly_symbol2scm ("kern"), p);
- if (gh_pair_p (k) && gh_number_p (ly_cdr (k)))
- kern[axis] = gh_scm2double (ly_cdr (k)) * staff_space;
-
- Real raise = 0;
- SCM r = ly_assoc_chain (ly_symbol2scm ("raise"), p);
- if (gh_pair_p (r) && gh_number_p (ly_cdr (r)))
- raise = gh_scm2double (ly_cdr (r)) * staff_space;
-
-
- Interval extent;
- bool extent_b = false;
- SCM e = ly_assoc_chain (ly_symbol2scm ("extent"), p);
- if (gh_pair_p (e) && ly_number_pair_p (ly_cdr (e)))
- {
- extent = Interval (gh_scm2double (ly_cadr (e)) * staff_space,
- gh_scm2double (ly_cddr (e)) * staff_space);
- extent_b = true;
- }
-
- Offset o (kern[X_AXIS], raise - kern[Y_AXIS]);
-
- Molecule mol = Lookup::filledbox (Box (Interval (0,0), Interval (0,0)));
-
- SCM cp = ly_deep_copy (p);
- if (raise)
- {
- SCM cr = ly_assoc_chain (ly_symbol2scm ("raise"), cp);
- scm_set_cdr_x (cr, gh_int2scm (0));
- }
-
- while (gh_pair_p (text))
- {
- Molecule m = text2molecule (me, ly_car (text), cp);
-
- if (!m.empty_b ())