Bladeren bron

feat(Options): able to set ledger line width and style (color) in EngravingRules.

sschmid 5 jaren geleden
bovenliggende
commit
f4c2fc306d

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

@@ -157,6 +157,7 @@ export class EngravingRules {
     private continuousTempoTextHeight: number;
     private staffLineWidth: number;
     private ledgerLineWidth: number;
+    private ledgerLineStrokeStyle: string;
     private wedgeLineWidth: number;
     private tupletLineWidth: number;
     private lyricUnderscoreLineWidth: number;
@@ -403,7 +404,8 @@ export class EngravingRules {
 
         // Line Widths
         this.staffLineWidth = 0.12;
-        this.ledgerLineWidth = 0.12;
+        this.ledgerLineWidth = undefined; // if not undefined, the vexflow default will be overwritten
+        this.ledgerLineStrokeStyle = undefined; // if not undefined, the vexflow default will be overwritten
         this.wedgeLineWidth = 0.12;
         this.tupletLineWidth = 0.12;
         this.lyricUnderscoreLineWidth = 0.12;
@@ -1279,6 +1281,12 @@ export class EngravingRules {
     public set LedgerLineWidth(value: number) {
         this.ledgerLineWidth = value;
     }
+    public get LedgerLineStrokeStyle(): string {
+        return this.ledgerLineStrokeStyle;
+    }
+    public set LedgerLineStrokeStyle(value: string) {
+        this.ledgerLineStrokeStyle = value;
+    }
     public get WedgeLineWidth(): number {
         return this.wedgeLineWidth;
     }

+ 11 - 0
src/MusicalScore/Graphical/VexFlow/VexFlowConverter.ts

@@ -282,6 +282,17 @@ export class VexFlowConverter {
         } else {
             vfnote = new Vex.Flow.StaveNote(vfnoteStruct);
         }
+        if (rules.LedgerLineWidth || rules.LedgerLineStrokeStyle) {
+            if (!((vfnote as any).ledgerLineStyle)) {
+                (vfnote as any).ledgerLineStyle = {};
+            }
+            if (rules.LedgerLineWidth) {
+                (vfnote as any).ledgerLineStyle.lineWidth = rules.LedgerLineWidth;
+            }
+            if (rules.LedgerLineStrokeStyle) {
+                (vfnote as any).ledgerLineStyle.strokeStyle = rules.LedgerLineStrokeStyle;
+            }
+        }
 
         if (rules.ColoringEnabled) {
             const defaultColorStem: string = rules.DefaultColorStem;