UNPKG

@disjukr/croquis-js

Version:
70 lines (69 loc) 2.78 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var id = function (x) { return x; }; function getStylusState(e, transformXy) { if (transformXy === void 0) { transformXy = id; } return __assign(__assign({}, transformXy({ x: e.x, y: e.y })), { pressure: e.pointerType === 'mouse' ? 1 : e.pressure, tangentialPressure: e.tangentialPressure, tiltX: e.tiltX, tiltY: e.tiltY, twist: e.twist }); } exports.getStylusState = getStylusState; function createStylusState() { return { x: 0, y: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, }; } exports.createStylusState = createStylusState; var dummyStylusState = createStylusState(); function createStylusStates(length, prototype) { if (prototype === void 0) { prototype = dummyStylusState; } return Array.from({ length: length }, function () { return cloneStylusState(prototype); }); } exports.createStylusStates = createStylusStates; function cloneStylusState(stylusState) { var x = stylusState.x, y = stylusState.y, pressure = stylusState.pressure, tangentialPressure = stylusState.tangentialPressure, tiltX = stylusState.tiltX, tiltY = stylusState.tiltY, twist = stylusState.twist; return { x: x, y: y, pressure: pressure, tangentialPressure: tangentialPressure, tiltX: tiltX, tiltY: tiltY, twist: twist }; } exports.cloneStylusState = cloneStylusState; function copyStylusState(dst, src) { dst.x = src.x; dst.y = src.y; dst.pressure = src.pressure; dst.tangentialPressure = src.tangentialPressure; dst.tiltX = src.tiltX; dst.tiltY = src.tiltY; dst.twist = src.twist; } exports.copyStylusState = copyStylusState; function interpolateStylusState(target, to, t) { target.x = lerp(target.x, to.x, t); target.y = lerp(target.y, to.y, t); target.pressure = lerp(target.pressure, to.pressure, t); target.tangentialPressure = lerp(target.tangentialPressure, to.tangentialPressure, t); target.tiltX = lerp(target.tiltX, to.tiltX, t); target.tiltY = lerp(target.tiltY, to.tiltY, t); target.twist = lerpAngle(target.twist, to.twist, t); } exports.interpolateStylusState = interpolateStylusState; function lerp(a, b, t) { return a + (b - a) * t; } function lerpAngle(a, b, t) { var c = ((((b - a) % 360) + 540) % 360) - 180; return a + ((c * t) % 360); }