[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: \breakDynamicSpan breaks with \break ("bounds of spanner are invalid
From: |
Reinhold Kainhofer |
Subject: |
Re: \breakDynamicSpan breaks with \break ("bounds of spanner are invalid") |
Date: |
Fri, 24 Jun 2011 22:06:04 +0200 |
User-agent: |
KMail/1.13.6 (Linux/2.6.38-10-generic; KDE/4.6.4; i686; ; ) |
I'm currently trying to understand what exactly is the cause of bugs #1259 and
#1433:
http://code.google.com/p/lilypond/issues/detail?id=1259
http://code.google.com/p/lilypond/issues/detail?id=1433
Actually, both are symptoms of the same problem: Both set early_end_ in the
dynamic-align-engraver.cc, so that the DynamicLineSpanner is bounded after the
current/next moment. This works fine as long as the whole spanner is in one
line. As soon as there is a line break during the spanner's (pre-truncating)
lifetime, the error message appears.
It actually indicates that the DynamicTextSpanner (or the Hairpin) is longer
than its parent DynamicLineSpanner.
These error checks are in Spanner::do_break_processing, which is only called
for breaks, so the error is printed only at line breaks.
What do you think would be the correct solution?
I notice that when I simply comment out in lily/spanner.cc the lines:
-) continue; (line 120)
-) span->suicide(); (line 133)
then the output looks just as expected (of course, I get the warnings/errors).
However, I suppose these checks are there for a reason, so simply removing
them would probably cause other problems...
Or would the correct solution be to set the bound not only for the line
spanner when truncating it in
Dynamic_align_engraver::stop_translation_timestep, but also to set the same
bound for all child spanners?
I have tried this code instead of line_set_bound(d,bound), but that does not
change a thing:
line_->set_bound (d, bound);
set<Spanner *>::iterator it;
for ( it=running_.begin() ; it != running_.end(); it++ )
{
(*it)->set_bound (d, bound);
}
line_->set_bound (d, bound);
Is this the completely wrong approach or why are the child spanners still not
contained in the parent DynamicLineSpanner?
Any idea how to properly fix the problem?
Thanks,
Reinhold
Am Donnerstag, 2. Dezember 2010, 19:17:10 schrieb Reinhold Kainhofer:
> The regtest input/regression/dynamics-alignment-breaker.ly for
> \breakDynamicSpan works fine, but as soon as there are line breaks during a
> dynamic spanner, it breaks with error messages:
>
> Programmierfehler: Spanner `Hairpin' is not fully contained in parent
> spanner. Ignoring orphaned part
> Programmierfehler: bounds of spanner are invalid
--
------------------------------------------------------------------
Reinhold Kainhofer, address@hidden, http://reinhold.kainhofer.com/
* Financial & Actuarial Math., Vienna Univ. of Technology, Austria
* http://www.fam.tuwien.ac.at/, DVR: 0005886
* LilyPond, Music typesetting, http://www.lilypond.org
- Re: \breakDynamicSpan breaks with \break ("bounds of spanner are invalid"),
Reinhold Kainhofer <=