*/
#include "system-start-delimiter.hh"
-
-
-#include "spanner.hh"
+#include "text-interface.hh"
+#include "all-font-metrics.hh"
#include "axis-group-interface.hh"
-#include "output-def.hh"
#include "font-interface.hh"
-#include "all-font-metrics.hh"
-#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
#include "item.hh"
#include "line-interface.hh"
-
+#include "lookup.hh"
+#include "output-def.hh"
#include "pointer-group-interface.hh"
+#include "spanner.hh"
+#include "staff-symbol-referencer.hh"
Stencil
System_start_delimiter::staff_bracket (Grob *me, Real height)
System_start_delimiter::line_bracket (Grob *me, Real height)
{
Real thick
- = me->layout ()->get_dimension (ly_symbol2scm ("linethickness"))
+ = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"))
* robust_scm2double (me->get_property ("thickness"), 1);
Real w = 0.8;
return vline;
}
+Stencil
+System_start_delimiter::text (Grob *me_grob, Real h)
+{
+ (void) h;
+
+ Spanner *me = dynamic_cast<Spanner*> (me_grob);
+ SCM t = me->get_property ("text");
+ if (me->get_break_index () == 0)
+ t = me->get_property ("long-text");
+
+
+ SCM chain = Font_interface::text_font_alist_chain (me);
+
+ SCM scm_stencil = Text_interface::is_markup (t)
+ ? Text_interface::interpret_markup (me->layout ()->self_scm (), chain, t)
+ : SCM_EOL;
+
+
+ if (Stencil *p = unsmob_stencil (scm_stencil))
+ {
+ SCM align_y = me_grob->get_property ("self-alignment-Y");
+ if (scm_is_number (align_y))
+ p->align_to (Y_AXIS, robust_scm2double (align_y, 0.0));
+ return *p;
+ }
+ return Stencil();
+}
+
Stencil
System_start_delimiter::simple_bar (Grob *me, Real h)
{
- Real lt = me->layout ()->get_dimension (ly_symbol2scm ("linethickness"));
+ Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
Real w = lt * robust_scm2double (me->get_property ("thickness"), 1);
return Lookup::round_filled_box (Box (Interval (0, w), Interval (-h / 2, h / 2)),
lt);
Interval ext;
int non_empty_count = 0;
- for (int i = elts.size (); i--;)
+ for (vsize i = elts.size (); i--;)
{
Spanner *sp = dynamic_cast<Spanner *> (elts[i]);
m = simple_bar (me, len);
else if (glyph_sym == ly_symbol2scm ("line-bracket"))
m = line_bracket (me, len);
+ else if (glyph_sym == ly_symbol2scm ("text"))
+ m = text (me, len);
m.translate_axis (ext.center (), Y_AXIS);
return m.smobbed_copy ();
SCM alist = scm_list_n (fam, SCM_UNDEFINED);
fm = select_font (me->layout (), scm_list_n (alist, SCM_UNDEFINED));
- int lo = 0;
- int hi = max (fm->count () - 1, 2);
+ int
+ lo = 0;
+ int hi = max ((int) fm->count () - 1, 2);
/* do a binary search for each Y, not very efficient, but passable? */
Box b;
/* properties */
"collapse-height "
"style "
+ "text "
+ "long-text "
+ "self-alignment-Y "
"thickness "
);