From: Rune Zedeler Date: Thu, 5 Sep 2002 13:46:17 +0000 (+0000) Subject: 2002-09-05 Rune Zedeler X-Git-Tag: release/1.6.2~5 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f73cfe446eb432abd3018a065692676a23acb546;p=lilypond.git 2002-09-05 Rune Zedeler * scm/output-lib.scm (make-molecule-boxer): Fixed and moved from input/test/boxed-molecule.ly * input/test/boxed-molecule.ly: Fixed to use default make-molecule-boxer * input/test/bar-number-every-fifth.ly: Added * lily/bar-number-engraver.cc: Add property barNumberVisibility and use it to decide which BarNumbers to suicide. --- diff --git a/ChangeLog b/ChangeLog index 1d459f469f..9d901202a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2002-09-05 Rune Zedeler + + * scm/output-lib.scm (make-molecule-boxer): Fixed and moved from + input/test/boxed-molecule.ly + + * input/test/boxed-molecule.ly: Fixed to use default + make-molecule-boxer + + * input/test/bar-number-every-fifth.ly: Added + + * lily/bar-number-engraver.cc: Add property barNumberVisibility + and use it to decide which BarNumbers to suicide. + 2002-09-05 Han-Wen Nienhuys * input/test/poly-metric.ly: new file. diff --git a/input/test/bar-number-every-fifth.ly b/input/test/bar-number-every-fifth.ly new file mode 100644 index 0000000000..b025288075 --- /dev/null +++ b/input/test/bar-number-every-fifth.ly @@ -0,0 +1,12 @@ +\score { + \context Staff \notes \transpose c'' { + \property Score.BarNumber \override #'break-visibility = #end-of-line-invisible + \property Score.barNumberVisibility = #(lambda(n) (= 0 (modulo n 5))) + \property Score.BarNumber \override #'molecule-callback = + #(make-molecule-boxer 0.1 0.25 0.25 Text_item::brew_molecule) + \property Score.BarNumber \override #'font-relative-size = #1 + + \repeat unfold 11 { c d e f g a b c' } \bar "|." + } +} + diff --git a/input/test/boxed-molecule.ly b/input/test/boxed-molecule.ly index 7767e4f36b..a87f5e4dbd 100644 --- a/input/test/boxed-molecule.ly +++ b/input/test/boxed-molecule.ly @@ -1,53 +1,27 @@ -\version "1.5.68" +\version "1.6.1" \header { texidoc = "overriding the molecule callback can also be used to draw a box around arbitrary grobs. - TODO: check whether the corners are really correct. - TODO: circled molecules. " } -#(define (make-molecule-boxer callback) - (define (molecule-boxer grob) - (let* - ( - (mol (callback grob)) - (box-padding 0.1) - (x-ext (widen-interval (ly-get-molecule-extent mol 0) box-padding)) - (y-ext (widen-interval (ly-get-molecule-extent mol 1) box-padding)) - (rule-thick 0.1) - (x-rule (box-molecule (widen-interval x-ext rule-thick) - (cons 0 rule-thick))) - (y-rule (box-molecule (cons 0 rule-thick) y-ext)) - ) - - (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule (* 0.5 box-padding))) - (set! mol (ly-combine-molecule-at-edge mol 0 -1 y-rule (* 0.5 box-padding))) - (set! mol (ly-combine-molecule-at-edge mol 1 1 x-rule 0.0)) - (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0.0)) - - mol - )) - molecule-boxer - ) - \score { \notes \relative c'' { \property Voice.TextScript \override #'molecule-callback = - #(make-molecule-boxer Text_item::brew_molecule) + #(make-molecule-boxer 0.1 0.3 0.2 Text_item::brew_molecule) c'4^"foo" \property Voice.Stem \override #'molecule-callback = - #(make-molecule-boxer Stem::brew_molecule) + #(make-molecule-boxer 0.05 0.25 0.25 Stem::brew_molecule) \property Score.RehearsalMark \override #'molecule-callback = - #(make-molecule-boxer Text_item::brew_molecule) + #(make-molecule-boxer 0.15 0.3 0.3 Text_item::brew_molecule) c8 \property Voice.Stem \revert #'molecule-callback diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 47bceef5bb..ad4c81c785 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -51,19 +51,20 @@ Bar_number_engraver::process_music () if (gh_string_p (wb)) { - SCM bn = get_property ("currentBarNumber"); SCM smp = get_property ("measurePosition"); - int ibn = gh_number_p (bn) ? gh_scm2int(bn) : 1; Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0); - if (mp.main_part_ == Rational (0) - && ibn != 1) + if (mp.main_part_ == Rational (0)) { - create_items (); - - // guh. - text_->set_grob_property ("text", - scm_makfrom0str (to_string (gh_scm2int (bn)).to_str0 ())); + SCM bn = get_property ("currentBarNumber"); + SCM proc = get_property ("barNumberVisibility"); + if (to_boolean(gh_call1(proc, bn))) + { + create_items (); + // guh. + text_->set_grob_property + ("text", scm_makfrom0str (to_string (gh_scm2int (bn)).to_str0 ())); + } } } diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 4bfc458c69..5293c26628 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -391,6 +391,7 @@ ScoreContext = \translator { automaticMelismata = ##t defaultBarType = #"|" + barNumberVisibility = #(lambda (n) (> n 1)) explicitClefVisibility = #all-visible explicitKeySignatureVisibility = #all-visible diff --git a/scm/output-lib.scm b/scm/output-lib.scm index e524cc32ff..881b213a51 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -70,6 +70,30 @@ ; end of tablature functions +(define (make-molecule-boxer line-thick x-padding y-padding callback) + "Makes a routine that adds a box around the grob parsed as argument" + (define (molecule-boxer grob) + (let* + ( + (mol (callback grob)) + (x-ext (widen-interval (ly-get-molecule-extent mol 0) x-padding)) + (y-ext (widen-interval (ly-get-molecule-extent mol 1) y-padding)) + (x-rule (box-molecule (widen-interval x-ext line-thick) + (cons 0 line-thick))) + (y-rule (box-molecule (cons 0 line-thick) y-ext)) + ) + + (set! mol (ly-combine-molecule-at-edge mol 0 1 y-rule x-padding)) + (set! mol (ly-combine-molecule-at-edge mol 0 -1 y-rule x-padding)) + (set! mol (ly-combine-molecule-at-edge mol 1 1 x-rule 0)) + (set! mol (ly-combine-molecule-at-edge mol 1 -1 x-rule 0)) + + mol + )) + molecule-boxer + ) + + (define (arg->string arg) (cond ((number? arg) (inexact->string arg 10)) ((string? arg) (string-append "\"" arg "\"")) diff --git a/scm/translator-property-description.scm b/scm/translator-property-description.scm index 33b6448e41..48b4d6eedd 100644 --- a/scm/translator-property-description.scm +++ b/scm/translator-property-description.scm @@ -127,6 +127,7 @@ using barchecks in polyphonic music.") still counted. Bar generation will resume according to that count if this property is set to zero. ") +(translator-property-description 'barNumberVisibility procedure? "Procedure that takes an int and returns whether the corresponding bar number should be printed") (translator-property-description 'beamMelismaBusy boolean? "Signal if a beam is set when automaticMelismata is set") (translator-property-description 'beatLength moment? "The length of one beat in this time signature.") (translator-property-description 'breakAlignOrder list? "Defines the order in which