/// <summary> /// Draws of performs additional logic at slur end /// </summary> /// <param name="renderer">Score renderer</param> /// <param name="slur">Slur</param> /// <param name="element">Element with a slur</param> /// <param name="notePositionY">Y position of element with a slur</param> /// <param name="slurStartInfo">Information about slur start point</param> /// <param name="slurPlacement">Information about slur placement</param> protected override void ProcessSlurEnd(ScoreRendererBase renderer, Slur slur, Note element, double notePositionY, SlurInfo slurStartInfo, VerticalPlacement slurPlacement) { var absoluteControlPoint = RelativeToAbsolute(renderer, renderer.TenthsToPixels(slur.BezierStartOrEndPoint), notePositionY); var absoluteEndPoint = RelativeToAbsolute(renderer, renderer.TenthsToPixels(slur.BezierControlPoint), notePositionY); renderer.DrawBezier(slurStartInfo.StartPoint.X, slurStartInfo.StartPoint.Y, slurStartInfo.BezierStartControlPoint.X, slurStartInfo.BezierStartControlPoint.Y, absoluteControlPoint.X, absoluteControlPoint.Y, absoluteEndPoint.X, absoluteEndPoint.Y, element); }
public override void Render(PrintSuggestion element, ScoreRendererBase renderer) { if (element.IsSystemBreak && renderer.Settings.RenderingMode != ScoreRenderingModes.Panorama) { renderer.BreakSystem(renderer.TenthsToPixels(element.SystemDistance ?? scoreService.CurrentScore.DefaultPageSettings.DefaultSystemDistance ?? 0), element.IsPageBreak); MusicalSymbolRenderStrategyBase strategy = new ClefRenderStrategy(scoreService) { WasSystemChanged = true }; strategy.Render(scoreService.CurrentClef, renderer); strategy = new KeyRenderStrategy(scoreService); strategy.Render(scoreService.CurrentKey, renderer); //Time signature is not rendered in new line. //Render measure number: renderer.DrawString((scoreService.CurrentMeasureNo).ToString(), MusicFontStyles.LyricsFont, new Primitives.Point(0, scoreService.CurrentLinePositions[0] - 25), scoreService.CurrentStaff); } //Issue #44: Jeśli jesteśmy w trybie panoramy, to trzeba uzupełnić line positions dla pozostałych systemów: if (renderer.Settings.RenderingMode == ScoreRenderingModes.Panorama) { var firstSystem = scoreService.Systems.First(); foreach (var system in scoreService.Systems) { system.BuildStaffFragments(firstSystem.LinePositions.ToDictionary(p => scoreService.CurrentScore.Staves[p.Key - 1], p => p.Value)); } } }