- Spanner *me = dynamic_cast<Spanner*> (unsmob_grob (smob));
-
- Drul_array<bool> broken;
- Drul_array<Real> height(0,0), shorten(0,0);
-
- SCM eh = me->get_grob_property ("edge-height");
- SCM sp = me->get_grob_property ("shorten-pair");
-
- Direction d = LEFT;
-
- do
+ Spanner *me = unsmob<Spanner> (smob);
+ Spanner *orig = dynamic_cast<Spanner *> (me->original ());
+
+ Drul_array<bool> broken (false, false);
+ Drul_array<Real> height = robust_scm2drul
+ (me->get_property ("edge-height"), Interval (0, 0));
+ Drul_array<Real> shorten = robust_scm2drul
+ (me->get_property ("shorten-pair"), Interval (0, 0));
+ Drul_array<Real> flare = robust_scm2drul
+ (me->get_property ("bracket-flare"), Interval (0, 0));
+
+ Grob *common = me->get_bound (LEFT)
+ ->common_refpoint (me->get_bound (RIGHT), X_AXIS);
+ Grob *textbit = unsmob<Grob> (me->get_object ("pedal-text"));
+
+ if (textbit)
+ common = common->common_refpoint (textbit, X_AXIS);
+
+ Interval span_points (0, 0);
+ for (LEFT_and_RIGHT (d))