2 staff-side.cc -- implement Staff_side
4 source file of the GNU LilyPond music typesetter
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #include "paper-def.hh"
12 #include "staff-side.hh"
13 #include "staff-sym.hh"
17 Staff_side::Staff_side()
20 sym_int_
= Interval (0,0);
26 Staff_side::support_height() const
29 for (int i
=0; i
< support_l_arr_
.size(); i
++)
31 Axis_group_element
*common
=
32 common_group (support_l_arr_
[i
], Y_AXIS
);
34 Real y
= support_l_arr_
[i
]->relative_coordinate (common
, Y_AXIS
)
35 -relative_coordinate (common
,Y_AXIS
);
37 y_int
.unite (y
+ support_l_arr_
[i
]->height());
43 y_int
= Interval (0,0);
49 Staff_side::add_support (Score_elem
*i
)
51 support_l_arr_
.push (i
);
56 Staff_side::get_position_f () const
60 warning (_("Staff_side::get_position_f(): "
61 "somebody forgot to set my vertical direction, returning -20"));
67 Real inter_f
= paper()-> internote_f ();
69 Interval v
= support_height();
71 // ugh, dim[y] = PT over here
72 y
= v
[dir_
] + 1 * dir_
* inter_f
;
74 int y_i
= (int)rint (y
/ inter_f
);
75 // ugh: 5 -> staff_lines
79 y
+= (Real
)dir_
* inter_f
;
82 // y = v[dir_] + 1 * dir_ * inter_f;
88 Staff_side::symbol_height() const
90 return Interval (0,0);
94 Staff_side::do_post_processing()
96 sym_int_
= symbol_height();
97 y_
= get_position_f();
99 y_
+= - sym_int_
[-dir_
];
103 Staff_side::do_substitute_dependency (Score_elem
*o
, Score_elem
*n
)
105 support_l_arr_
.unordered_substitute (o
,n
);
109 IMPLEMENT_IS_TYPE_B1(Staff_side
, Score_elem
);