addCapGeometry method
void
addCapGeometry()
Implementation
void addCapGeometry(Vector2 center, Vector2 p1, Vector2 p2, bool joinIsOnLeftSide, bool start, num u) {
// param center: End point of the path
// param p1, p2: Left and right cap points
switch (style["strokeLineCap"]) {
case 'round':
if (start) {
makeCircularSector(center, p2, p1, u, 0.5);
} else {
makeCircularSector(center, p1, p2, u, 0.5);
}
break;
case 'square':
if (start) {
tempV2_1.sub2(p1, center);
tempV2_2.setValues(tempV2_1.y, -tempV2_1.x);
tempV2_3.add2(tempV2_1, tempV2_2).add(center);
tempV2_4.sub2(tempV2_2, tempV2_1).add(center);
// Modify already existing vertices
if (joinIsOnLeftSide) {
tempV2_3.copyIntoArray(vertices, 1 * 3);
tempV2_4.copyIntoArray(vertices, 0 * 3);
tempV2_4.copyIntoArray(vertices, 3 * 3);
} else {
tempV2_3.copyIntoArray(vertices, 1 * 3);
tempV2_3.copyIntoArray(vertices, 3 * 3);
tempV2_4.copyIntoArray(vertices, 0 * 3);
}
} else {
tempV2_1.sub2(p2, center);
tempV2_2.setValues(tempV2_1.y, -tempV2_1.x);
tempV2_3.add2(tempV2_1, tempV2_2).add(center);
tempV2_4.sub2(tempV2_2, tempV2_1).add(center);
final vl = vertices.length;
// Modify already existing vertices
if (joinIsOnLeftSide) {
tempV2_3.copyIntoArray(vertices, vl - 1 * 3);
tempV2_4.copyIntoArray(vertices, vl - 2 * 3);
tempV2_4.copyIntoArray(vertices, vl - 4 * 3);
} else {
tempV2_3.copyIntoArray(vertices, vl - 2 * 3);
tempV2_4.copyIntoArray(vertices, vl - 1 * 3);
tempV2_4.copyIntoArray(vertices, vl - 4 * 3);
}
}
break;
case 'butt':
default:
// Nothing to do here
break;
}
}