2 rest-collision.cc -- implement Rest_collision
4 source file of the LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
9 #include "rest-collision.hh"
10 #include "rest-column.hh"
11 #include "collision.hh"
14 Rest_collision::add(Rest_column *rc_l)
16 rest_l_arr_.push(rc_l);
20 Rest_collision::add(Collision * c_l)
23 for (int i=0; i < c_l->clash_l_arr_.size(); i ++)
24 ncol_l_arr_.push(c_l->clash_l_arr_[i]);
29 Rest_collision::do_post_processing()
33 rest_b_a[j] = (col_l_a[j]) ? col_l_a[j]->rest_b_ : false;
35 int i1 = idx(d, false);
37 if (!intersection(y_extent[i1] ,
38 y_extent[i2]).empty_b()) {
40 y_off[i1] = -y_extent[i1][-d] + y_extent[1][d] + d*4; // ugh
41 y_extent[i1] += y_off[i1];
44 } while ((d *= -1) != 1);
47 int i1 = idx(d, false);
48 int i2 = idx(-d,false);
50 if (d*(y_extent[i1][-d] - y_extent[i2][d] )< 0&& rest_b_a[i1]) {
51 y_off[i1] = -y_extent[i1][-d] + y_extent[i2][d] +d* 4; // ugh
52 y_extent[i1] += y_off[i1];
54 } while ((d *= -1) != 1);
58 IMPLEMENT_STATIC_NAME(Rest_collision);