X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrid-line-interface.cc;h=f24f96829f8445c6c470439d0880afc8854b58e4;hb=e0106a2533e8a6a90db07941af4ad3830667fe6e;hp=953fe4ab7e302a619deadceba11ac764e011683d;hpb=e1b465ac050fed8f3957c999ec469fda0b66d351;p=lilypond.git diff --git a/lily/grid-line-interface.cc b/lily/grid-line-interface.cc index 953fe4ab7e..f24f96829f 100644 --- a/lily/grid-line-interface.cc +++ b/lily/grid-line-interface.cc @@ -3,33 +3,30 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys - + (c) 2005--2006 Han-Wen Nienhuys */ #include "grid-line-interface.hh" #include "grob.hh" -#include "group-interface.hh" +#include "pointer-group-interface.hh" #include "lookup.hh" #include "output-def.hh" -#include "stencil.hh" - MAKE_SCHEME_CALLBACK (Grid_line_interface, print, 1); SCM Grid_line_interface::print (SCM smobbed_me) { Grob *me = unsmob_grob (smobbed_me); - SCM first_elt = me->get_property ("elements"); + extract_grob_set (me, "elements", elts); /* compute common refpoint of elements */ - Grob *refp = common_refpoint_of_list (first_elt, me, Y_AXIS); + Grob *refp = common_refpoint_of_array (elts, me, Y_AXIS); Interval iv; - - for (SCM elts = first_elt; scm_is_pair (elts); elts = scm_cdr (elts)) + + for (vsize i = 0; i < elts.size (); i++) { - Grob *point = unsmob_grob (scm_car (elts)); + Grob *point = elts[i]; iv.unite (point->extent (refp, Y_AXIS)); } @@ -40,30 +37,27 @@ Grid_line_interface::print (SCM smobbed_me) return SCM_EOL; } - Real staffline = me->get_layout ()->get_dimension (ly_symbol2scm ("linethickness")); + Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) * staffline; - - iv += - me->relative_coordinate (refp, Y_AXIS); + iv += -me->relative_coordinate (refp, Y_AXIS); Stencil st = Lookup::filled_box (Box (Interval (0, thick), iv)); return st.smobbed_copy (); } -MAKE_SCHEME_CALLBACK (Grid_line_interface, width_callback, 2); +MAKE_SCHEME_CALLBACK (Grid_line_interface, width, 1); SCM -Grid_line_interface::width_callback (SCM element_smob, SCM scm_axis) +Grid_line_interface::width (SCM smob) { - Grob *me = unsmob_grob (element_smob); - (void) scm_axis; - assert (scm_to_int (scm_axis) == X_AXIS); + Grob *me = unsmob_grob (smob); - Real staffline = me->get_layout ()->get_dimension (ly_symbol2scm ("linethickness")); + Real staffline = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness")); Real thick = robust_scm2double (me->get_property ("thickness"), 1.0) * staffline; - + return ly_interval2scm (Interval (0, thick)); } @@ -71,14 +65,12 @@ void Grid_line_interface::add_grid_point (Grob *me, Grob *b) { Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), b); - me->add_dependency (b); } -ADD_INTERFACE (Grid_line_interface, "grid-line-interface", +ADD_INTERFACE (Grid_line_interface, "A line that spanned between grid-points. ", "elements thickness"); - -ADD_INTERFACE (Grid_point_interface, "grid-point-interface", +ADD_INTERFACE (Grid_point_interface, "A spanning point for grid lines. ", "");