UNPKG

1.83 kBJavaScriptView Raw
1import { getRangeValue } from "../Utils/NumberUtils";
2import { isSsr } from "../Utils/Utils";
3export class Retina {
4 constructor(container) {
5 this.container = container;
6 }
7 init() {
8 const container = this.container, options = container.actualOptions;
9 this.pixelRatio = !options.detectRetina || isSsr() ? 1 : window.devicePixelRatio;
10 this.reduceFactor = 1;
11 const ratio = this.pixelRatio;
12 if (container.canvas.element) {
13 const element = container.canvas.element;
14 container.canvas.size.width = element.offsetWidth * ratio;
15 container.canvas.size.height = element.offsetHeight * ratio;
16 }
17 const particles = options.particles;
18 this.attractDistance = getRangeValue(particles.move.attract.distance) * ratio;
19 this.sizeAnimationSpeed = getRangeValue(particles.size.animation.speed) * ratio;
20 this.maxSpeed = getRangeValue(particles.move.gravity.maxSpeed) * ratio;
21 }
22 initParticle(particle) {
23 const options = particle.options, ratio = this.pixelRatio, moveDistance = options.move.distance, props = particle.retina;
24 props.attractDistance = getRangeValue(options.move.attract.distance) * ratio;
25 props.moveDrift = getRangeValue(options.move.drift) * ratio;
26 props.moveSpeed = getRangeValue(options.move.speed) * ratio;
27 props.sizeAnimationSpeed = getRangeValue(options.size.animation.speed) * ratio;
28 const maxDistance = props.maxDistance;
29 maxDistance.horizontal = moveDistance.horizontal !== undefined ? moveDistance.horizontal * ratio : undefined;
30 maxDistance.vertical = moveDistance.vertical !== undefined ? moveDistance.vertical * ratio : undefined;
31 props.maxSpeed = getRangeValue(options.move.gravity.maxSpeed) * ratio;
32 }
33}