TODO: This is way too hairy
*/
+
#include <math.h> // m_pi
#include "lookup.hh"
if (Note_head::has_interface (n))
{
- Pointer_group_interface::add_element (me, "heads",n);
+ Pointer_group_interface::add_element (me, ly_symbol2scm ("heads"), n);
}
else
{
// stem uses half-spaces
- // fixme: use scm_listify_ref () iso. array[]
+ // fixme: use scm_list_n_ref () iso. array[]
Real shorten_f = a[ ((flag_i (me) - 2) >? 0) <? (a.size () - 1)] * 2;
/* URGURGURG
which should be a dot-column.
*/
if (dir * (st + flagy - dp) < 0.5)
- Side_position_interface::add_support (dots->parent_l (X_AXIS), me);
+ Side_position_interface::add_support (dots->get_parent (X_AXIS), me);
/*
previous approach was to lengthen the stem. This is not
Grob *hed = support_head (me);
- Real w = hed->extent (hed, X_AXIS)[dir];
+ Real w = Note_head::head_extent (hed,X_AXIS)[dir];
for (int i=0; i < heads.size (); i++)
{
- heads[i]->translate_axis (w - heads[i]->extent (heads[i], X_AXIS)[dir], X_AXIS);
+ heads[i]->translate_axis (w - Note_head::head_extent (heads[i],X_AXIS)[dir],
+ X_AXIS);
}
bool parity= true; // todo: make me settable.
Real y1 = Staff_symbol_referencer::position_f (first_head (me));
Real y2 = stem_end_position (me);
- Interval stem_y (y1,y2);
- stem_y.unite (Interval (y2,y1));
+ Interval stem_y (y1 <? y2,y2 >? y1);
+
// dy?
- Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
+ Real dy = Staff_symbol_referencer::staff_space (me) * 0.5;
if (Grob *hed = support_head (me))
{
- Interval head_height = hed->extent (hed,Y_AXIS);
+ /*
+ must not take ledgers into account.
+ */
+ Interval head_height = Note_head::head_extent (hed,Y_AXIS);
Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
y_attach = head_height.linear_combination (y_attach);
Real r=0;
if (Grob * f = first_head (me))
{
- Interval head_wid = f->extent (f,X_AXIS);
+ Interval head_wid = Note_head::head_extent(f, X_AXIS);
Real attach =
Note_head::stem_attachment_coordinate(f, X_AXIS);