(pathArray)
| 610 | return res; |
| 611 | } |
| 612 | function pathToAbsolute(pathArray) { |
| 613 | var pth = paths(pathArray); |
| 614 | if (pth.abs) { |
| 615 | return pathClone(pth.abs); |
| 616 | } |
| 617 | if (!is(pathArray, "array") || !is(pathArray && pathArray[0], "array")) { // rough assumption |
| 618 | pathArray = Snap.parsePathString(pathArray); |
| 619 | } |
| 620 | if (!pathArray || !pathArray.length) { |
| 621 | return [["M", 0, 0]]; |
| 622 | } |
| 623 | var res = [], |
| 624 | x = 0, |
| 625 | y = 0, |
| 626 | mx = 0, |
| 627 | my = 0, |
| 628 | start = 0, |
| 629 | pa0; |
| 630 | if (pathArray[0][0] == "M") { |
| 631 | x = +pathArray[0][1]; |
| 632 | y = +pathArray[0][2]; |
| 633 | mx = x; |
| 634 | my = y; |
| 635 | start++; |
| 636 | res[0] = ["M", x, y]; |
| 637 | } |
| 638 | var crz = pathArray.length == 3 && |
| 639 | pathArray[0][0] == "M" && |
| 640 | pathArray[1][0].toUpperCase() == "R" && |
| 641 | pathArray[2][0].toUpperCase() == "Z"; |
| 642 | for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) { |
| 643 | res.push(r = []); |
| 644 | pa = pathArray[i]; |
| 645 | pa0 = pa[0]; |
| 646 | if (pa0 != pa0.toUpperCase()) { |
| 647 | r[0] = pa0.toUpperCase(); |
| 648 | switch (r[0]) { |
| 649 | case "A": |
| 650 | r[1] = pa[1]; |
| 651 | r[2] = pa[2]; |
| 652 | r[3] = pa[3]; |
| 653 | r[4] = pa[4]; |
| 654 | r[5] = pa[5]; |
| 655 | r[6] = +pa[6] + x; |
| 656 | r[7] = +pa[7] + y; |
| 657 | break; |
| 658 | case "V": |
| 659 | r[1] = +pa[1] + y; |
| 660 | break; |
| 661 | case "H": |
| 662 | r[1] = +pa[1] + x; |
| 663 | break; |
| 664 | case "R": |
| 665 | var dots = [x, y].concat(pa.slice(1)); |
| 666 | for (var j = 2, jj = dots.length; j < jj; j++) { |
| 667 | dots[j] = +dots[j] + x; |
| 668 | dots[++j] = +dots[j] + y; |
| 669 | } |
no test coverage detected