(e, layerdict)
| 921 | } |
| 922 | |
| 923 | function handlePointerMove(e, layerdict) { |
| 924 | if (!layerdict.pointerStates.hasOwnProperty(e.pointerId)) { |
| 925 | return; |
| 926 | } |
| 927 | e.preventDefault(); |
| 928 | e.stopPropagation(); |
| 929 | |
| 930 | if (!e.hasOwnProperty("offsetX")) { |
| 931 | // The polyfill doesn't set this properly |
| 932 | e.offsetX = e.pageX - e.currentTarget.offsetLeft; |
| 933 | e.offsetY = e.pageY - e.currentTarget.offsetTop; |
| 934 | } |
| 935 | |
| 936 | var thisPtr = layerdict.pointerStates[e.pointerId]; |
| 937 | |
| 938 | var dx = e.offsetX - thisPtr.lastX; |
| 939 | var dy = e.offsetY - thisPtr.lastY; |
| 940 | |
| 941 | // If this number is low on pointer up, we count the action as a click |
| 942 | thisPtr.distanceTravelled += Math.abs(dx) + Math.abs(dy); |
| 943 | |
| 944 | if (Object.keys(layerdict.pointerStates).length == 1) { |
| 945 | // This is a simple drag |
| 946 | layerdict.transform.panx += devicePixelRatio * dx / layerdict.transform.zoom; |
| 947 | layerdict.transform.pany += devicePixelRatio * dy / layerdict.transform.zoom; |
| 948 | } else if (Object.keys(layerdict.pointerStates).length == 2) { |
| 949 | var otherPtr = Object.values(layerdict.pointerStates).filter((ptr) => ptr != thisPtr)[0]; |
| 950 | |
| 951 | var oldDist = Math.sqrt(Math.pow(thisPtr.lastX - otherPtr.lastX, 2) + Math.pow(thisPtr.lastY - otherPtr.lastY, 2)); |
| 952 | var newDist = Math.sqrt(Math.pow(e.offsetX - otherPtr.lastX, 2) + Math.pow(e.offsetY - otherPtr.lastY, 2)); |
| 953 | |
| 954 | var scaleFactor = newDist / oldDist; |
| 955 | |
| 956 | if (scaleFactor != NaN) { |
| 957 | layerdict.transform.zoom *= scaleFactor; |
| 958 | |
| 959 | var zoomd = (1 - scaleFactor) / layerdict.transform.zoom; |
| 960 | layerdict.transform.panx += devicePixelRatio * otherPtr.lastX * zoomd; |
| 961 | layerdict.transform.pany += devicePixelRatio * otherPtr.lastY * zoomd; |
| 962 | } |
| 963 | } |
| 964 | |
| 965 | thisPtr.lastX = e.offsetX; |
| 966 | thisPtr.lastY = e.offsetY; |
| 967 | |
| 968 | if (settings.redrawOnDrag) { |
| 969 | redrawCanvas(layerdict); |
| 970 | } |
| 971 | } |
| 972 | |
| 973 | function handleMouseWheel(e, layerdict) { |
| 974 | e.preventDefault(); |
no test coverage detected