MCPcopy
hub / github.com/adobe-webplatform/Snap.svg / pathToAbsolute

Function pathToAbsolute

src/path.js:612–736  ·  view source on GitHub ↗
(pathArray)

Source from the content-addressed store, hash-verified

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 }

Callers 1

path2curveFunction · 0.70

Calls 5

pathsFunction · 0.70
pathCloneFunction · 0.70
isFunction · 0.70
catmullRom2bezierFunction · 0.70
ellipsePathFunction · 0.70

Tested by

no test coverage detected