]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/axis-group-item.cc
release: 1.1.1
[lilypond.git] / lily / axis-group-item.cc
index bc1bffd00a7ebd86200bbec218a01e7c4612dbd4..6eabab3a58ffa44e65f0e3bf14fad0d0ee62831b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "axis-group-item.hh"
 #include "p-col.hh"
@@ -13,38 +13,43 @@ IMPLEMENT_IS_TYPE_B2(Axis_group_item, Axis_group_element, Item);
 void
 Axis_group_item::OK() const
 {
-    Link_array<Score_elem> elems = axis_admin_.elem_l_arr_; 
-    for (int i=0; i < elems.size(); i++) {
-       Item * it_l = elems[i]->item();
-       assert(it_l);
-  
-       // somebody probably broke it in pieces
-       assert (it_l->pcol_l_ == pcol_l_ );
+  Link_array<Score_element> elems = elem_l_arr ();
+  for (int i=0; i < elems.size(); i++) 
+    {
+      Item * it_l = dynamic_cast<Item*> (elems[i]);
+      assert (it_l);
     }
 }
 
 void
 Axis_group_item::do_breakable_col_processing()
 {
-    if (!pcol_l_->breakable_b())
-       return;
-    OK();
-    copy_breakable_items();
-    
+  if (!breakable_b_ || !column_l ()->breakable_b_) // ugh should merge with Item code
+    return;
+  
+  OK();
+  copy_breakable_items();
+  
            
-    Link_array<Score_elem> elems = axis_admin_.elem_l_arr_; 
-    for (int i=0; i < elems.size(); i++) {
-       Item* it_l = elems[i]->item();
-       for ( int j=0; j < 2; j++) {
-           Item *new_l = it_l->find_prebroken_piece(broken_to_a_[j]->pcol_l_);
-           ((Axis_group_item*)broken_to_a_[j])->add_element( new_l );
+  Link_array<Score_element> elems = elem_l_arr ();
+  for (int i=0; i < elems.size(); i++) 
+    {
+      Item* it_l = dynamic_cast<Item*> (elems[i]);
+      Direction  j=LEFT;
+      do 
+       {
+         Item *new_l = 
+           it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_dir_);
+         (dynamic_cast<Axis_group_item*> (broken_to_drul_[j]))->add_element (new_l);
        }
+      while (flip(&j)!=LEFT);
     }
-    Item::do_breakable_col_processing();
+  Item::do_breakable_col_processing();
 }
 
 void
 Axis_group_item::do_print() const
 { 
-    Axis_group_element::do_print(); 
+  Axis_group_element::do_print(); 
+  Item::do_print ();
 }