@disjukr/croquis-js
Version:
drawing tool library
70 lines (69 loc) • 2.78 kB
JavaScript
;
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);
}