| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | import PathProxy from '../core/PathProxy.js';import { applyTransform as v2ApplyTransform } from '../core/vector.js';var CMD = PathProxy.CMD;var points = [[], [], []];var mathSqrt = Math.sqrt;var mathAtan2 = Math.atan2;export default function transformPath(path, m) {    if (!m) {        return;    }    var data = path.data;    var len = path.len();    var cmd;    var nPoint;    var i;    var j;    var k;    var p;    var M = CMD.M;    var C = CMD.C;    var L = CMD.L;    var R = CMD.R;    var A = CMD.A;    var Q = CMD.Q;    for (i = 0, j = 0; i < len;) {        cmd = data[i++];        j = i;        nPoint = 0;        switch (cmd) {            case M:                nPoint = 1;                break;            case L:                nPoint = 1;                break;            case C:                nPoint = 3;                break;            case Q:                nPoint = 2;                break;            case A:                var x = m[4];                var y = m[5];                var sx = mathSqrt(m[0] * m[0] + m[1] * m[1]);                var sy = mathSqrt(m[2] * m[2] + m[3] * m[3]);                var angle = mathAtan2(-m[1] / sy, m[0] / sx);                data[i] *= sx;                data[i++] += x;                data[i] *= sy;                data[i++] += y;                data[i++] *= sx;                data[i++] *= sy;                data[i++] += angle;                data[i++] += angle;                i += 2;                j = i;                break;            case R:                p[0] = data[i++];                p[1] = data[i++];                v2ApplyTransform(p, p, m);                data[j++] = p[0];                data[j++] = p[1];                p[0] += data[i++];                p[1] += data[i++];                v2ApplyTransform(p, p, m);                data[j++] = p[0];                data[j++] = p[1];        }        for (k = 0; k < nPoint; k++) {            var p_1 = points[k];            p_1[0] = data[i++];            p_1[1] = data[i++];            v2ApplyTransform(p_1, p_1, m);            data[j++] = p_1[0];            data[j++] = p_1[1];        }    }    path.increaseVersion();}
 |