public virtual void render(HtmlElement parent) { parent.appendChild(__div); invalidate(); }
protected JsApiBase(HtmlElement element, dynamic options) { Element = element; dynamic dataset = Element.dataset; // load settings Settings settings = Settings.FromJson(options); #region build tracks array // get track data to parse dynamic tracksData; if (options != null && options.tracks) { tracksData = options.tracks; } else if (element != null && element.dataset != null && dataset["tracks"] != null) { tracksData = dataset["tracks"]; } else { tracksData = 0; } SetTracks(tracksData, false); #endregion string contents = ""; if (element != null) { // get load contents if (element.dataset != null && dataset["tex"] != null && element.innerText.As<JsBoolean>()) { contents = (element.innerText.As<string>()).Trim(); element.innerHTML = ""; } #region Create context elements (wrapper, canvas etc) CanvasElement = (HtmlElement)document.createElement("div"); CanvasElement.className = "alphaTabSurface"; element.appendChild(CanvasElement); #endregion } #region Renderer Setup Renderer = CreateScoreRenderer(settings, options, CanvasElement); Renderer.RenderFinished += o => TriggerEvent("rendered"); Renderer.PostRenderFinished += () => TriggerEvent("post-rendered"); Renderer.PreRender += () => { CanvasElement.innerHTML = ""; }; Renderer.PartialRenderFinished += result => { Node itemToAppend; if (@typeof(result.RenderResult) == "string") { var partialResult = (HtmlDivElement) document.createElement("div"); partialResult.innerHTML = result.RenderResult.As<string>(); itemToAppend = partialResult.firstChild; } else { itemToAppend = (Node) result.RenderResult; } CanvasElement.style.width = result.TotalWidth + "px"; CanvasElement.style.height = result.TotalHeight + "px"; CanvasElement.appendChild(itemToAppend); }; Renderer.RenderFinished += result => { CanvasElement.style.width = result.TotalWidth + "px"; CanvasElement.style.height = result.TotalHeight + "px"; }; #endregion #region Load Default Data if (!string.IsNullOrEmpty(contents)) { Tex(contents); } else if (options && options.file) { Load(options.file); } else if (Element != null && Element.dataset != null && !string.IsNullOrEmpty(dataset["file"])) { Load(dataset["file"]); } #endregion }
protected JsApiBase(HtmlElement element, dynamic options) { Element = element; dynamic dataset = Element.dataset; // load settings Settings settings = Settings.FromJson(options); #region build tracks array // get track data to parse dynamic tracksData; if (options != null && options.tracks) { tracksData = options.tracks; } else if (element != null && element.dataset != null && dataset["tracks"] != null) { tracksData = dataset["tracks"]; } else { tracksData = 0; } SetTracks(tracksData, false); #endregion string contents = ""; if (element != null) { // get load contents if (element.dataset != null && dataset["tex"] != null && element.innerText.As<JsBoolean>()) { contents = (element.innerHTML.As<string>()).Trim(); element.innerHTML = ""; } #region Create context elements (wrapper, canvas etc) CanvasElement = (HtmlElement)document.createElement("div"); CanvasElement.className = "alphaTabSurface"; CanvasElement.style.fontSize = "0"; element.appendChild(CanvasElement); #endregion #region Auto Sizing AutoSize = settings.Width < 0; if (AutoSize) { settings.Width = element.offsetWidth; if (options) { options.width = element.offsetWidth; } int timeoutId = 0; window.addEventListener("resize", e => { window.clearTimeout(timeoutId); timeoutId = window.setTimeout(() => { if (element.offsetWidth != settings.Width) { var resizeEventInfo = new ResizeEventArgs(); resizeEventInfo.OldWidth = settings.Width; resizeEventInfo.NewWidth = element.offsetWidth; resizeEventInfo.Settings = settings; TriggerEvent("resize", resizeEventInfo); settings.Width = resizeEventInfo.NewWidth; Renderer.UpdateSettings(settings); Renderer.Resize(element.offsetWidth); } }, 100); }); } #endregion } #region Renderer Setup CreateStyleElement(settings); if (element != null && AutoSize) { var initialResizeEventInfo = new ResizeEventArgs(); initialResizeEventInfo.OldWidth = 0; initialResizeEventInfo.NewWidth = element.offsetWidth; initialResizeEventInfo.Settings = settings; TriggerEvent("resize", initialResizeEventInfo); settings.Width = initialResizeEventInfo.NewWidth; } Renderer = CreateScoreRenderer(settings); Renderer.RenderFinished += o => TriggerEvent("rendered"); Renderer.PostRenderFinished += () => TriggerEvent("post-rendered"); Renderer.PreRender += result => { CanvasElement.innerHTML = ""; AppendRenderResult(result); }; Renderer.PartialRenderFinished += AppendRenderResult; Renderer.RenderFinished += AppendRenderResult; #endregion #region Load Default Data if (!string.IsNullOrEmpty(contents)) { Tex(contents); } else if (options && options.file) { Load(options.file); } else if (Element != null && Element.dataset != null && !string.IsNullOrEmpty(dataset["file"])) { Load(dataset["file"]); } else if (Element != null && !string.IsNullOrEmpty(Element.getAttribute("data-file"))) { Load(Element.getAttribute("data-file")); } #endregion }