Browse Source

refactor(EngravingRules/MusicSheetCalculator): shorten lyrics offset and create engraving rule for i

sschmidTU 7 years ago
parent
commit
31a68194bd

+ 9 - 1
src/MusicalScore/Graphical/EngravingRules.ts

@@ -88,6 +88,7 @@ export class EngravingRules {
     private repetitionEndingLineYLowerOffset: number;
     private repetitionEndingLineYUpperOffset: number;
     private lyricsHeight: number;
+    private lyricsYOffsetToStaffHeight: number;
     private verticalBetweenLyricsDistance: number;
     private betweenSyllabelMaximumDistance: number;
     private minimumDistanceBetweenDashes: number;
@@ -268,7 +269,8 @@ export class EngravingRules {
         this.repetitionEndingLineYUpperOffset = 0.3;
 
         // Lyrics
-        this.lyricsHeight = 2.0;
+        this.lyricsHeight = 2.0; // actually size of lyrics
+        this.lyricsYOffsetToStaffHeight = 3.0; // distance between lyrics and staff. could partly be even lower/dynamic
         this.verticalBetweenLyricsDistance = 0.5;
         this.betweenSyllabelMaximumDistance = 10.0;
         this.minimumDistanceBetweenDashes = 5.0;
@@ -811,6 +813,12 @@ export class EngravingRules {
     public set LyricsHeight(value: number) {
         this.lyricsHeight = value;
     }
+    public get LyricsYOffsetToStaffHeight(): number {
+        return this.lyricsYOffsetToStaffHeight;
+    }
+    public set LyricsYOffsetToStaffHeight(value: number) {
+        this.lyricsYOffsetToStaffHeight = value;
+    }
     public get VerticalBetweenLyricsDistance(): number {
         return this.verticalBetweenLyricsDistance;
     }

+ 2 - 1
src/MusicalScore/Graphical/MusicSheetCalculator.ts

@@ -408,7 +408,8 @@ export abstract class MusicSheetCalculator {
     protected calculateSingleStaffLineLyricsPosition(staffLine: StaffLine, lyricVersesNumber: number[]): GraphicalStaffEntry[] {
         let numberOfVerses: number = 0;
         // FIXME: There is no class SkyBottomLineCalculator -> Fix value
-        let lyricsStartYPosition: number = this.rules.StaffHeight + 6.0; // Add offset to prevent collision
+        // TODO make lyric offset dynamic (also see above)
+        let lyricsStartYPosition: number = this.rules.StaffHeight + this.rules.LyricsYOffsetToStaffHeight; // Add offset to prevent collision
         const lyricsStaffEntriesList: GraphicalStaffEntry[] = [];
         // const skyBottomLineCalculator: SkyBottomLineCalculator = new SkyBottomLineCalculator(this.rules);