]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/hara-kiri-vertical-group-spanner.cc
release: 1.3.44
[lilypond.git] / lily / hara-kiri-vertical-group-spanner.cc
index fa95b295cc0a6e291ad717a4d50511b6bde85688..12d5093c079185a83059eb16c3d325b3d9824071 100644 (file)
@@ -4,50 +4,51 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998,1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
+#include "axis-group-interface.hh"
 #include "hara-kiri-vertical-group-spanner.hh"
 #include "debug.hh"
 #include "item.hh"
 
-Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner()
+Hara_kiri_group_spanner::Hara_kiri_group_spanner()
 {
+  set_elt_property ("items-worth-living", SCM_EOL);
 }
 
 void 
-Hara_kiri_vertical_group_spanner::add_interesting_item (Item* n)
+Hara_kiri_group_spanner::add_interesting_item (Item* n)
 {
   add_dependency (n);
-  interesting_items_.push (n);
+  set_elt_property ("items-worth-living",
+                   gh_cons (n->self_scm_,
+                            get_elt_property ("items-worth-living")));
 }
 
 void 
-Hara_kiri_vertical_group_spanner::do_post_processing ()
+Hara_kiri_group_spanner::after_line_breaking ()
 {
-  if (!interesting_items_.empty ())
+  SCM worth = get_elt_property ("items-worth-living");
+  if (gh_pair_p (worth))
     return;
 
-  Link_array<Score_element> childs = get_children ();
+  Link_array<Score_element> childs = Axis_group_interface (this).get_children ();
   for (int i = 0; i < childs.size (); i++)
     {
-      childs[i]->transparent_b_ = true;
-      childs[i]->set_empty (true);
+      Score_element* s = childs[i];
+
+      if ( line_l () != s->line_l ())
+       programming_error ("Killing other children too");
+      s->set_elt_property ("transparent", SCM_BOOL_T);
+      s->set_extent_callback (0, X_AXIS);
+      s->set_extent_callback (0, Y_AXIS);
+
     }
-  set_empty (true);
+  set_extent_callback (0, X_AXIS);
+  set_extent_callback (0, Y_AXIS);  
 }
 
-void
-Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
-{
-  if (Item *it = dynamic_cast<Item *> (o))
-    interesting_items_.substitute (it, dynamic_cast<Item *> (n));
-}
 
 
-void
-Hara_kiri_vertical_group_spanner::do_print () const
-{
-  Axis_group_spanner::do_print ();
-}