(pathArray)
| 29830 | } |
| 29831 | |
| 29832 | function 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)); |
no test coverage detected