1 | import { getRangeValue } from "../Utils/NumberUtils";
|
2 | import { isSsr } from "../Utils/Utils";
|
3 | export 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 | }
|