GetFractionSign() private method

private GetFractionSign ( int steps ) : string
steps int
return string
示例#1
0
        public override void Paint(float cx, float cy, ICanvas canvas)
        {
            var tabBarRenderer = (TabBarRenderer)Renderer;
            var res            = Renderer.Resources;
            var startX         = cx + X + _parent.OnNotes.Width / 2;
            var endX           = _beat.NextBeat == null || _beat.Voice != _beat.NextBeat.Voice
                    ? cx + X + _parent.Width
                    : cx + tabBarRenderer.GetBeatX(_beat.NextBeat);
            var startY = cy;
            var sizeY  = WhammyMaxOffset * Scale;

            var old = canvas.TextAlign;

            canvas.TextAlign = TextAlign.Center;
            if (_beat.WhammyBarPoints.Count >= 2)
            {
                var dx = (endX - startX) / Beat.WhammyBarMaxPosition;
                var dy = sizeY / Beat.WhammyBarMaxValue;

                canvas.BeginPath();
                for (int i = 0, j = _beat.WhammyBarPoints.Count - 1; i < j; i++)
                {
                    var pt1 = _beat.WhammyBarPoints[i];
                    var pt2 = _beat.WhammyBarPoints[i + 1];

                    if (pt1.Value == pt2.Value && i == _beat.WhammyBarPoints.Count - 2)
                    {
                        continue;
                    }

                    var pt1X = startX + (dx * pt1.Offset);
                    var pt1Y = startY - (dy * pt1.Value);

                    var pt2X = startX + (dx * pt2.Offset);
                    var pt2Y = startY - (dy * pt2.Value);

                    canvas.MoveTo(pt1X, pt1Y);
                    canvas.LineTo(pt2X, pt2Y);

                    if (pt2.Value != 0)
                    {
                        var dv = pt2.Value;
                        var s  = "";

                        if (dv >= 4 || dv <= -4)
                        {
                            int steps = dv / 4;
                            s += steps;
                            // Quaters
                            dv -= steps * 4;
                        }

                        if (dv > 0)
                        {
                            s += BendGlyph.GetFractionSign(dv);
                        }

                        if (s != "")
                        {
                            // draw label
                            canvas.Font = res.GraceFont;
                            //var size = canvas.MeasureText(s);
                            var sy = pt2Y;
                            if (pt2Y < pt1Y)
                            {
                                sy -= canvas.Font.Size;
                            }
                            else
                            {
                                sy += 3 * Scale;
                            }
                            var sx = pt2X;
                            canvas.FillText(s, sx, sy);
                        }
                    }
                }
                canvas.Stroke();
            }
            canvas.TextAlign = old;
        }