From c852e877d8c5ac2bcff6d5b900cc2d0458643321 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 1 Apr 2025 23:03:44 +0200 Subject: [PATCH] Change `Util.applyInverseTransform` to use the point-argument as an in/out parameter This will help reduce the total number of Array allocations, which cannot hurt. --- src/display/display_utils.js | 4 +++- src/shared/util.js | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/display/display_utils.js b/src/display/display_utils.js index fb1beb4d6..c554f0661 100644 --- a/src/display/display_utils.js +++ b/src/display/display_utils.js @@ -287,7 +287,9 @@ class PageViewport { * @see {@link convertToViewportPoint} */ convertToPdfPoint(x, y) { - return Util.applyInverseTransform([x, y], this.transform); + const p = [x, y]; + Util.applyInverseTransform(p, this.transform); + return p; } } diff --git a/src/shared/util.js b/src/shared/util.js index 267816a8b..56a4feda7 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -758,10 +758,10 @@ class Util { } static applyInverseTransform(p, m) { + const [p0, p1] = p; const d = m[0] * m[3] - m[1] * m[2]; - const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; - const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; - return [xt, yt]; + p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d; } // Applies the transform to the rectangle and finds the minimum axially