From 11b01218149bb919c96ddcac1c9fba31e29b0c25 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Fri, 9 Nov 2018 16:37:37 +0100 Subject: [PATCH] Properly limit scaling factor for stretched resizable Instead of limiting width and height when stretching to fixed mode size, limit scaling factor to fixed mode size to prevent improportional stretching in resizable mode. Signed-off-by: Tomas Slusny --- .../net/runelite/mixins/StretchedModeMixin.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMixin.java index 376c865844..6e24a8f701 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMixin.java @@ -122,8 +122,18 @@ public abstract class StretchedModeMixin implements RSClient int parentWidth = canvasParent.getWidth(); int parentHeight = canvasParent.getHeight(); - int newWidth = Math.max(Constants.GAME_FIXED_WIDTH, (int) (parentWidth / scalingFactor)); - int newHeight = Math.max(Constants.GAME_FIXED_HEIGHT, (int) (parentHeight / scalingFactor)); + int newWidth = (int) (parentWidth / scalingFactor); + int newHeight = (int) (parentHeight / scalingFactor); + + if (newWidth < Constants.GAME_FIXED_WIDTH || newHeight < Constants.GAME_FIXED_HEIGHT) + { + double scalingFactorW = (double)parentWidth / Constants.GAME_FIXED_WIDTH; + double scalingFactorH = (double)parentHeight / Constants.GAME_FIXED_HEIGHT; + double scalingFactor = Math.min(scalingFactorW, scalingFactorH); + + newWidth = (int) (parentWidth / scalingFactor); + newHeight = (int) (parentHeight / scalingFactor); + } cachedRealDimensions = new Dimension(newWidth, newHeight); }