Update WebGL Graphics.arc to work more like on Canvas

This commit is contained in:
Twilrom 2018-02-13 15:49:38 +01:00
parent 8afeafd66b
commit 0c0b272ccc

View file

@ -796,6 +796,7 @@ var FlatTintPipeline = new Class({
var path = null; var path = null;
var sin = Math.sin; var sin = Math.sin;
var cos = Math.cos; var cos = Math.cos;
var PI2 = Math.PI * 2;
var sr = sin(srcRotation); var sr = sin(srcRotation);
var cr = cos(srcRotation); var cr = cos(srcRotation);
var sra = cr * srcScaleX; var sra = cr * srcScaleX;
@ -835,31 +836,51 @@ var FlatTintPipeline = new Class({
endAngle = commands[cmdIndex + 5]; endAngle = commands[cmdIndex + 5];
anticlockwise = commands[cmdIndex + 6]; anticlockwise = commands[cmdIndex + 6];
if (lastPath === null)
{
lastPath = new Path(x + cos(startAngle) * radius, y + sin(startAngle) * radius, lineWidth, lineColor, lineAlpha);
pathArray.push(lastPath);
iteration += iterStep;
}
endAngle -= startAngle;
if (anticlockwise) if (anticlockwise)
{ {
ta = endAngle; if (endAngle < -PI2)
endAngle = startAngle; {
startAngle = -ta; endAngle = -PI2;
}
else if (endAngle > 0)
{
endAngle = -PI2 + endAngle % PI2;
}
} }
else if (endAngle > PI2)
{
endAngle = PI2;
}
else if (endAngle < 0)
{
endAngle = PI2 + endAngle % PI2;
}
while (iteration < 1) while (iteration < 1)
{ {
ta = (endAngle - startAngle) * iteration + startAngle; ta = endAngle * iteration + startAngle;
tx = x + cos(ta) * radius; tx = x + cos(ta) * radius;
ty = y + sin(ta) * radius; ty = y + sin(ta) * radius;
if (iteration === 0) lastPath.points.push(new Point(tx, ty, lineWidth, lineColor, lineAlpha));
{
lastPath = new Path(tx, ty, lineWidth, lineColor, lineAlpha);
pathArray.push(lastPath);
}
else
{
lastPath.points.push(new Point(tx, ty, lineWidth, lineColor, lineAlpha));
}
iteration += iterStep; iteration += iterStep;
} }
ta = endAngle + startAngle;
tx = x + cos(ta) * radius;
ty = y + sin(ta) * radius;
lastPath.points.push(new Point(tx, ty, lineWidth, lineColor, lineAlpha));
cmdIndex += 6; cmdIndex += 6;
break; break;