MCPcopy Create free account
hub / github.com/Code-Bullet/Jump-King / pathToAbsolute

Function pathToAbsolute

libraries/p5.js:29832–29917  ·  view source on GitHub ↗
(pathArray)

Source from the content-addressed store, hash-verified

29830}
29831
29832function pathToAbsolute(pathArray) {
29833
29834 var res = [], x = 0, y = 0, mx = 0, my = 0, start = 0;
29835 if (pathArray[0][0] === 'M') {
29836 x = +pathArray[0][1];
29837 y = +pathArray[0][2];
29838 mx = x;
29839 my = y;
29840 start++;
29841 res[0] = ['M', x, y];
29842 }
29843
29844 var dots,crz = pathArray.length===3 && pathArray[0][0]==='M' &&
29845 pathArray[1][0].toUpperCase()==='R' && pathArray[2][0].toUpperCase()==='Z';
29846
29847 for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {
29848 res.push(r = []);
29849 pa = pathArray[i];
29850 if (pa[0] !== String.prototype.toUpperCase.call(pa[0])) {
29851 r[0] = String.prototype.toUpperCase.call(pa[0]);
29852 switch (r[0]) {
29853 case 'A':
29854 r[1] = pa[1];
29855 r[2] = pa[2];
29856 r[3] = pa[3];
29857 r[4] = pa[4];
29858 r[5] = pa[5];
29859 r[6] = +(pa[6] + x);
29860 r[7] = +(pa[7] + y);
29861 break;
29862 case 'V':
29863 r[1] = +pa[1] + y;
29864 break;
29865 case 'H':
29866 r[1] = +pa[1] + x;
29867 break;
29868 case 'R':
29869 dots = [x, y].concat(pa.slice(1));
29870 for (var j = 2, jj = dots.length; j < jj; j++) {
29871 dots[j] = +dots[j] + x;
29872 dots[++j] = +dots[j] + y;
29873 }
29874 res.pop();
29875 res = res.concat(catmullRom2bezier(dots, crz));
29876 break;
29877 case 'M':
29878 mx = +pa[1] + x;
29879 my = +pa[2] + y;
29880 break;
29881 default:
29882 for (j = 1, jj = pa.length; j < jj; j++) {
29883 r[j] = +pa[j] + ((j % 2) ? x : y);
29884 }
29885 }
29886 } else if (pa[0] === 'R') {
29887 dots = [x, y].concat(pa.slice(1));
29888 res.pop();
29889 res = res.concat(catmullRom2bezier(dots, crz));

Callers 1

path2curveFunction · 0.85

Calls 1

catmullRom2bezierFunction · 0.85

Tested by

no test coverage detected