private async Task <double> RenderTimeSignature(BarRenderingContext renderingContext, double position) { var previousDocumentState = this.RenderingContext.PreviousDocumentState; if (previousDocumentState == null || previousDocumentState.Time != this.Element.DocumentState.Time) { return(await renderingContext.DrawTimeSignature(this.Element.DocumentState.Time, position)); } return(0.0); }
protected override void OnAssignRenderingContext(BarRenderingContext renderingContext) { base.OnAssignRenderingContext(renderingContext); _beatElementRenderers.AssignRenderingContexts(renderingContext); }
public static double GetPositionInRow(this BarColumn column, BarRenderingContext rc) { return(rc.Owner.GetRelativeX(rc.ColumnRenderingInfos[column.ColumnIndex].Position + rc.Location.X)); }
public async Task Render(Point location, Size size, BarInRowPosition inRowPosition) { _barRenderingContext = new BarRenderingContext(this.RenderingContext, location, size, inRowPosition); _columnRenderers.AssignRenderingContexts(_barRenderingContext); _voiceRenderers.AssignRenderingContexts(_barRenderingContext); var width = size.Width; var position = 0.0; if (inRowPosition == BarInRowPosition.First) { _barRenderingContext.DrawOpenBarLine(OpenBarLine.Standard, position); //todo: implement this in DrawTabHeader position += await _barRenderingContext.DrawTabHeader(); } if (this.Element.OpenLine != null) { _barRenderingContext.DrawOpenBarLine(this.Element.OpenLine.Value, position); } _barRenderingContext.Owner.HeaderWidth = position; position += _barRenderingContext.Style.BarHorizontalPadding; position += await this.RenderTimeSignature(_barRenderingContext, position); var minDuration = this.Element.Columns.Min(c => c.GetDuration()); var minSize = await this.MeasureMinSize(this.RenderingContext.PrimitiveRenderer); var widthRatio = (width - position) / minSize; _barRenderingContext.ColumnRenderingInfos = new BarColumnRenderingInfo[this.Element.Columns.Count]; for (var i = 0; i < this.Element.Columns.Count; i++) { var column = this.Element.Columns[i]; var columnWidth = await this.GetColumnMinWidthInBar(this.RenderingContext.PrimitiveRenderer, column, minDuration) * widthRatio; _barRenderingContext.ColumnRenderingInfos[i] = new BarColumnRenderingInfo(column, position, columnWidth); var barColumnRenderer = _columnRenderers[i]; await barColumnRenderer.PreRender(); position += columnWidth; } foreach (var renderer in _voiceRenderers) { await renderer.Render(); } foreach (var barColumnRenderer in _columnRenderers) { await barColumnRenderer.Render(); } if (this.Element.CloseLine != null) { _barRenderingContext.DrawCloseBarLine(this.Element.CloseLine.Value, width); } else if (this.Element.NextBar == null) { _barRenderingContext.DrawCloseBarLine(CloseBarLine.End, width); } else if (inRowPosition == BarInRowPosition.Last) { _barRenderingContext.DrawCloseBarLine(CloseBarLine.Standard, width); } if (this.Element.AlternativeEndingPosition == AlternativeEndingPosition.Start) { _barRenderingContext.IsSectionRenderingPostponed = true; } else { await this.RenderSection(); } await this.RenderTranspositionSignature(); await this.RenderTempoSignature(); this.RenderingContext.PreviousDocumentState = this.Element.DocumentState; }
public static double GetPosition(this BarColumn column, BarRenderingContext rc) { return(rc.ColumnRenderingInfos[column.ColumnIndex].Position); }