*/
#include "line-interface.hh"
-#include "molecule.hh"
+#include "stencil.hh"
#include "grob.hh"
#include "staff-symbol-referencer.hh"
#include "lookup.hh"
#include "paper-def.hh"
-Molecule
+Stencil
Line_interface::make_dashed_line (Real thick, Offset from, Offset to,
Real dash_period, Real dash_fraction)
{
box[X_AXIS].widen (thick/2);
box[Y_AXIS].widen (thick/2);
- Molecule m = Molecule (box, at);
+ Stencil m = Stencil (box, at);
m.translate (from);
return m;
}
-Molecule
+Stencil
Line_interface::make_line (Real th, Offset from, Offset to)
{
SCM at = scm_list_n (ly_symbol2scm ("draw-line"),
box[X_AXIS].widen (th/2);
box[Y_AXIS].widen (th/2);
- return Molecule (box, at);
+ return Stencil (box, at);
}
-
-/*
- TODO: read THICK from ME
- */
-Molecule
+Stencil
Line_interface::line (Grob *me, Offset from, Offset to)
{
- Real thick = me->get_paper()->get_realvar (ly_symbol2scm ("linethickness"));
- thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer?
+ Real thick = Staff_symbol_referencer::line_thickness (me)
+ * robust_scm2double (me->get_grob_property ("thickness"),1);
SCM type = me->get_grob_property ("style");
- if (type == ly_symbol2scm ("dotted-line")
- || type == ly_symbol2scm ("dashed-line"))
- {
- Real fraction =
- robust_scm2double (me->get_grob_property ("dash-fraction"),
- (type == ly_symbol2scm ("dotted-line")) ? 0.0 : 0.4);
+ SCM dash_fraction = me->get_grob_property ("dash-fraction");
+ if (gh_number_p (dash_fraction) || type == ly_symbol2scm ("dotted-line"))
+ {
+
+ Real fraction
+ = type == ly_symbol2scm ("dotted-line")
+ ? 0.0
+ : robust_scm2double (dash_fraction, 0.4);
+
fraction = (fraction >? 0) <? 1.0;
Real period = Staff_symbol_referencer::staff_space (me)
* robust_scm2double (me->get_grob_property ("dash-period"), 1.0);
if (period < 0)
- return Molecule ();
-
+ return Stencil ();
+
return make_dashed_line (thick, from, to, period, fraction);
}
else
}
ADD_INTERFACE(Line_interface, "line-interface",
- "Generic line objects. Any object using lines supports this. ",
+ "Generic line objects. Any object using lines supports this. Normally,"
+ "you get a straight line. If dash-period is defined, a dashed line is "
+ "produced; the length of the dashes is tuned with"
+ "@code{dash-fraction}. If the latter is set to 0, a dotted line is "
+ "produced. If @code{dash-fraction} is negative, the line is set "
+ "transparent.",
+
"dash-period dash-fraction thickness style")