source file of the GNU LilyPond music typesetter
- (c) 1996--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1996--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "input-smob.hh"
Line_of_score::typeset_grob (Grob * elem_p)
{
elem_p->pscore_l_ = pscore_l_;
- Pointer_group_interface::add_element (this, ly_symbol2scm ("all-elements"),elem_p);
+ Pointer_group_interface::add_grob (this, ly_symbol2scm ("all-elements"),elem_p);
scm_gc_unprotect_object (elem_p->self_scm ());
}
}
while (1);
+
+#if 0
Real rx = right->relative_coordinate (right->get_parent (X_AXIS), X_AXIS);
Real lx = left->relative_coordinate (left->get_parent (X_AXIS), X_AXIS);
+ /*
+ divide space equally over loose columns.
+ */
int j = 1;
loose = col;
while (1)
j ++;
loose = dynamic_cast<Item*> (unsmob_grob (ly_cdr (between)));
}
+#else
+ /*
+ We divide the remaining space of the column over the left and
+ right side. At the moment, we
+
+ */
+ Grob * common = right->common_refpoint (left, X_AXIS);
+ Real rx = right->extent(common, X_AXIS)[LEFT];
+ Real lx = left->extent(common, X_AXIS)[RIGHT];
+ Real total_dx = rx - lx;
+ Interval cval =col->extent (col, X_AXIS);
+
+ /*
+
+ We put it in the middle. This is not an ideal solution -- the
+ break alignment code inserts a fixed space before the clef
+ (about 1 SS), while the space following the clef is
+ flexible. In tight situations, the clef will almost be on top
+ of the following note.
+
+ */
+ Real dx = rx-lx - cval.length ();
+ if (total_dx < 2* cval.length ())
+ {
+ /*
+ todo: this is discontinuous. I'm too tired to
+ invent a sliding mechanism. Duh.
+
+ TODO.
+ */
+ dx *= 0.25;
+ }
+ else
+ dx *= 0.5;
+
+ col->line_l_ = which;
+ col->translate_axis (lx + dx - cval[LEFT], X_AXIS);
+#endif
}
}
Line_of_score::column_l_arr ()const
{
Link_array<Grob> acs
- = Pointer_group_interface__extract_elements (this, (Grob*) 0, "columns");
+ = Pointer_group_interface__extract_grobs (this, (Grob*) 0, "columns");
bool bfound = false;
for (int i= acs.size (); i -- ;)
{