public void JsonDeserializationTestWithProxyOnRealExample() { var assembly = typeof(SerializationTests).Assembly; var scoreResourceName = $"{typeof(SerializationTests).Namespace}.Assets.JohannChristophBachFull3.0.xml"; using (var scoreStream = assembly.GetManifestResourceStream(scoreResourceName)) using (var scoreReader = new StreamReader(scoreStream)) { var sw = new Stopwatch(); sw.Start(); var scoreString = scoreReader.ReadToEnd(); var settings = new HtmlScoreRendererSettings(); settings.RenderSurface = HtmlScoreRendererSettings.HtmlRenderSurface.Svg; var profile = SMuFLMusicFont.CreateFromJsonResource <SerializationTests>("bravura_metadata.json"); settings.SetMusicFont(profile, "Bravura", "/fakeuri"); settings.Scale = 1; settings.CustomElementPositionRatio = 0.8; settings.IgnorePageMargins = true; var renderer = new HtmlSvgScoreRenderer(new XElement("root"), "testCanvas", settings); renderer.Render(scoreString.ToScore()); sw.Stop(); var metadataAsProxy = (LazyLoadJsonProxy)profile.SMuFLMetadata; Debug.WriteLine($"All rendering done in {sw.Elapsed}"); var deserTime = metadataAsProxy.GetTotalDeserializationTimeWithChildElements(); Debug.WriteLine($"Deserialization done in {deserTime}"); } }
private HtmlScoreRendererSettings CreateScoreRendererSettings(string musicFontName, string fontMetadataPath, params string[] musicFontUris) { var fontMetadata = string.IsNullOrWhiteSpace(fontMetadataPath) ? null : File.ReadAllText( Path.Combine(hostingEnvironment.ContentRootPath, "wwwroot") + fontMetadataPath); var settings = new HtmlScoreRendererSettings(); settings.RenderSurface = HtmlScoreRendererSettings.HtmlRenderSurface.Svg; settings.CustomElementPositionRatio = 1; if (musicFontName == "Polihymnia") { settings.Fonts.Add(MusicFontStyles.MusicFont, new HtmlFontInfo(musicFontName, 22, musicFontUris)); settings.Fonts.Add(MusicFontStyles.StaffFont, new HtmlFontInfo(musicFontName, 24, musicFontUris)); settings.Fonts.Add(MusicFontStyles.GraceNoteFont, new HtmlFontInfo(musicFontName, 12, musicFontUris)); settings.Fonts.Add(MusicFontStyles.TimeSignatureFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf")); settings.Fonts.Add(MusicFontStyles.LyricsFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf")); settings.Fonts.Add(MusicFontStyles.DirectionFont, new HtmlFontInfo("Open Sans", 14, "/fonts/OpenSans-Regular.ttf")); } else { var profile = SMuFLMusicFont.CreateFromJsonString(fontMetadata); profile.FontSizes[MusicFontStyles.MusicFont] = 20; profile.FontSizes[MusicFontStyles.TimeSignatureFont] = 20; profile.FontSizes[MusicFontStyles.StaffFont] = 20; settings.SetMusicFont(profile, musicFontName, musicFontUris); } settings.RenderingMode = Controls.Rendering.ScoreRenderingModes.AllPages; settings.IgnorePageMargins = true; return(settings); }
public HtmlScoreRendererSettings GetRendererSettings() { if (rendererSettings != null) { return(rendererSettings); } rendererSettings = new HtmlScoreRendererSettings(); rendererSettings.RenderSurface = HtmlScoreRendererSettings.HtmlRenderSurface.Svg; rendererSettings.CustomElementPositionRatio = 1; var musicFontUris = new[] { "/fonts/Polihymnia.ttf" }; rendererSettings.Fonts.Add(MusicFontStyles.MusicFont, new HtmlFontInfo("Polihymnia", 22, musicFontUris)); rendererSettings.Fonts.Add(MusicFontStyles.StaffFont, new HtmlFontInfo("Polihymnia", 24, musicFontUris)); rendererSettings.Fonts.Add(MusicFontStyles.GraceNoteFont, new HtmlFontInfo("Polihymnia", 12, musicFontUris)); rendererSettings.Fonts.Add(MusicFontStyles.TimeSignatureFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf")); rendererSettings.Fonts.Add(MusicFontStyles.LyricsFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf")); rendererSettings.Fonts.Add(MusicFontStyles.DirectionFont, new HtmlFontInfo("Open Sans", 14, "/fonts/OpenSans-Regular.ttf")); /*var profile = SMuFLMusicFont.CreateFromJsonString(fontMetadata, false); //TODO: Proxy disabled becasue Mono.wasm does not support Reflection.Emit yet * profile.FontSizes[MusicFontStyles.MusicFont] = 20; * profile.FontSizes[MusicFontStyles.TimeSignatureFont] = 20; * profile.FontSizes[MusicFontStyles.StaffFont] = 20; * rendererSettings.SetMusicFont(profile, "Bravura", musicFontUris);*/ rendererSettings.RenderingMode = Controls.Rendering.ScoreRenderingModes.Panorama; rendererSettings.IgnorePageMargins = true; return(rendererSettings); }
public static MvcHtmlString NoteViewerFor <TModel>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, Score> > expression, Expression <Func <TModel, HtmlScoreRendererSettings> > settingsExpression) { if (expression == null) { throw new ArgumentNullException("expression"); } if (settingsExpression == null) { throw new ArgumentNullException("settingsExpression"); } ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); Score score = metadata.Model == null ? null : metadata.Model as Score; ModelMetadata settingsMetadata = ModelMetadata.FromLambdaExpression(settingsExpression, htmlHelper.ViewData); HtmlScoreRendererSettings settings = settingsMetadata.Model == null ? null : settingsMetadata.Model as HtmlScoreRendererSettings; return(NoteViewerHelper(htmlHelper, score, settings)); }
public static HtmlString NoteViewerFor <TModel>(this IHtmlHelper <TModel> htmlHelper, Expression <Func <TModel, Score> > expression, Expression <Func <TModel, HtmlScoreRendererSettings> > settingsExpression) { if (expression == null) { throw new ArgumentNullException("expression"); } if (settingsExpression == null) { throw new ArgumentNullException("settingsExpression"); } var explorer = ExpressionMetadataProvider.FromLambdaExpression(expression, htmlHelper.ViewData, htmlHelper.MetadataProvider); Score score = explorer.Model == null ? null : explorer.Model as Score; var settingsExplorer = ExpressionMetadataProvider.FromLambdaExpression(settingsExpression, htmlHelper.ViewData, htmlHelper.MetadataProvider); HtmlScoreRendererSettings settings = settingsExplorer.Model == null ? null : settingsExplorer.Model as HtmlScoreRendererSettings; return(NoteViewerHelper(htmlHelper, score, settings)); }
public HomeViewModel() { var settings = new HtmlScoreRendererSettings(); settings.RenderSurface = HtmlScoreRendererSettings.HtmlRenderSurface.Svg; var musicFontUris = new[] { "/fonts/Polihymnia.svg", "/fonts/Polihymnia.ttf", "/fonts/Polihymnia.woff" }; settings.RenderingMode = ScoreRenderingModes.AllPages; settings.Fonts.Add(MusicFontStyles.MusicFont, new HtmlFontInfo("Polihymnia", 22, musicFontUris)); settings.Fonts.Add(MusicFontStyles.StaffFont, new HtmlFontInfo("Polihymnia", 24, musicFontUris)); settings.Fonts.Add(MusicFontStyles.GraceNoteFont, new HtmlFontInfo("Polihymnia", 14, musicFontUris)); settings.Fonts.Add(MusicFontStyles.LyricsFont, new HtmlFontInfo("Open Sans", 9, "/fonts/OpenSans-Regular.ttf")); settings.Fonts.Add(MusicFontStyles.TimeSignatureFont, new HtmlFontInfo("Open Sans", 12, "/fonts/OpenSans-Regular.ttf")); settings.Fonts.Add(MusicFontStyles.DirectionFont, new HtmlFontInfo("Open Sans", 10, "/fonts/OpenSans-Regular.ttf")); settings.Scale = 1; settings.CustomElementPositionRatio = 0.8; settings.IgnorePageMargins = true; Settings = settings; RadarChartSettings = new HtmlRadarChartRendererSettings(); Samples = new[] { new RadarChartSample("Performance", "Performance", 50) { ValidationMinValue = 40, ValidationMaxValue = 60 }, new RadarChartSample("User experience", "User experience", 52) { ValidationMinValue = 20, ValidationMaxValue = 40 }, new RadarChartSample("Responsiveness", "Responsiveness", 18) { ValidationMinValue = 20, ValidationMaxValue = 40 }, new RadarChartSample("Cost", "Cost", 30) { ValidationMinValue = 30, ValidationMaxValue = 60 }, new RadarChartSample("Awesomeness", "Awesomeness", 37) { ValidationMinValue = 20, ValidationMaxValue = 40 } }; }
public static MvcHtmlString NoteViewerFor <TModel>(this HtmlHelper <TModel> htmlHelper, Expression <Func <TModel, string> > expression, HtmlScoreRendererSettings settings) { if (expression == null) { throw new ArgumentNullException(nameof(expression)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); string musicXml = metadata.Model == null ? null : metadata.Model.ToString(); return(NoteViewerHelper(htmlHelper, musicXml, settings)); }
public static MvcHtmlString NoteViewer(this HtmlHelper htmlHelper, Score score, HtmlScoreRendererSettings settings) { return(NoteViewerHelper(htmlHelper, score, settings)); }
public static MvcHtmlString NoteViewer(this HtmlHelper htmlHelper, string musicXml, HtmlScoreRendererSettings settings) { return(NoteViewerHelper(htmlHelper, musicXml, settings)); }
private static MvcHtmlString NoteViewerHelper(HtmlHelper htmlHelper, string musicXml, HtmlScoreRendererSettings settings) { MusicXmlParser parser = new MusicXmlParser(); Score score = parser.Parse(XDocument.Parse(musicXml)); return(NoteViewerHelper(htmlHelper, score, settings)); }
private static MvcHtmlString NoteViewerHelper(HtmlHelper htmlHelper, Score score, HtmlScoreRendererSettings settings) { IScore2HtmlBuilder builder; if (settings.RenderSurface == HtmlScoreRendererSettings.HtmlRenderSurface.Canvas) { builder = new Score2HtmlCanvasBuilder(score, string.Format("scoreCanvas{0}", canvasIdCount), settings); } else if (settings.RenderSurface == HtmlScoreRendererSettings.HtmlRenderSurface.Svg) { builder = new Score2HtmlSvgBuilder(score, string.Format("scoreCanvas{0}", canvasIdCount), settings); } else { throw new NotImplementedException("Unsupported rendering engine."); } string html = builder.Build(); canvasIdCount++; return(MvcHtmlString.Create(html)); }
public static IHtmlContent NoteViewer(this IHtmlHelper htmlHelper, string musicXml, HtmlScoreRendererSettings settings) { return(NoteViewerHelper(htmlHelper, musicXml, settings)); }
public ServerSideSettingsService(IHostingEnvironment hostingEnvironment) { this.hostingEnvironment = hostingEnvironment; rendererSettings = CreateScoreRendererSettings("Bravura", "/fonts/bravura_metadata.json", "/fonts/Bravura.otf"); }
public CanvasScoreRenderer(Canvas canvas, HtmlScoreRendererSettings settings) : base(canvas, settings) { OwnershipDictionary = new Dictionary <FrameworkElement, MusicalSymbol>(); }