| 
					
				 | 
			
			
				@@ -47,6 +47,9 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             throw new Error("Please pass a valid div container to OpenSheetMusicDisplay"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.autoResize === undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            options.autoResize = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.setOptions(options); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,6 +64,8 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private drawer: VexFlowMusicSheetDrawer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private graphic: GraphicalMusicSheet; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private drawingParameters: DrawingParameters; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private autoResizeEnabled: boolean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private resizeHandlerAttached: boolean; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * Load a MusicXML file 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -168,6 +173,117 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** States whether the render() function can be safely called. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public IsReadyToRender(): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.graphic !== undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** Clears what OSMD has drawn on its canvas. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public clear(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.drawer.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.reset(); // without this, resize will draw loaded sheet again 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /** Set OSMD rendering options using an IOSMDOptions object. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  Can be called during runtime. Also called by constructor. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     *  For example, setOptions({autoResize: false}) will disable autoResize even during runtime. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public setOptions(options: IOSMDOptions): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.drawingParameters = new DrawingParameters(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawingParameters) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.DrawingParametersEnum = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                (<any>DrawingParametersEnum)[options.drawingParameters.toLowerCase()]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const updateExistingBackend: boolean = this.backend !== undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.backend !== undefined || this.backend === undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (updateExistingBackend) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // TODO doesn't work yet, still need to create a new OSMD object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.drawer.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // musicSheetCalculator.clearSystemsAndMeasures() // maybe? don't have reference though 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // musicSheetCalculator.clearRecreatedObjects(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (options.backend === undefined || options.backend.toLowerCase() === "svg") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.backend = new SvgVexFlowBackend(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.backend = new CanvasVexFlowBackend(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.backend.initialize(this.container); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.canvas = this.backend.getCanvas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.innerElement = this.backend.getInnerElement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.enableOrDisableCursor(this.drawingParameters.drawCursors); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // Create the drawer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawer = new VexFlowMusicSheetDrawer(this.canvas, this.backend, this.drawingParameters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // individual drawing parameters options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.disableCursor) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.drawCursors = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.enableOrDisableCursor(this.drawingParameters.drawCursors); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // alternative to if block: this.drawingsParameters.drawCursors = options.drawCursors !== false. No if, but always sets drawingParameters. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // note that every option can be undefined, which doesn't mean the option should be set to false. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawHiddenNotes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.drawHiddenNotes = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawTitle !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.DrawTitle = options.drawTitle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // TODO these settings are duplicate in drawingParameters and EngravingRules. Maybe we only need them in EngravingRules. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // this sets the parameter in DrawingParameters, which in turn sets the parameter in EngravingRules. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // see settings below that don't call drawingParameters for the immediate approach 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawSubtitle !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.DrawSubtitle = options.drawSubtitle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawLyricist !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.DrawLyricist = options.drawLyricist; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawCredits !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.drawCredits = options.drawCredits; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawPartNames !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.DrawPartNames = options.drawPartNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.drawFingerings === false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.RenderFingerings = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.fingeringPosition !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.FingeringPosition = AbstractExpression.PlacementEnumFromString(options.fingeringPosition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.fingeringInsideStafflines !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.FingeringInsideStafflines = options.fingeringInsideStafflines; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.setWantedStemDirectionByXml !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.SetWantedStemDirectionByXml = options.setWantedStemDirectionByXml; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.defaultColorNoteHead) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.defaultColorNoteHead = options.defaultColorNoteHead; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.defaultColorStem) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.drawingParameters.defaultColorStem = options.defaultColorStem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.tupletsRatioed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.TupletsRatioed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.tupletsBracketed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.TupletsBracketed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.tripletsBracketed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            EngravingRules.Rules.TripletsBracketed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (options.autoResize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!this.resizeHandlerAttached) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                this.autoResize(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.autoResizeEnabled = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (options.autoResize === false) { // not undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.autoResizeEnabled = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // we could remove the window EventListener here, but not necessary. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * Sets the logging level for this OSMD instance. By default, this is set to `warn`. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -233,7 +349,7 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //    document.documentElement.offsetWidth 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //self.container.style.width = width + "px"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (self.graphic !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (self.IsReadyToRender()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     self.render(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -249,6 +365,19 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let rtime: number; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let timeout: number = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const delta: number = 200; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const self: OpenSheetMusicDisplay = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        function resizeStart(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!self.AutoResizeEnabled) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rtime = (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!timeout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                startCallback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                rtime = (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                timeout = window.setTimeout(resizeEnd, delta); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         function resizeEnd(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             timeout = undefined; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -260,21 +389,13 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        function resizeStart(): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            rtime = (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!timeout) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                startCallback(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                rtime = (new Date()).getTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                timeout = window.setTimeout(resizeEnd, delta); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if ((<any>window).attachEvent) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // Support IE<9 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             (<any>window).attachEvent("onresize", resizeStart); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             window.addEventListener("resize", resizeStart); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.resizeHandlerAttached = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         window.setTimeout(startCallback, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         window.setTimeout(endCallback, 1); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -304,111 +425,12 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //#region GETTER / SETTER 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public setOptions(options: IOSMDOptions): void { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.drawingParameters = new DrawingParameters(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawingParameters) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.DrawingParametersEnum = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                (<any>DrawingParametersEnum)[options.drawingParameters.toLowerCase()]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const updateExistingBackend: boolean = this.backend !== undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.backend !== undefined || this.backend === undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (updateExistingBackend) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // TODO doesn't work yet, still need to create a new OSMD object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.drawer.clear(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // musicSheetCalculator.clearSystemsAndMeasures() // maybe? don't have reference though 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // musicSheetCalculator.clearRecreatedObjects(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (options.backend === undefined || options.backend.toLowerCase() === "svg") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.backend = new SvgVexFlowBackend(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.backend = new CanvasVexFlowBackend(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.backend.initialize(this.container); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.canvas = this.backend.getCanvas(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.innerElement = this.backend.getInnerElement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.enableOrDisableCursor(this.drawingParameters.drawCursors); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // Create the drawer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawer = new VexFlowMusicSheetDrawer(this.canvas, this.backend, this.drawingParameters); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // individual drawing parameters options 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.disableCursor) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.drawCursors = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.enableOrDisableCursor(this.drawingParameters.drawCursors); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // alternative to if block: this.drawingsParameters.drawCursors = options.drawCursors !== false. No if, but always sets drawingParameters. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // note that every option can be undefined, which doesn't mean the option should be set to false. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawHiddenNotes) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.drawHiddenNotes = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawTitle !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.DrawTitle = options.drawTitle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // TODO these settings are duplicate in drawingParameters and EngravingRules. Maybe we only need them in EngravingRules. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // this sets the parameter in DrawingParameters, which in turn sets the parameter in EngravingRules. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // see tuplets settings below for the immediate approach 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawSubtitle !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.DrawSubtitle = options.drawSubtitle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawLyricist !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.DrawLyricist = options.drawLyricist; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawCredits !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.drawCredits = options.drawCredits; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawPartNames !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.DrawPartNames = options.drawPartNames; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.drawFingerings === false) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.RenderFingerings = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.fingeringPosition !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.FingeringPosition = AbstractExpression.PlacementEnumFromString(options.fingeringPosition); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.fingeringInsideStafflines !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.FingeringInsideStafflines = options.fingeringInsideStafflines; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.setWantedStemDirectionByXml !== undefined) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.SetWantedStemDirectionByXml = options.setWantedStemDirectionByXml; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.defaultColorNoteHead) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.defaultColorNoteHead = options.defaultColorNoteHead; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.defaultColorStem) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.drawingParameters.defaultColorStem = options.defaultColorStem; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.tupletsRatioed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.TupletsRatioed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.tupletsBracketed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.TupletsBracketed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.tripletsBracketed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            EngravingRules.Rules.TripletsBracketed = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (options.autoResize) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.autoResize(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else if (options.autoResize === false) { // not undefined 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            this.handleResize( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    // empty 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public set DrawSkyLine(value: boolean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (this.drawer) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.drawer.skyLineVisible = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.render(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public get DrawSkyLine(): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.drawer.skyLineVisible; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -419,7 +441,6 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             this.render(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public get DrawBottomLine(): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.drawer.bottomLineVisible; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -428,9 +449,16 @@ export class OpenSheetMusicDisplay { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.drawer.drawableBoundingBoxElement = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         this.render(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public get DrawBoundingBox(): string { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return this.drawer.drawableBoundingBoxElement; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public get AutoResizeEnabled(): boolean { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return this.autoResizeEnabled; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public set AutoResizeEnabled(value: boolean) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.autoResizeEnabled = value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //#endregion 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |