- if (!par_beam
- || get_grob_direction (par_beam) != dir)
- calc_position_and_height (me, &offset, &dy);
- else
- {
- SCM ps = par_beam->get_property ("positions");
-
- Real lp = scm_to_double (scm_car (ps));
- Real rp = scm_to_double (scm_cdr (ps));
-
- /*
- duh. magic.
- */
- offset = lp + dir * (0.5 + scm_to_double (me->get_property ("padding")));
- dy = rp - lp;
- }
-
- SCM lp = me->get_property ("left-position");
- SCM rp = me->get_property ("right-position");
-
- if (scm_is_number (lp) && !scm_is_number (rp))
- rp = scm_from_double (scm_to_double (lp) + dy);
- else if (scm_is_number (rp) && !scm_is_number (lp))
- lp = scm_from_double (scm_to_double (rp) - dy);
- else if (!scm_is_number (rp) && !scm_is_number (lp))
- {
- lp = scm_from_double (offset);
- rp = scm_from_double (offset + dy);
- }
-
- me->set_property ("left-position", lp);
- me->set_property ("right-position", rp);
-
- return SCM_UNSPECIFIED;
+ calc_position_and_height (me, &offset, &dy);
+
+ SCM x = scm_cons (scm_from_double (offset),
+ scm_from_double (offset + dy));
+
+ return x;