From 2323ca9b5f04c6bd3608ccc423a405b52a337956 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 10 Jan 2025 12:50:13 +0300 Subject: [PATCH] fix: get correct scale (#38) --- src/services/camera/CameraService.ts | 33 +++++++--------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/services/camera/CameraService.ts b/src/services/camera/CameraService.ts index 74968c6..7ba7309 100644 --- a/src/services/camera/CameraService.ts +++ b/src/services/camera/CameraService.ts @@ -173,32 +173,15 @@ export class CameraService extends Emitter { }); } - public getScaleRelativeDimensions(width: number, height: number) { - let scale = 1; - - if (width > height) { - const calculatedScale = Number((this.state.width / width).toFixed(3)); - - if (calculatedScale > this.state.scaleMax) { - scale = this.state.scaleMax; - } else if (calculatedScale < this.state.scaleMin) { - scale = this.state.scaleMin; - } else { - scale = calculatedScale; - } - } else { - const calculatedScale = Number((this.state.height / height).toFixed(3)); - - if (calculatedScale > this.state.scaleMax) { - scale = this.state.scaleMax; - } else if (calculatedScale < this.state.scaleMin) { - scale = this.state.scaleMin; - } else { - scale = calculatedScale; - } - } + public getScaleRelativeDimensionsBySide(size: number, axis: "width" | "height") { + return clamp(Number(this.state[axis] / size), this.state.scaleMin, this.state.scaleMax); + } - return scale; + public getScaleRelativeDimensions(width: number, height: number) { + return Math.min( + this.getScaleRelativeDimensionsBySide(width, "width"), + this.getScaleRelativeDimensionsBySide(height, "height") + ); } public getXYRelativeCenterDimensions(dimensions: TRect, scale: number) {