lilypond-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]