@visactor/vrender-animate
Version:
This module provides a graph-based animation system for VRender.
107 lines (102 loc) • 7.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.commonInterpolateUpdate = exports.interpolateUpdateStore = exports.InterpolateUpdateStore = void 0;
const vrender_core_1 = require("@visactor/vrender-core"), number_1 = require("./number");
class InterpolateUpdateStore {
constructor() {
this.opacity = (key, from, to, ratio, step, target) => {
target.attribute.opacity = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.baseOpacity = (key, from, to, ratio, step, target) => {
target.attribute.baseOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.fillOpacity = (key, from, to, ratio, step, target) => {
target.attribute.fillOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.strokeOpacity = (key, from, to, ratio, step, target) => {
target.attribute.strokeOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.zIndex = (key, from, to, ratio, step, target) => {
target.attribute.zIndex = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.backgroundOpacity = (key, from, to, ratio, step, target) => {
target.attribute.backgroundOpacity = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.shadowOffsetX = (key, from, to, ratio, step, target) => {
target.attribute.shadowOffsetX = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.shadowOffsetY = (key, from, to, ratio, step, target) => {
target.attribute.shadowOffsetY = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.shadowBlur = (key, from, to, ratio, step, target) => {
target.attribute.shadowBlur = (0, number_1.interpolateNumber)(from, to, ratio);
}, this.fill = (key, from, to, ratio, step, target) => {
target.attribute.fill = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1);
}, this.fillPure = (key, from, to, ratio, step, target) => {
target.attribute.fill = step.fromParsedProps.fill ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.fill, step.toParsedProps.fill, ratio) : step.toParsedProps.fill;
}, this.stroke = (key, from, to, ratio, step, target) => {
target.attribute.stroke = (0, vrender_core_1.interpolateColor)(from, to, ratio, !1);
}, this.strokePure = (key, from, to, ratio, step, target) => {
target.attribute.stroke = step.fromParsedProps.stroke ? (0, vrender_core_1.interpolatePureColorArrayToStr)(step.fromParsedProps.stroke, step.toParsedProps.stroke, ratio) : step.toParsedProps.stroke;
}, this.width = (key, from, to, ratio, step, target) => {
target.attribute.width = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.height = (key, from, to, ratio, step, target) => {
target.attribute.height = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.x = (key, from, to, ratio, step, target) => {
target.attribute.x = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.y = (key, from, to, ratio, step, target) => {
target.attribute.y = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.dx = (key, from, to, ratio, step, target) => {
target.attribute.dx = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.dy = (key, from, to, ratio, step, target) => {
target.attribute.dy = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.angle = (key, from, to, ratio, step, target) => {
target.attribute.angle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.scaleX = (key, from, to, ratio, step, target) => {
target.attribute.scaleX = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.scaleY = (key, from, to, ratio, step, target) => {
target.attribute.scaleY = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag(),
target.addUpdatePositionTag();
}, this.lineWidth = (key, from, to, ratio, step, target) => {
target.attribute.lineWidth = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.startAngle = (key, from, to, ratio, step, target) => {
target.attribute.startAngle = (0, number_1.interpolateNumber)(from, to, ratio),
target.addUpdateBoundTag();
}, this.endAngle = (key, from, to, ratio, step, target) => {
target.attribute.endAngle = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.radius = (key, from, to, ratio, step, target) => {
target.attribute.radius = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.outerRadius = (key, from, to, ratio, step, target) => {
target.attribute.outerRadius = (0, number_1.interpolateNumber)(from, to, ratio),
target.addUpdateBoundTag();
}, this.innerRadius = (key, from, to, ratio, step, target) => {
target.attribute.innerRadius = (0, number_1.interpolateNumber)(from, to, ratio),
target.addUpdateBoundTag();
}, this.size = (key, from, to, ratio, step, target) => {
target.attribute.size = (0, number_1.interpolateNumber)(from, to, ratio), target.addUpdateBoundTag();
}, this.points = (key, from, to, ratio, step, target) => {
target.attribute.points = (0, vrender_core_1.pointsInterpolation)(from, to, ratio),
target.addUpdateBoundTag();
};
}
}
function commonInterpolateUpdate(key, from, to, ratio, step, target) {
if (Number.isFinite(to) && Number.isFinite(from)) return target.attribute[key] = from + (to - from) * ratio,
!0;
if (Array.isArray(to) && Array.isArray(from) && to.length === from.length) {
const nextList = [];
let valid = !0;
for (let i = 0; i < to.length; i++) {
const v = from[i], val = v + (to[i] - v) * ratio;
if (!Number.isFinite(val)) {
valid = !1;
break;
}
nextList.push(val);
}
return valid && (target.attribute[key] = nextList), !0;
}
return !1;
}
exports.InterpolateUpdateStore = InterpolateUpdateStore, exports.interpolateUpdateStore = new InterpolateUpdateStore,
exports.commonInterpolateUpdate = commonInterpolateUpdate;
//# sourceMappingURL=store.js.map