]> git.donarmstrong.com Git - lilypond.git/blobdiff - ly/music-functions-init.ly
Doc: NR Fixes mis-ordered menu section for 4.3
[lilypond.git] / ly / music-functions-init.ly
index 78a6b236c4c7861ed53b5af45b83a81cda3a8582..fea1c9b8884bee6d59a5eb9808b303b3e6d26fb4 100644 (file)
@@ -642,86 +642,56 @@ slurs, ties, and horizontal spacing are adjusted automatically.")
    (define unshrinkable-props
      '(
        ;; stems
-       Stem.thickness
+       (Stem thickness)
+
        ;; slurs
-       Slur.line-thickness
-       Slur.thickness
-       PhrasingSlur.line-thickness
-       PhrasingSlur.thickness
+       (Slur line-thickness)
+       (Slur thickness)
+       (PhrasingSlur line-thickness)
+       (PhrasingSlur thickness)
+
        ;; ties
-       Tie.line-thickness
-       Tie.thickness
-       LaissezVibrerTie.line-thickness
-       LaissezVibrerTie.thickness
-       RepeatTie.line-thickness
-       RepeatTie.thickness
+       (Tie line-thickness)
+       (Tie thickness)
+       (LaissezVibrerTie line-thickness)
+       (LaissezVibrerTie thickness)
+       (RepeatTie line-thickness)
+       (RepeatTie thickness)
        ))
 
    ;; these props ARE allowed to shrink below default size
    (define shrinkable-props
-     '(
-       ;; TODO: uncomment spacing-increment here once Issue 3987 is fixed
-       ;; override at the 'Score level
-       ;SpacingSpanner.spacing-increment
-
-       ;; Beam.beam-thickness is dealt with separately below
-
-       ;; lengths and heights
-       Beam.length-fraction
-       Stem.length-fraction
-       Stem.beamlet-default-length
-       Slur.height-limit
-       Slur.minimum-length
-       PhrasingSlur.height-limit
-       PhrasingSlur.minimum-length
-
-       ;; every Slur.details prop that's
-       ;; not a factor, penalty, ratio, or slope
-       Slur.details.region-size
-       Slur.details.free-head-distance
-       Slur.details.free-slur-distance
-       Slur.details.gap-to-staffline-inside
-       Slur.details.gap-to-staffline-outside
-       Slur.details.extra-encompass-free-distance
-       Slur.details.extra-encompass-collision-distance
-       Slur.details.close-to-edge-length
-       Slur.details.encompass-object-range-overshoot
-       Slur.details.slur-tie-extrema-min-distance
-
-       ;; every PhrasingSlur.details prop that's
-       ;; not a factor, penalty, ratio, or slope
-       PhrasingSlur.details.region-size
-       PhrasingSlur.details.free-head-distance
-       PhrasingSlur.details.free-slur-distance
-       PhrasingSlur.details.gap-to-staffline-inside
-       PhrasingSlur.details.gap-to-staffline-outside
-       PhrasingSlur.details.extra-encompass-free-distance
-       PhrasingSlur.details.extra-encompass-collision-distance
-       PhrasingSlur.details.close-to-edge-length
-       PhrasingSlur.details.encompass-object-range-overshoot
-       PhrasingSlur.details.slur-tie-extrema-min-distance
-
-       ;; every Tie.details prop that's
-       ;; not a factor, penalty, ratio, or slope
-       Tie.details.center-staff-line-clearance
-       Tie.details.tip-staff-line-clearance
-       Tie.details.note-head-gap
-       Tie.details.stem-gap
-       Tie.details.height-limit
-       Tie.details.tie-tie-collision-distance
-       Tie.details.intra-space-threshold
-       Tie.details.outer-tie-vertical-gap
-       Tie.details.multi-tie-region-size
-       Tie.details.single-tie-region-size
-       Tie.details.between-length-limit
-       ))
+     (let ((baseline-skip-props
+             (find-named-props 'baseline-skip all-grob-descriptions))
+           (word-space-props
+             (find-named-props 'word-space all-grob-descriptions)))
+       (append
+         baseline-skip-props
+         word-space-props
+         '(
+           ;; TODO: uncomment spacing-increment here once Issue 3987 is fixed
+           ;; override at the 'Score level
+           ;(SpacingSpanner spacing-increment)
+
+           ;; lengths and heights
+           (Beam length-fraction)
+           (Stem length-fraction)
+           (Stem beamlet-default-length)
+           (Stem double-stem-separation)
+           (Slur height-limit)
+           (Slur minimum-length)
+           (PhrasingSlur height-limit)
+           (PhrasingSlur minimum-length)
+
+           ;; Beam.beam-thickness is dealt with separately below
+           ))))
    #{
-     \context Voice {
+     \context Bottom {
        %% TODO: uncomment \newSpacingSection once Issue 3990 is fixed
        %\newSpacingSection
-       #(scale-fontSize mag)
-       #(scale-props unshrinkable-props mag #f)
-       #(scale-props shrinkable-props   mag #t)
+       #(scale-fontSize 'magnifyMusic mag)
+       #(scale-props    'magnifyMusic mag #f unshrinkable-props)
+       #(scale-props    'magnifyMusic mag #t shrinkable-props)
        #(scale-beam-thickness mag)
 
        #music
@@ -729,13 +699,71 @@ slurs, ties, and horizontal spacing are adjusted automatically.")
        %% TODO: uncomment \newSpacingSection once Issue 3990 is fixed
        %\newSpacingSection
        %% reverse engineer the former fontSize value instead of using \unset
-       #(revert-fontSize mag)
-       #(revert-props (append unshrinkable-props
-                              shrinkable-props
-                              (list 'Beam.beam-thickness)))
+       #(revert-fontSize 'magnifyMusic mag)
+       #(revert-props    'magnifyMusic mag (append unshrinkable-props
+                                                   shrinkable-props
+                                                   '((Beam beam-thickness))))
      }
    #})
 
+magnifyStaff =
+#(define-music-function (parser location mag) (positive?)
+   (_i "Change the size of the staff, adjusting notation size and
+horizontal spacing automatically, using @var{mag} as a size factor.")
+
+   ;; these props are NOT allowed to shrink below default size
+   (define unshrinkable-props
+     '((StaffSymbol thickness)))
+
+   ;; these props ARE allowed to shrink below default size
+   (define shrinkable-props
+     (let* ((baseline-skip-props
+              (find-named-props 'baseline-skip all-grob-descriptions))
+            (word-space-props
+              (find-named-props 'word-space all-grob-descriptions))
+            (space-alist-props
+              (find-named-props 'space-alist all-grob-descriptions)))
+       (append
+         baseline-skip-props
+         word-space-props
+         space-alist-props
+         '(
+           ;; override at the 'Score level
+           (SpacingSpanner spacing-increment)
+
+           (StaffSymbol staff-space)
+           (BarLine kern)
+           (BarLine segno-kern)
+           (BarLine hair-thickness)
+           (BarLine thick-thickness)
+           (Stem beamlet-default-length)
+           (Stem double-stem-separation)
+           ))))
+
+   #{
+     \stopStaff
+
+     %% revert settings from last time
+     %% (but only if \magnifyStaff has already been used
+     %% and the staff magnification is changing)
+     #(revert-fontSize 'magnifyStaff mag)
+     #(revert-props    'magnifyStaff mag (append unshrinkable-props
+                                                 shrinkable-props))
+
+     %% scale settings
+     %% (but only if staff magnification is changing
+     %% and does not equal 1)
+     #(scale-fontSize 'magnifyStaff mag)
+     #(scale-props    'magnifyStaff mag #f unshrinkable-props)
+     #(scale-props    'magnifyStaff mag #t shrinkable-props)
+
+     %% this might cause problems until Issue 3990 is fixed
+     \newSpacingSection
+
+     \startStaff
+     \set Staff.magnifyStaffValue = #mag
+   #})
+
 makeClusters =
 #(define-music-function (parser location arg) (ly:music?)
    (_i "Display chords in @var{arg} as clusters.")