source file of the GNU LilyPond music typesetter
- (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "spacing-spanner.hh"
extract_grob_set (sys, "columns", cols);
- vsize col_idx = binary_search (cols, column,
- Paper_column::less_than);
-
- if (col_idx == VPOS)
- {
- programming_error ( __FUNCTION__ + string (": Unknown column"));
- return 0;
- }
+ vsize col_idx = Paper_column::get_rank (column);
do
{
if (! shortest_playing_len.to_bool ())
{
- programming_error ("can't find a ruling note at " + Paper_column::when_mom (lc).to_string ());
+ programming_error ("cannot find a ruling note at: " + Paper_column::when_mom (lc).to_string ());
shortest_playing_len = 1;
}
Moment rwhen = Paper_column::when_mom (rc);
Moment delta_t = rwhen - lwhen;
- if (!Paper_column::is_musical (rc))
+
+ /*
+ when toying with mmrests, it is possible to have musical
+ column on the left and non-musical on the right, spanning
+ several measures.
+
+ TODO: efficiency: measure length can be cached, or stored as
+ property in paper-column.
+ */
+
+ if (Moment *measure_len = get_measure_length (lc))
{
+ delta_t = min (delta_t, *measure_len);
+
/*
- when toying with mmrests, it is possible to have musical
- column on the left and non-musical on the right, spanning
- several measures.
+ The following is an extra safety measure, such that
+ the length of a mmrest event doesn't cause havoc.
*/
-
- Moment *dt = get_measure_length (lc);
- if (dt)
- {
- delta_t = min (delta_t, *dt);
-
- /*
- The following is an extra safety measure, such that
- the length of a mmrest event doesn't cause havoc.
- */
- shortest_playing_len = min (shortest_playing_len, *dt);
- }
+ shortest_playing_len = min (shortest_playing_len, *measure_len);
}
Real dist = 0.0;
{
Spacing_options grace_opts;
grace_opts.init_from_grob (grace_spacing);
-
bool bla;
dist = grace_opts.get_duration_space (delta_t.grace_part_, &bla);
}