]> git.donarmstrong.com Git - lilypond.git/commitdiff
2002-09-05 Rune Zedeler <rune@zedeler.dk>
authorRune Zedeler <rune@lilypond.org>
Thu, 5 Sep 2002 13:46:17 +0000 (13:46 +0000)
committerRune Zedeler <rune@lilypond.org>
Thu, 5 Sep 2002 13:46:17 +0000 (13:46 +0000)
* 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.

ChangeLog
input/test/bar-number-every-fifth.ly [new file with mode: 0644]
input/test/boxed-molecule.ly
lily/bar-number-engraver.cc
ly/engraver-init.ly
scm/output-lib.scm
scm/translator-property-description.scm

index 1d459f469f9d8c787a12ade42ca99379c92a6d1b..9d901202a5a44d663674b2be2832a202ae5f8ae2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2002-09-05  Rune Zedeler  <rune@zedeler.dk>
+
+       * 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  <hanwen@cs.uu.nl>
 
        * 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 (file)
index 0000000..b025288
--- /dev/null
@@ -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 "|."
+    }
+}
+
index 7767e4f36b606688dd3dc163f7477ebdd74b21bc..a87f5e4dbd055c50de97b6bd1b404d971ee77414 100644 (file)
@@ -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
index 47bceef5bb1f57cfccc6da4a87b00a685bce8e40..ad4c81c78559de7303464c05657cf36293e9943b 100644 (file)
@@ -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 ()));
+           }
        }
     }
 
index 4bfc458c6900b7992b6738d224b9751dcec0f205..5293c26628f54513b6ae8da65e31b4dbbd5d35e0 100644 (file)
@@ -391,6 +391,7 @@ ScoreContext = \translator {
        automaticMelismata = ##t
        
        defaultBarType = #"|"
+       barNumberVisibility = #(lambda (n) (> n 1))
 
        explicitClefVisibility = #all-visible
        explicitKeySignatureVisibility = #all-visible
index e524cc32ff0c30aad80c24cae48280f56bbec2f1..881b213a518d00aaef2f5f8a5d18a6762fa8e96e 100644 (file)
 ; 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 "\""))
index 33b6448e41a320a67857339319409e587cc76cba..48b4d6eedd18318519c6686eb912a418a8863f05 100644 (file)
@@ -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