From 6bfeefe1e0f84b39039bf893195eebeca08681c1 Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Fri, 22 May 2009 23:40:25 +0100 Subject: [PATCH] Correctly aligned instrument names. --- lily/system-start-delimiter-engraver.cc | 10 ---------- scm/define-grobs.scm | 7 ++++++- scm/output-lib.scm | 22 ++++++++++++++++++++++ 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index ea4fcf3..fa8ea2d 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -176,7 +176,6 @@ protected: Bracket_nesting_group *nesting_; DECLARE_ACKNOWLEDGER (system_start_delimiter); - DECLARE_ACKNOWLEDGER (system_start_text); DECLARE_ACKNOWLEDGER (staff_symbol); void process_music (); @@ -229,14 +228,6 @@ System_start_delimiter_engraver::acknowledge_staff_symbol (Grob_info inf) } } - - -void -System_start_delimiter_engraver::acknowledge_system_start_text (Grob_info inf) -{ - nesting_->add_support (inf.grob ()); -} - void System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info inf) { @@ -247,7 +238,6 @@ System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info i ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol); ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter); -ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_text); ADD_TRANSLATOR (System_start_delimiter_engraver, /* doc */ diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 58a6440..fd022f1 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -844,7 +844,12 @@ . ( (padding . 0.3) (stencil . ,ly:system-start-text::print) - (X-offset . ,ly:side-position-interface::x-aligned-side) + (X-offset . ,(ly:make-simple-closure + `(,- + ,(ly:make-simple-closure + (list ly:side-position-interface::x-aligned-side)) + ,(ly:make-simple-closure + (list instrument-name::calc-combined-delimiters-offset))))) (direction . ,LEFT) (self-alignment-Y . ,CENTER) (self-alignment-X . ,CENTER) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index fdd5253..17cae6b 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -737,3 +737,25 @@ centered, X==1 is at the right, X == -1 is at the left." note-head-location))) 0.0)) 0.0)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; system start texts + +(define (instrument-name::calc-combined-delimiters-offset grob) + (let* ((system (ly:grob-system grob)) + (elements (ly:grob-object system 'elements)) + (common (ly:grob-common-refpoint-of-array system elements X)) + (total-ext '(+inf.0 . -inf.0))) + + (let loop ((l (ly:grob-array-length elements))) + (if (> l 0) + (let* ((elt (ly:grob-array-ref elements (1- l))) + (ifs (ly:grob-interfaces elt))) + + (if (memq 'system-start-delimiter-interface ifs) + (let ((dims (ly:grob-extent elt common X))) + (if (interval-sane? dims) + (set! total-ext (interval-union total-ext dims))))) + (loop (1- l))))) + + (interval-length total-ext))) \ No newline at end of file -- 1.6.0.4