Beispiel #1
0
        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);
        }
Beispiel #2
0
 protected override void OnAssignRenderingContext(BarRenderingContext renderingContext)
 {
     base.OnAssignRenderingContext(renderingContext);
     _beatElementRenderers.AssignRenderingContexts(renderingContext);
 }
Beispiel #3
0
 public static double GetPositionInRow(this BarColumn column, BarRenderingContext rc)
 {
     return(rc.Owner.GetRelativeX(rc.ColumnRenderingInfos[column.ColumnIndex].Position + rc.Location.X));
 }
Beispiel #4
0
        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;
        }
Beispiel #5
0
 public static double GetPosition(this BarColumn column, BarRenderingContext rc)
 {
     return(rc.ColumnRenderingInfos[column.ColumnIndex].Position);
 }