From: Han-Wen Nienhuys Date: Wed, 4 Feb 2004 01:59:28 +0000 (+0000) Subject: * lily/spacing-engraver.cc (finalize): robustifications. X-Git-Tag: release/2.1.23~111 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=42392675026a0d14bda19d0a279a6762e4e84cf4;p=lilypond.git * lily/spacing-engraver.cc (finalize): robustifications. * scm/part-combiner.scm: rewrite. --- diff --git a/ChangeLog b/ChangeLog index 24b24a023e..c26e637747 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-02-04 Han-Wen Nienhuys + * lily/spacing-engraver.cc (finalize): robustifications. + * input/regression/new-part-combine-solo-global.ly: new file. * scm/part-combiner.scm: rewrite. diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 0997081c8e..dfc19dae20 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -66,10 +66,7 @@ void Axis_group_engraver::finalize () { if (!staffline_) - { - programming_error ("Huh? This context never lived?"); - return ; - } + return ; String type = get_daddy_grav ()->context_name (); SCM dims = get_property ("verticalExtent"); diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index f5b909cefe..fe2d011a5a 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -83,6 +83,9 @@ Separating_line_group_engraver::process_music () void Separating_line_group_engraver::finalize () { + if (!sep_span_) + return ; + SCM ccol = get_property ("currentCommandColumn"); Grob *column = unsmob_grob (ccol); diff --git a/lily/slur.cc b/lily/slur.cc index 4f763205d5..8d69ddb2c2 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -531,7 +531,7 @@ Slur::height (SCM smob, SCM ax) SCM mol = me->get_uncached_molecule (); Interval ext; if (Molecule * m = unsmob_molecule (mol)) - ext = m->extent= (a); + ext = m->extent (a); return ly_interval2scm (ext); } diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index 5e1f6371b5..a5c42eaf2a 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -83,13 +83,18 @@ Spacing_engraver::process_music () announce_grob(spacing_, SCM_EOL); } } + void Spacing_engraver::finalize () { - Grob * p = unsmob_grob (get_property ("currentCommandColumn")); - spacing_->set_bound (RIGHT, p); - typeset_grob (spacing_); - spacing_ =0; + if (spacing_) + { + Grob * p = unsmob_grob (get_property ("currentCommandColumn")); + + spacing_->set_bound (RIGHT, p); + typeset_grob (spacing_); + spacing_ =0; + } } void diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index bdefdd9cdb..8d5e1911d1 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -56,8 +56,11 @@ Staff_symbol_engraver::process_music () void Staff_symbol_engraver::finalize () { - span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); - typeset_grob (span_); + if (span_) + { + span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); + typeset_grob (span_); + } span_ =0; } diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index f5865c343c..10bab1bb73 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -82,8 +82,11 @@ System_start_delimiter_engraver::process_music () void System_start_delimiter_engraver::finalize () { - delim_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); - typeset_grob (delim_); + if (delim_) + { + delim_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); + typeset_grob (delim_); + } } ENTER_DESCRIPTION(System_start_delimiter_engraver, diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index e8929f23fd..51a516db0b 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -37,19 +37,21 @@ Vertical_align_engraver::process_music () { valign_ =make_spanner ("VerticalAlignment"); valign_->set_bound (LEFT,unsmob_grob (get_property ("currentCommandColumn"))); - announce_grob(valign_ , SCM_EOL); + announce_grob (valign_ , SCM_EOL); } } void Vertical_align_engraver::finalize () { - valign_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); - typeset_grob (valign_); - valign_ =0; + if (valign_) + { + valign_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); + typeset_grob (valign_); + valign_ =0; + } } - bool Vertical_align_engraver::qualifies_b (Grob_info i) const { diff --git a/ly/declarations-init.ly b/ly/declarations-init.ly index 3007e61932..a321fddf3a 100644 --- a/ly/declarations-init.ly +++ b/ly/declarations-init.ly @@ -120,6 +120,7 @@ partCombineListener = \paper { \type "Recording_group_engraver" recordEventSequence = #notice-the-events-for-pc } + \translator { \ScoreContext skipTypesetting = ##t } } #(set-part-combine-listener partCombineListener) diff --git a/scm/part-combiner.scm b/scm/part-combiner.scm index 44da6ab139..2fa2d51d76 100644 --- a/scm/part-combiner.scm +++ b/scm/part-combiner.scm @@ -258,7 +258,7 @@ Voice-state objects (let* - ((pc-debug #t) + ((pc-debug #f) (chord-threshold 8) (voice-state-vec1 (make-voice-states evl1)) (voice-state-vec2 (make-voice-states evl2)) @@ -408,7 +408,6 @@ Only set if not set previously. ((notes1 (note-events vs1)) (notes2 (note-events vs2)) ) - (cond ((and (= 1 (length notes1)) @@ -422,8 +421,10 @@ Only set if not set previously. (= 0 (length notes2))) (set! (configuration now-state) 'unisilence))) - (analyse-a2 (1+ ri)) - ))))) + )) + (analyse-a2 (1+ ri)) + + ))) (define (analyse-solo12 ri) @@ -441,8 +442,8 @@ Only set if not set previously. (define (put-range x a b) (do ((i a (1+ i))) - ((> i b)) - (set! (configuration (vector-ref result i) x)) + ((> i b) b) + (set! (configuration (vector-ref result i)) x) )) (define (put x) (set! (configuration (vector-ref result ri)) x)) @@ -515,7 +516,7 @@ Only set if not set previously. (analyse-spanner-states voice-state-vec1) (analyse-spanner-states voice-state-vec2) - (if #t + (if #f (begin (display voice-state-vec1) (display "***\n") @@ -526,8 +527,8 @@ Only set if not set previously. )) (analyse-time-step 0) - (display result) (analyse-a2 0) +; (display result) (analyse-solo12 0) ; (if pc-debug (display result))