transformPath method
void
transformPath(
- dynamic path,
- Matrix3 m
Implementation
void transformPath(path, Matrix3 m) {
void transfVec2(Vector v2) {
tempV3.setValues(v2.x, v2.y, 1).applyMatrix3(m);
v2.setValues(tempV3.x, tempV3.y);
}
final isRotated = isTransformRotated(m);
final subPaths = path.subPaths;
for (int i = 0, n = subPaths.length; i < n; i++) {
final subPath = subPaths[i];
final curves = subPath.curves;
for (int j = 0; j < curves.length; j++) {
final curve = curves[j];
if (curve is LineCurve) {
transfVec2(curve.v1);
transfVec2(curve.v2);
}
else if (curve.isCubicBezierCurve) {
transfVec2(curve.v0);
transfVec2(curve.v1);
transfVec2(curve.v2);
transfVec2(curve.v3);
}
else if (curve.isQuadraticBezierCurve) {
transfVec2(curve.v0);
transfVec2(curve.v1);
transfVec2(curve.v2);
}
else if (curve.isEllipseCurve) {
if (isRotated) {
console.info('SVGLoader: Elliptic arc or ellipse rotation or skewing is not implemented.');
}
tempV2.setValues(curve.aX, curve.aY);
transfVec2(tempV2);
curve.aX = tempV2.x;
curve.aY = tempV2.y;
curve.xRadius *= getTransformScaleX(m);
curve.yRadius *= getTransformScaleY(m);
}
}
}
}