public override void paint(int cx, int cy, global::alphatab.platform.ICanvas canvas) { unchecked { int size = ((int)((6 * this.renderer.stave.staveGroup.layout.renderer.settings.scale))); canvas.beginPath(); canvas.moveTo(((double)((cx + this.x))), ((double)((cy + this.y)))); canvas.quadraticCurveTo(((double)(((cx + this.x) + (this.width / 2)))), ((double)((cy + this.y))), ((double)(((cx + this.x) + this.width))), ((double)(((cy + this.y) - size)))); canvas.moveTo(((double)((cx + this.x))), ((double)((cy + this.y)))); canvas.quadraticCurveTo(((double)(((cx + this.x) + (this.width / 2)))), ((double)((cy + this.y))), ((double)(((cx + this.x) + this.width))), ((double)(((cy + this.y) + size)))); canvas.stroke(); } }
public static void paintTie(global::alphatab.platform.ICanvas canvas, double scale, double x1, double y1, double x2, double y2, global::haxe.lang.Null <bool> down) { unchecked { bool __temp_down200 = ((global::haxe.lang.Runtime.eq((down).toDynamic(), (default(global::haxe.lang.Null <bool>)).toDynamic())) ? (((bool)(false))) : (down.@value)); if ((x2 > x1)) { double t = x1; x1 = x2; x2 = t; t = y1; y1 = y2; y2 = t; } double offset = (15 * scale); double size = (4 * scale); double normalVector_x = (y2 - y1); double normalVector_y = (x2 - x1); double length = global::System.Math.Sqrt(((double)(((normalVector_x * normalVector_x) + (normalVector_y * normalVector_y))))); if (__temp_down200) { normalVector_x *= ((double)(-1)); } else { normalVector_y *= ((double)(-1)); } normalVector_x /= length; normalVector_y /= length; double center_x = (((x2 + x1)) / 2); double center_y = (((y2 + y1)) / 2); double cp1_x = (center_x + (offset * normalVector_x)); double cp1_y = (center_y + (offset * normalVector_y)); double cp2_x = (center_x + (((offset - size)) * normalVector_x)); double cp2_y = (center_y + (((offset - size)) * normalVector_y)); canvas.beginPath(); canvas.moveTo(x1, y1); canvas.quadraticCurveTo(cp1_x, cp1_y, x2, y2); canvas.quadraticCurveTo(cp2_x, cp2_y, x1, y1); canvas.closePath(); } }
public virtual void parseCommand(int cx, int cy, global::alphatab.platform.ICanvas canvas, global::alphatab.rendering.glyphs.SvgCommand cmd) { unchecked { bool canContinue = default(bool); int i = default(int); { string _g = cmd.cmd; switch (_g) { case "M": { this._currentX = (cx + (cmd.numbers[0] * this._xScale)); this._currentY = (cy + (cmd.numbers[1] * this._yScale)); canvas.moveTo(this._currentX, this._currentY); break; } case "m": { this._currentX += (cmd.numbers[0] * this._xScale); this._currentY += (cmd.numbers[1] * this._yScale); canvas.moveTo(this._currentX, this._currentY); break; } case "Z": case "z": { canvas.closePath(); break; } case "L": { i = 0; while ((i < cmd.numbers.length)) { this._currentX = (cx + (cmd.numbers[i++] * this._xScale)); this._currentY = (cy + (cmd.numbers[i++] * this._yScale)); canvas.lineTo(this._currentX, this._currentY); } break; } case "l": { i = 0; while ((i < cmd.numbers.length)) { this._currentX += (cmd.numbers[i++] * this._xScale); this._currentY += (cmd.numbers[i++] * this._yScale); canvas.lineTo(this._currentX, this._currentY); } break; } case "V": { i = 0; while ((i < cmd.numbers.length)) { this._currentY = (cy + (cmd.numbers[i++] * this._yScale)); canvas.lineTo(this._currentX, this._currentY); } break; } case "v": { i = 0; while ((i < cmd.numbers.length)) { this._currentY += (cmd.numbers[i++] * this._yScale); canvas.lineTo(this._currentX, this._currentY); } break; } case "H": { i = 0; while ((i < cmd.numbers.length)) { this._currentX = (cx + (cmd.numbers[i++] * this._xScale)); canvas.lineTo(this._currentX, this._currentY); } break; } case "h": { i = 0; while ((i < cmd.numbers.length)) { this._currentX += (cmd.numbers[i++] * this._xScale); canvas.lineTo(this._currentX, this._currentY); } break; } case "C": { i = 0; while ((i < cmd.numbers.length)) { double x1 = (cx + (cmd.numbers[i++] * this._xScale)); double y1 = (cy + (cmd.numbers[i++] * this._yScale)); double x2 = (cx + (cmd.numbers[i++] * this._xScale)); double y2 = (cy + (cmd.numbers[i++] * this._yScale)); double x3 = (cx + (cmd.numbers[i++] * this._xScale)); double y3 = (cy + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x2; this._lastControlY = y2; this._currentX = x3; this._currentY = y3; canvas.bezierCurveTo(x1, y1, x2, y2, x3, y3); } break; } case "c": { i = 0; while ((i < cmd.numbers.length)) { double x11 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y11 = (this._currentY + (cmd.numbers[i++] * this._yScale)); double x21 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y21 = (this._currentY + (cmd.numbers[i++] * this._yScale)); double x31 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y31 = (this._currentY + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x21; this._lastControlY = y21; this._currentX = x31; this._currentY = y31; canvas.bezierCurveTo(x11, y11, x21, y21, x31, y31); } break; } case "S": { i = 0; while ((i < cmd.numbers.length)) { double x12 = (cx + (cmd.numbers[i++] * this._xScale)); double y12 = (cy + (cmd.numbers[i++] * this._yScale)); canContinue = (((string.Equals(this._lastCmd, "c") || string.Equals(this._lastCmd, "C")) || string.Equals(this._lastCmd, "S")) || string.Equals(this._lastCmd, "s")); double x22 = default(double); if (canContinue) { x22 = (this._currentX + ((this._currentX - this._lastControlX))); } else { x22 = this._currentX; } double y22 = default(double); if (canContinue) { y22 = (this._currentY + ((this._currentY - this._lastControlY))); } else { y22 = this._currentY; } double x32 = (cx + (cmd.numbers[i++] * this._xScale)); double y32 = (cy + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x22; this._lastControlY = y22; this._currentX = x32; this._currentY = y32; canvas.bezierCurveTo(x12, y12, x22, y22, x32, y32); } break; } case "s": { i = 0; while ((i < cmd.numbers.length)) { double x13 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y13 = (this._currentY + (cmd.numbers[i++] * this._yScale)); canContinue = (((string.Equals(this._lastCmd, "c") || string.Equals(this._lastCmd, "C")) || string.Equals(this._lastCmd, "S")) || string.Equals(this._lastCmd, "s")); double x23 = default(double); if (canContinue) { x23 = (this._currentX + ((this._currentX - this._lastControlX))); } else { x23 = this._currentX; } double y23 = default(double); if (canContinue) { y23 = (this._currentY + ((this._currentY - this._lastControlY))); } else { y23 = this._currentY; } double x33 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y33 = (this._currentY + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x23; this._lastControlY = y23; this._currentX = x33; this._currentY = y33; canvas.bezierCurveTo(x13, y13, x23, y23, x33, y33); } break; } case "Q": { i = 0; while ((i < cmd.numbers.length)) { double x14 = (cx + (cmd.numbers[i++] * this._xScale)); double y14 = (cy + (cmd.numbers[i++] * this._yScale)); double x24 = (cx + (cmd.numbers[i++] * this._xScale)); double y24 = (cy + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x14; this._lastControlY = y14; this._currentX = x24; this._currentY = y24; canvas.quadraticCurveTo(x14, y14, x24, y24); } break; } case "q": { i = 0; while ((i < cmd.numbers.length)) { double x15 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y15 = (this._currentY + (cmd.numbers[i++] * this._yScale)); double x25 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y25 = (this._currentY + (cmd.numbers[i++] * this._yScale)); this._lastControlX = x15; this._lastControlY = y15; this._currentX = x25; this._currentY = y25; canvas.quadraticCurveTo(x15, y15, x25, y25); } break; } case "T": { i = 0; while ((i < cmd.numbers.length)) { double x16 = (cx + (cmd.numbers[i++] * this._xScale)); double y16 = (cy + (cmd.numbers[i++] * this._yScale)); canContinue = (((string.Equals(this._lastCmd, "q") || string.Equals(this._lastCmd, "Q")) || string.Equals(this._lastCmd, "t")) || string.Equals(this._lastCmd, "T")); double cpx = default(double); if (canContinue) { cpx = (this._currentX + ((this._currentX - this._lastControlX))); } else { cpx = this._currentX; } double cpy = default(double); if (canContinue) { cpy = (this._currentY + ((this._currentY - this._lastControlY))); } else { cpy = this._currentY; } this._currentX = x16; this._currentY = y16; this._lastControlX = cpx; this._lastControlY = cpy; canvas.quadraticCurveTo(cpx, cpy, x16, y16); } break; } case "t": { i = 0; while ((i < cmd.numbers.length)) { double x17 = (this._currentX + (cmd.numbers[i++] * this._xScale)); double y17 = (this._currentY + (cmd.numbers[i++] * this._yScale)); double cpx1 = (this._currentX + ((this._currentX - this._lastControlX))); double cpy1 = (this._currentY + ((this._currentY - this._lastControlY))); canContinue = (((string.Equals(this._lastCmd, "q") || string.Equals(this._lastCmd, "Q")) || string.Equals(this._lastCmd, "t")) || string.Equals(this._lastCmd, "T")); double cpx2 = default(double); if (canContinue) { cpx2 = (this._currentX + ((this._currentX - this._lastControlX))); } else { cpx2 = this._currentX; } double cpy2 = default(double); if (canContinue) { cpy2 = (this._currentY + ((this._currentY - this._lastControlY))); } else { cpy2 = this._currentY; } this._lastControlX = cpx2; this._lastControlY = cpy2; canvas.quadraticCurveTo(cpx2, cpy2, x17, y17); } break; } } } this._lastCmd = cmd.cmd; } }