static void PlatformInit() { RenderEngines["svg"] = () => new CssFontSvgCanvas(); RenderEngines["default"] = () => new CssFontSvgCanvas(); RenderEngines["html5"] = () => new Platform.JavaScript.Html5Canvas(); RegisterJQueryPlugin(); Script.Write("untyped __js__(\"Math.log2 = Math.log2 || function(x) { return Math.log(x) * Math.LOG2E; };\");"); // try to build the find the alphaTab script url in case we are not in the webworker already if (Lib.Global.document) { Script.Write("untyped __js__(\"window.AudioContext = window.AudioContext || window.webkitAudioContext;\");"); var document = Browser.Document; /** * VB Loader For IE * This code is based on the code of * http://nagoon97.com/reading-binary-files-using-ajax/ * Copyright (c) 2008 Andy G.P. Na <*****@*****.**> * The source code is freely distributable under the terms of an MIT-style license. */ var vbAjaxLoader = new StringBuilder(); vbAjaxLoader.AppendLine("Function VbAjaxLoader(method, fileName)"); vbAjaxLoader.AppendLine(" Dim xhr"); vbAjaxLoader.AppendLine(" Set xhr = CreateObject(\"Microsoft.XMLHTTP\")"); vbAjaxLoader.AppendLine(" xhr.Open method, fileName, False"); vbAjaxLoader.AppendLine(" xhr.setRequestHeader \"Accept-Charset\", \"x-user-defined\""); vbAjaxLoader.AppendLine(" xhr.send"); vbAjaxLoader.AppendLine(" Dim byteArray()"); vbAjaxLoader.AppendLine(" if xhr.Status = 200 Then"); vbAjaxLoader.AppendLine(" Dim byteString"); vbAjaxLoader.AppendLine(" Dim i"); vbAjaxLoader.AppendLine(" byteString=xhr.responseBody"); vbAjaxLoader.AppendLine(" ReDim byteArray(LenB(byteString))"); vbAjaxLoader.AppendLine(" For i = 1 To LenB(byteString)"); vbAjaxLoader.AppendLine(" byteArray(i-1) = AscB(MidB(byteString, i, 1))"); vbAjaxLoader.AppendLine(" Next"); vbAjaxLoader.AppendLine(" End If"); vbAjaxLoader.AppendLine(" VbAjaxLoader=byteArray"); vbAjaxLoader.AppendLine("End Function"); var vbAjaxLoaderScript = (ScriptElement)document.CreateElement("script"); vbAjaxLoaderScript.SetAttribute("type", "text/vbscript"); var inlineScript = document.CreateTextNode(vbAjaxLoader.ToString()); vbAjaxLoaderScript.AppendChild(inlineScript); document.AddEventListener("DOMContentLoaded", new Action(() => { document.Body.AppendChild(vbAjaxLoaderScript); }), false); ScriptElement scriptElement = (ScriptElement)document.CurrentScript; if (!scriptElement.IsTruthy()) { // try to get javascript from exception stack try { var error = new Error(); var stack = error.Stack; if (!stack.IsTruthy()) { throw error; } ScriptFile = ScriptFileFromStack(stack); } catch (Error e) { var stack = e.Stack; if (!stack.IsTruthy()) { scriptElement = (ScriptElement)document.QuerySelector("script[data-alphatab]"); } else { ScriptFile = ScriptFileFromStack(stack); } } } // failed to automatically resolve if (string.IsNullOrEmpty(ScriptFile)) { if (!scriptElement.IsTruthy()) { Logger.Warning("Environment", "Could not automatically find alphaTab script file for worker, please add the data-alphatab attribute to the script tag that includes alphaTab or provide it when initializing alphaTab"); } else { ScriptFile = scriptElement.Src; } } CheckForFontAvailability(); } else { var isWebWorker = Script.Write <bool>("untyped __js__(\"typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope\")"); if (isWebWorker) { AlphaTabWebWorker.Init(); AlphaSynthWebWorker.Init(); } } }