]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/hara-kiri-vertical-group-spanner.cc
release: 1.2.13
[lilypond.git] / lily / hara-kiri-vertical-group-spanner.cc
index 849a2552fa181a6ce70db8a52fea20d5f90bedb5..4b09a5d8a76efc183152923166c087c998099f4d 100644 (file)
@@ -4,53 +4,57 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  (c)  1998,1999 Jan Nieuwenhuizen <janneke@gnu.org>
+  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "hara-kiri-vertical-group-spanner.hh"
 #include "debug.hh"
-#include "note-head.hh"
-#include "bar.hh"
+#include "item.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
-
-Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner()
+Hara_kiri_group_spanner::Hara_kiri_group_spanner()
 {
+  set_axes(Y_AXIS,Y_AXIS);
 }
 
 void 
-Hara_kiri_vertical_group_spanner::add_note (Note_head* n)
+Hara_kiri_group_spanner::add_interesting_item (Item* n)
 {
   add_dependency (n);
-  head_l_arr_.push (n);
+  interesting_items_.push (n);
 }
 
 void 
-Hara_kiri_vertical_group_spanner::do_post_processing ()
+Hara_kiri_group_spanner::do_post_processing ()
 {
-  if (!head_l_arr_.empty ())
+  if (!interesting_items_.empty ())
     return;
 
   Link_array<Score_element> childs = 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_sym, SCM_BOOL_T);
+      s->set_empty (true, X_AXIS, Y_AXIS);
+
     }
   set_empty (true);
 }
 
 void
-Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
+Hara_kiri_group_spanner::do_substitute_element_pointer (Score_element*o, Score_element*n)
 {
-  if (o->is_type_b (Note_head::static_name ()))
-    head_l_arr_.substitute ((Note_head*)o->access_Item (), 
-      (n)? (Note_head*)n->access_Item () : 0);
+  Axis_group_spanner::do_substitute_element_pointer (o,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
+Hara_kiri_group_spanner::do_print () const
 {
   Axis_group_spanner::do_print ();
 }