]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/basic-properties.scm
patch::: 1.3.136.jcn3
[lilypond.git] / scm / basic-properties.scm
index 469cc1e3fea762aa7a3c828f15bc9f389731fd58..9c809fb6d3b220676522ae1e0a047d74e29afa3a 100644 (file)
@@ -2,6 +2,7 @@
 
 ;; See documentation of Item::visibility_lambda_
 (define (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t)))
+(define (end-of-line-visible d) (if (= d -1) '(#f . #f) '(#t . #t)))
 (define (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f)))
 (define (all-visible d) '(#f . #f))
 (define (all-invisible d) '(#t . #t))
 
 (define mark-visibility end-of-line-invisible)
 
-; ugh: should calculate from beam-thickness.
-; result in staff-space
 
-;beam_thickness = 0.52 * (\staffspace - \stafflinethickness);
-;interbeam = (2.0 * \staffspace + \stafflinethickness - \beam_thickness) / 2.0;
-;interbeam4 = (3.0 * \staffspace - \beam_thickness) / 3.0;
 
-
-(define (default-beam-space-function multiplicity)
-  (if (<= multiplicity 3) 0.816 0.844)
-  )
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Bar lines.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;
-; width in staff space.
+; How should a  bar line behave at a break? 
 ;
-(define (default-beam-flag-width-function type)
-  (cond
-   ((eq? type 1) 1.98)
-   ((eq? type 1) 1.65)
-   (else 1.32)
-   ))
-
-
-(define basic-beam-properties
-  `(
-    (interfaces . (beam-interface))
-    (molecule-callback . ,Beam::brew_molecule)
-    (beam-thickness . 0.42) ; staff-space, should use stafflinethick?
-    (before-line-breaking-callback . ,Beam::before_line_breaking)
-    (after-line-breaking-callback . ,Beam::after_line_breaking)
-    (default-neutral-direction . 1)
-    (outer-stem-length-limit . 0.2)
-    (slope-limit . 0.2)
-    (beam-flag-width-function . ,default-beam-flag-width-function)
-    (beam-space-function . ,default-beam-space-function)
-    (damping . 1)
-    (name . "beam")            
-    )
-  )
+(define (default-break-barline glyph dir)
+   (let ((result (assoc glyph 
+                       '((":|:" . (":|" . "|:"))
+                         ("|" . ("|" . ""))
+                         ("|s" . (nil . "|"))
+                         ("|:" . ("|" . "|:"))
+                         ("|." . ("|." . nil))
+                         (".|" . (nil . ".|"))
+                         (":|" . (":|" . nil))
+                         ("||" . ("||" . nil))
+                         (".|." . (".|." . nil))
+                         ("" . ("" . ""))
+                         ("empty" . ("nil" . nil))
+                         ("brace" . (nil . "brace"))
+                         ("bracket" . (nil . "bracket"))  
+                         )
+                       )))
+
+     (if (equal? result #f)
+        (ly-warn (string-append "Unknown bar glyph: `" glyph "'"))
+        (index-cell (cdr result) dir))
+     )
+   )
+     
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;  Prefatory matter: break align item.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Spacing constants 
+;;
+;; rules for this spacing are much more complicated than this. 
+;; See [Wanske] page 126 -- 134, [Ross] pg 143 -- 147
+;;
+
+;; documentme: difference between extra-space and minimum-space
+
+;; documentme: difference between extra-space and minimum-space
+
+;; (Measured in staff space)
+(define default-break-align-space-alist
+ '(
+   ((Staff_bar Custos) . (minimum-space 2.0))
+   ((Custos begin-of-note) . (minimum-space 0.0))
+   ((none Instrument_name) . (extra-space 1.0))
+   ((Instrument_name Left_edge_item) . (extra-space 1.0))
+   ((Left_edge_item Clef_item) . (extra-space 1.0))
+   ((Left_edge_item Key_item) . (extra-space 0.0))   
+   ((Left_edge_item begin-of-note) . (extra-space 1.0))
+   ((none Left_edge_item) . (extra-space 0.0))
+   ((Left_edge_item Staff_bar) . (extra-space 0.0))
+;   ((none Left_edge_item) . (extra-space -15.0))
+;   ((none Left_edge_item) . (extra-space -15.0))
+   ((none Clef_item) . (minimum-space 1.0))
+   ((none Staff_bar) . (minimum-space 0.0))
+   ((none Clef_item) . (minimum-space 1.0))
+   ((none Key_item) . (minimum-space 0.5))
+   ((none Time_signature) . (extra-space 0.0))
+   ((none begin-of-note) . (minimum-space 1.5))
+   ((Clef_item Key_item) . (minimum-space 4.0))
+   ((Key_item Time_signature) . (extra-space 1.0))
+   ((Clef_item  Time_signature) . (minimum-space 3.5))
+   ((Staff_bar Clef_item) .   (minimum-space 1.0))
+   ((Clef_item  Staff_bar) .  (minimum-space 3.7))
+   ((Time_signature Staff_bar) .  (minimum-space 2.0))
+   ((Key_item  Staff_bar) .  (extra-space 1.0))
+   ((Staff_bar Time_signature) . (minimum-space 1.5)) 
+   ((Time_signature begin-of-note) . (extra-space 2.0)) 
+   ((Key_item begin-of-note) . (extra-space 2.5))
+   ((Staff_bar begin-of-note) . (extra-space 1.0))
+   ((Clef_item begin-of-note) . (minimum-space 5.0))
+   ((Left_edge_item Breathing_sign) . (minimum-space 0.0))   
+   ((none Breathing_sign) . (minimum-space 0.0))
+   ((Breathing_sign Key_item) . (minimum-space 1.5))
+   ((Breathing_sign begin-of-note) . (minimum-space 1.0))
+   ((Breathing_sign Staff_bar) . (minimum-space 1.5))
+   ((Breathing_sign Clef_item) . (minimum-space 2.0))
+   )
+)