2 measure-grouping-spanner.cc -- implement Measure_grouping
4 source file of the GNU LilyPond music typesetter
6 (c) 2002--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
9 #include "measure-grouping-spanner.hh"
11 #include "output-def.hh"
15 #include "staff-symbol-referencer.hh"
17 MAKE_SCHEME_CALLBACK (Measure_grouping
, print
, 1);
19 Measure_grouping::print (SCM grob
)
21 Spanner
*me
= dynamic_cast<Spanner
*> (unsmob_grob (grob
));
23 SCM which
= me
->get_property ("style");
24 Real height
= robust_scm2double (me
->get_property ("height"), 1);
26 Real t
= Staff_symbol_referencer::line_thickness (me
) * robust_scm2double (me
->get_property ("thickness"), 1);
27 Grob
*common
= me
->get_bound (LEFT
)->common_refpoint (me
->get_bound (RIGHT
),
30 Real right_point
= robust_relative_extent (me
->get_bound (RIGHT
),
31 common
, X_AXIS
).linear_combination (CENTER
);
32 Real left_point
= me
->get_bound (LEFT
)->relative_coordinate (common
, X_AXIS
);
34 Interval
iv (left_point
, right_point
);
38 TODO: use line interface
40 if (which
== ly_symbol2scm ("bracket"))
41 m
= Lookup::bracket (X_AXIS
, iv
, t
, -height
, t
);
42 else if (which
== ly_symbol2scm ("triangle"))
43 m
= Lookup::triangle (iv
, t
, height
);
45 m
.align_to (Y_AXIS
, DOWN
);
46 m
.translate_axis (- me
->relative_coordinate (common
, X_AXIS
), X_AXIS
);
47 return m
.smobbed_copy ();
50 ADD_INTERFACE (Measure_grouping
,
51 "This object indicates groups of beats. Valid choices for"
52 " @code{style} are @code{bracket} and @code{triangle}.",