فهرست منبع

feat(Options): add drawingparameter "compacttight" for reduced margins and tighter spacing

used with osmd.setOptions({drawingParameters: "compacttight"})
sschmid 5 سال پیش
والد
کامیت
085ff1a91b
2فایلهای تغییر یافته به همراه25 افزوده شده و 0 حذف شده
  1. 14 0
      src/MusicalScore/Graphical/DrawingParameters.ts
  2. 11 0
      src/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts

+ 14 - 0
src/MusicalScore/Graphical/DrawingParameters.ts

@@ -10,6 +10,7 @@ export enum ColoringModes {
 export enum DrawingParametersEnum {
     allon = "allon",
     compact = "compact",
+    compacttight = "compacttight",
     default = "default",
     leadsheet = "leadsheet",
     preview = "preview",
@@ -61,6 +62,9 @@ export class DrawingParameters {
             case DrawingParametersEnum.compact:
                 this.setForCompactMode();
                 break;
+            case DrawingParametersEnum.compacttight:
+                this.setForCompactTightMode();
+                break;
             case DrawingParametersEnum.default:
             default:
                 this.setForDefault();
@@ -117,6 +121,16 @@ export class DrawingParameters {
         this.drawHiddenNotes = false;
     }
 
+    public setForCompactTightMode(): void {
+        this.rules.CompactMode = true;
+        this.DrawCredits = false;
+        this.DrawPartNames = false;
+        this.drawHiddenNotes = false;
+        // this.BetweenStaffDistance = 2.5 // etc needs to be set in OSMD.rules
+        // this.StaffDistance = 3.5
+        // this.MinimumDistanceBetweenSystems = 1
+    }
+
     public setForLeadsheet(): void {
         this.drawHighlights = false;
         this.drawErrors = false;

+ 11 - 0
src/OpenSheetMusicDisplay/OpenSheetMusicDisplay.ts

@@ -335,6 +335,17 @@ export class OpenSheetMusicDisplay {
         if (options.drawingParameters) {
             this.drawingParameters.DrawingParametersEnum =
                 (<any>DrawingParametersEnum)[options.drawingParameters.toLowerCase()];
+            if (this.drawingParameters.DrawingParametersEnum === DrawingParametersEnum.compacttight) {
+                // tight rendering mode, lower margins and safety distances between systems, staffs etc. may cause overlap.
+                // these options can afterwards be finetuned by setting osmd.rules.BetweenStaffDistance for example
+                this.rules.BetweenStaffDistance = 2.5;
+                this.rules.StaffDistance = 3.5;
+                this.rules.MinimumDistanceBetweenSystems = 1;
+                // this.rules.PageTopMargin = 0.0; // see this.rules.PageTopMarginNarrow used in compact mode
+                this.rules.PageBottomMargin = 1.0;
+                this.rules.PageLeftMargin = 2.0;
+                this.rules.PageRightMargin = 2.0;
+            }
         }
 
         const backendNotInitialized: boolean = !this.drawer || !this.drawer.Backends || this.drawer.Backends.length < 1;