Parent matrix and now optional and it won't draw a line cap unless the first point has been set

This commit is contained in:
Richard Davey 2018-09-06 15:07:36 +01:00
parent 19a50eaa98
commit 5e126b80fa

View file

@ -229,7 +229,7 @@ var TextureTintPipeline = new Class({
* @private
* @since 3.12.0
*/
this.firstQuad = [ 0, 0, 0, 0 ];
this.firstQuad = [ 0, 0, 0, 0, 0 ];
/**
* Internal path quad cache.
@ -239,7 +239,7 @@ var TextureTintPipeline = new Class({
* @private
* @since 3.12.0
*/
this.prevQuad = [ 0, 0, 0, 0 ];
this.prevQuad = [ 0, 0, 0, 0, 0 ];
/**
* Used internally for triangulating a polygon.
@ -949,8 +949,11 @@ var TextureTintPipeline = new Class({
var calcMatrix = this._tempMatrix3;
// Multiply and store result in calcMatrix
parentMatrix.multiply(currentMatrix, calcMatrix);
// Multiply and store result in calcMatrix, only if the parentMatrix is set, otherwise we'll use whatever values are already in the calcMatrix
if (parentMatrix)
{
parentMatrix.multiply(currentMatrix, calcMatrix);
}
var xw = x + width;
var yh = y + height;
@ -1161,6 +1164,10 @@ var TextureTintPipeline = new Class({
{
this.renderer.setPipeline(this);
// Reset the closePath booleans
this.prevQuad[4] = 0;
this.firstQuad[4] = 0;
var pathLength = path.length - 1;
for (var pathIndex = 0; pathIndex < pathLength; pathIndex++)
@ -1204,14 +1211,12 @@ var TextureTintPipeline = new Class({
var calcMatrix = this._tempMatrix3;
// Multiply and store result in calcMatrix
parentMatrix.multiply(currentMatrix, calcMatrix);
if (this.vertexCount + 6 > this.vertexCapacity)
// Multiply and store result in calcMatrix, only if the parentMatrix is set, otherwise we'll use whatever values are already in the calcMatrix
if (parentMatrix)
{
this.flush();
parentMatrix.multiply(currentMatrix, calcMatrix);
}
var dx = bx - ax;
var dy = by - ay;
@ -1264,7 +1269,7 @@ var TextureTintPipeline = new Class({
// TL, BL, BR, TR
this.batchQuad(tlX, tlY, blX, blY, brX, brY, trX, trY, u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect);
if (lineWidth <= 1)
if (lineWidth <= 2)
{
// No point doing a linejoin if the line isn't thick enough
return;
@ -1273,22 +1278,23 @@ var TextureTintPipeline = new Class({
var prev = this.prevQuad;
var first = this.firstQuad;
if (index > 0)
if (index > 0 && prev[4])
{
this.batchQuad(tlX, tlY, blX, blY, prev[0], prev[1], prev[2], prev[3], u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect);
}
else
{
first[0] = blX;
first[1] = blY;
first[2] = tlX;
first[3] = tlY;
first[0] = tlX;
first[1] = tlY;
first[2] = blX;
first[3] = blY;
first[4] = 1;
}
if (closePath)
if (closePath && first[4])
{
// Add a join for the final path segment
this.batchQuad(first[0], first[1], first[2], first[3], brX, brY, trX, trY, u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect);
this.batchQuad(brX, brY, trX, trY, first[0], first[1], first[2], first[3], u0, v0, u1, v1, tintTL, tintTR, tintBL, tintBR, tintEffect);
}
else
{
@ -1298,6 +1304,7 @@ var TextureTintPipeline = new Class({
prev[1] = brY;
prev[2] = trX;
prev[3] = trY;
prev[4] = 1;
}
}