]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/item.cc
release: 0.1.7
[lilypond.git] / lily / item.cc
index 083798be00bbe1d4e4abd9300a585d92a30a362e..7553b8cf6bbdc1ef2ba9f11865e4286fbc389aad 100644 (file)
 
 Item::Item()
 {
+    breakable_b_ = false;
+    break_status_i_ = 0;
     pcol_l_ = 0;
-    broken_to_a_[0]
-       = broken_to_a_[1]=0;
+    broken_to_a_[0] = broken_to_a_[1]=0;
 }
 
 IMPLEMENT_IS_TYPE_B1(Item, Score_elem);
@@ -33,11 +34,9 @@ Item::do_print() const
 Real 
 Item::hpos_f()const
 {
-    return pcol_l_->hpos_f_ + offset().x;
+    return pcol_l_->hpos_f_ + absolute_coordinate(X_AXIS);
 }
 
-
-
 Line_of_score *
 Item::line_l()const
 {
@@ -47,43 +46,42 @@ Item::line_l()const
 int
 Item::break_status_i() const
 {
-    PCol * c = pcol_l_;
-    if (c->breakable_b())
-       return 0;
-    else if (!c->daddy_l_) 
-       return 0; 
-    else if (c == c->daddy_l_->prebreak_p_)
-       return -1;
-    else 
-       return 1;
+    return break_status_i_;
 }
 
 void
 Item::copy_breakable_items()
 {
+    if ( broken_to_a_[0] || broken_to_a_[1] )
+       return;
+    Item *new_copies[2];
     for (int i=0; i < 2; i++) {
        Item * item_p = clone()->item();
        item_p->copy_dependencies(*this);
-       /* add our pre and postbreaks blondly to our own y_group
-          Let Vertical_group_spanner figure out the mess.
-        */
-       if  ( y_group_l_ )
-           y_group_l_->add_element( item_p );
-       pscore_l_->typeset_item(item_p, pcol_l_, -1+ 2*i);
+       
+       item_p->break_status_i_ =  -1+ 2*i;
+       pscore_l_->typeset_item(item_p, pcol_l_);
        item_p->handle_prebroken_dependencies();
-       broken_to_a_[i] = item_p;
+       new_copies[i] =item_p;
     }
+    broken_to_a_= new_copies;
 }
 
 void
 Item::do_breakable_col_processing()
 {
-    PCol * c = pcol_l_;
-    if (!c->breakable_b())
+    if (!breakable_b_ || !pcol_l_->breakable_b())
        return;
-    
+
     copy_breakable_items();
     handle_prebroken_dependencies();
+
+    /*
+      Otherwise the broken items won't be pre_process()'ed.
+     */
+    add_dependency( broken_to_a_[0] );
+    add_dependency( broken_to_a_[1] );    
+
 }
 
 Item*
@@ -116,6 +114,6 @@ Item::find_prebroken_piece(PCol*c)const
 void
 Item::handle_prebroken_dependencies()
 {
-    if ( pcol_l_->breakable_b() || pcol_l_->daddy_l_ )
+    if ( breakable_b_ )
        Score_elem::handle_prebroken_dependencies();
 }