MCPcopy Create free account
hub / github.com/openscopeproject/InteractiveHtmlBom / handlePointerMove

Function handlePointerMove

InteractiveHtmlBom/web/render.js:923–971  ·  view source on GitHub ↗
(e, layerdict)

Source from the content-addressed store, hash-verified

921}
922
923function 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
973function handleMouseWheel(e, layerdict) {
974 e.preventDefault();

Callers 1

addMouseHandlersFunction · 0.85

Calls 1

redrawCanvasFunction · 0.85

Tested by

no test coverage detected