X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fline-spanner.cc;h=7a682bc9d1d8d40b46b3534e0143438b5188f1f5;hb=afc519eae4c31fe515371ec68b077d6532a7e5cf;hp=b9bea18d6f4f07c5b344891acd728556dac5b2fe;hpb=b1323f33e9aa4b9eea05eefb8755c907d4d762d4;p=lilypond.git diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc index b9bea18d6f..7a682bc9d1 100644 --- a/lily/line-spanner.cc +++ b/lily/line-spanner.cc @@ -6,13 +6,12 @@ (c) 2000--2004 Jan Nieuwenhuizen */ +#include "line-spanner.hh" + #include -#include "stencil.hh" -#include "item.hh" #include "spanner.hh" -#include "line-spanner.hh" -#include "paper-def.hh" +#include "output-def.hh" #include "paper-column.hh" #include "staff-symbol-referencer.hh" #include "font-interface.hh" @@ -37,15 +36,15 @@ zigzag_stencil (Grob *me, double w = robust_scm2double (me->get_property ("zigzag-width"), 1)*staff_space; double l = robust_scm2double ( me->get_property ("zigzag-length"), 1)* w; - double h = l>w/2 ? sqrt(l*l-w*w/4) : 0; + double h = l>w/2 ? sqrt (l*l-w*w/4) : 0; SCM list = scm_list_n (ly_symbol2scm ("zigzag-line"), - gh_bool2scm (true), - gh_double2scm (w), - gh_double2scm (h), - gh_double2scm (thick), - gh_double2scm (dx), - gh_double2scm (dy), + ly_bool2scm (true), + scm_make_real (w), + scm_make_real (h), + scm_make_real (thick), + scm_make_real (dx), + scm_make_real (dy), SCM_UNDEFINED); Box b; b.add_point (Offset (0,0)); @@ -56,7 +55,7 @@ zigzag_stencil (Grob *me, return Stencil (b, list); } -MAKE_SCHEME_CALLBACK(Line_spanner, after_line_breaking, 1); +MAKE_SCHEME_CALLBACK (Line_spanner, after_line_breaking, 1); SCM Line_spanner::after_line_breaking (SCM g) { @@ -78,8 +77,8 @@ Line_spanner::after_line_breaking (SCM g) --hwn. */ - if (sp->get_bound (LEFT)->break_status_dir() - && !sp->get_bound (RIGHT)->break_status_dir()) + if (sp->get_bound (LEFT)->break_status_dir () + && !sp->get_bound (RIGHT)->break_status_dir ()) { /* Can't do suicide, since this mucks up finding the trend. @@ -98,7 +97,7 @@ Line_spanner::line_stencil (Grob *me, { Offset dz = to -from ; SCM type = me->get_property ("style"); - if (gh_symbol_p (type) + if (scm_is_symbol (type) && (type == ly_symbol2scm ("line") || type == ly_symbol2scm ("dashed-line") || type == ly_symbol2scm ("dotted-line") @@ -109,18 +108,18 @@ Line_spanner::line_stencil (Grob *me, ? zigzag_stencil (me, from, to) : Line_interface::line (me, from, to); } - else if (gh_symbol_p (type) + else if (scm_is_symbol (type) && type == ly_symbol2scm ("trill")) { - SCM alist_chain = Font_interface::font_alist_chain (me); - SCM style_alist = scm_list_n (gh_cons (ly_symbol2scm ("font-family"), - ly_symbol2scm ("music")), + SCM alist_chain = Font_interface::text_font_alist_chain (me); + SCM style_alist = scm_list_n (scm_cons (ly_symbol2scm ("font-encoding"), + ly_symbol2scm ("fetaMusic")), SCM_UNDEFINED); - Font_metric *fm = select_font (me->get_paper (), - gh_cons (style_alist, - alist_chain)); - Stencil m = fm->find_by_name ("scripts-trill-element"); + Font_metric *fm = select_font (me->get_layout (), + scm_cons (style_alist, + alist_chain)); + Stencil m = fm->find_by_name ("scripts.trill.element"); Stencil mol; do @@ -139,7 +138,7 @@ Line_spanner::line_stencil (Grob *me, mol.translate (from); return mol; } - return Stencil(); + return Stencil (); } /* @@ -169,9 +168,12 @@ line_spanner_common_parent (Grob *me) routine, via stencil_extent. At this point, the staves aren't separated yet, so it doesn't work cross-staff. + (huh? crossable staves have fixed distance? --hwn) + */ + MAKE_SCHEME_CALLBACK (Line_spanner, print, 1); SCM Line_spanner::print (SCM smob) @@ -190,20 +192,20 @@ Line_spanner::print (SCM smob) Offset his_off; - if (bound[RIGHT]->break_status_dir()) + if (bound[RIGHT]->break_status_dir ()) { if (bound[LEFT]->break_status_dir ()) { programming_error ("line-spanner with two broken ends. Farewell sweet world."); - me->suicide(); + me->suicide (); return SCM_EOL; } /* This is hairy. For the normal case, we simply find common parents, and draw a line between the bounds. When two note - heads are on different lines, there is no common parent + heads are on different systems, there is no common parent anymore. We have to find the piano-staff object. */ @@ -216,7 +218,7 @@ Line_spanner::print (SCM smob) { programming_error ("no note heads for the line spanner on next line?" " Confused."); - me->suicide(); + me->suicide (); return SCM_EOL; } @@ -245,7 +247,7 @@ Line_spanner::print (SCM smob) dz = (dz.length () - 2*gap) *dir; - Stencil l (line_stencil (me, Offset(0, 0), dz)); + Stencil l (line_stencil (me, Offset (0, 0), dz)); l.translate (dir * gap + p1 - Offset (me->relative_coordinate (commonx, X_AXIS), @@ -272,7 +274,7 @@ Line_spanner::print (SCM smob) + bound[RIGHT]->extent (common[X_AXIS], ax).center () - bound[LEFT]->extent (common[X_AXIS], ax).center (); - my_off[ax] =me->relative_coordinate (common[a], ax); + my_off[ax] = me->relative_coordinate (common[a], ax); his_off[ax] = bound[LEFT]->relative_coordinate (common[a], ax); }