2 hara-kiri-vertical-group-spanner.cc -- implement Hara_kiri_group_spanner
4 source file of the GNU LilyPond music typesetter
6 (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
7 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "axis-group-interface.hh"
12 #include "hara-kiri-group-spanner.hh"
17 Hara_kiri_group_spanner::set_interface (Score_element
*me
)
19 me
->set_elt_pointer ("items-worth-living", SCM_EOL
);
23 Hara_kiri_group_spanner::add_interesting_item (Score_element
* me
,Item
* n
)
25 me
->add_dependency (n
);
26 Pointer_group_interface (me
, "items-worth-living").add_element (n
);
31 Hara_kiri_group_spanner::consider_suicide(Score_element
*me
)
33 SCM worth
= me
->get_elt_pointer ("items-worth-living");
34 if (gh_pair_p (worth
))
37 Link_array
<Score_element
> childs
= Axis_group_interface (me
).get_children ();
38 for (int i
= 0; i
< childs
.size (); i
++)
39 childs
[i
]->suicide ();
43 very appropriate name here :-)
51 We can't rely on offsets and dimensions of elements in a hara-kiri
52 group. Use a callback to make sure that hara-kiri has been done
53 before asking for offsets. */
55 Hara_kiri_group_spanner::force_hara_kiri_callback (Score_element
*elt
, Axis a
)
58 && to_boolean (elt
->get_elt_property ("hara-kiri-interface")))
59 elt
= elt
->parent_l(a
);
63 Hara_kiri_group_spanner::consider_suicide (elt
);