X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fline-interface.cc;h=6401b3896ae942ced9333c9b101ab43582275ef4;hb=e4597b9d661ccb3d1031b9e17ec0bcca2bfaa66d;hp=81019e210ee0718db5ef5ffa1ba9b8290ff93b41;hpb=4b975f3177880e16e759f67be4517f67109c2633;p=lilypond.git diff --git a/lily/line-interface.cc b/lily/line-interface.cc index 81019e210e..6401b3896a 100644 --- a/lily/line-interface.cc +++ b/lily/line-interface.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2004--2005 Han-Wen Nienhuys + (c) 2004--2006 Han-Wen Nienhuys */ #include "line-interface.hh" @@ -18,15 +18,15 @@ Line_interface::make_arrow (Offset begin, Offset end, Real length, Real width) { Real angle = (end - begin).arg (); - Array points; - - points.push (Offset (0, 0)); - points.push (Offset (-length, width)); - points.push (Offset (-length, -width)); + vector points; - for (int i = 0; i < points.size(); i++) + points.push_back (Offset (0, 0)); + points.push_back (Offset (-length, width)); + points.push_back (Offset (-length, -width)); + + for (vsize i = 0; i < points.size (); i++) points[i] = points[i] * complex_exp (Offset (0, angle)) + end; - + return Lookup::round_filled_polygon (points, thick); } @@ -89,21 +89,20 @@ Line_interface::arrows (Grob *me, Offset from, Offset to, { Real thick = Staff_symbol_referencer::line_thickness (me) * robust_scm2double (me->get_property ("thickness"), 1); - Real ss = Staff_symbol_referencer::staff_space (me); - + Real ss = Staff_symbol_referencer::staff_space (me); + Real len = robust_scm2double (me->get_property ("arrow-length"), 1.3 * ss); Real wid = robust_scm2double (me->get_property ("arrow-width"), 0.5 * ss); if (to_arrow) - a.add_stencil (make_arrow (from, to, thick, len, wid)); - + a.add_stencil (make_arrow (from, to, thick, len, wid)); + if (from_arrow) - a.add_stencil (make_arrow (to, from, thick, len, wid)); + a.add_stencil (make_arrow (to, from, thick, len, wid)); } return a; } - Stencil Line_interface::line (Grob *me, Offset from, Offset to) @@ -114,7 +113,7 @@ Line_interface::line (Grob *me, Offset from, Offset to) SCM type = me->get_property ("style"); Stencil stil; - + SCM dash_fraction = me->get_property ("dash-fraction"); if (scm_is_number (dash_fraction) || type == ly_symbol2scm ("dotted-line")) { @@ -131,10 +130,10 @@ Line_interface::line (Grob *me, Offset from, Offset to) if (period < 0) return Stencil (); - stil = make_dashed_line (thick, from, to, period, fraction); + stil = make_dashed_line (thick, from, to, period, fraction); } else - stil = make_line (thick, from, to); + stil = make_line (thick, from, to); return stil; } @@ -147,4 +146,10 @@ ADD_INTERFACE (Line_interface, "line-interface", "produced. If @code{dash-fraction} is negative, the line is made " "transparent.", - "dash-period dash-fraction thickness style arrow-length arrow-width") + /* properties */ + "dash-period " + "dash-fraction " + "thickness " + "style " + "arrow-length " + "arrow-width")