From f65909dc06b845fc4634fac1ef389dd0066ac1da Mon Sep 17 00:00:00 2001 From: Pazaz Date: Fri, 22 Apr 2022 19:51:33 -0400 Subject: [PATCH] Change canvas scaling to read from the current device --- client/src/main/java/GameShell.java | 45 +++++++++------------------- signlink/src/main/java/SignLink.java | 2 ++ 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/client/src/main/java/GameShell.java b/client/src/main/java/GameShell.java index 208b6f1..47151a7 100644 --- a/client/src/main/java/GameShell.java +++ b/client/src/main/java/GameShell.java @@ -229,22 +229,6 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene container.add(canvas); canvas.setSize(canvasWidth, canvasHeight); canvas.setVisible(true); - Graphics g = canvas.getGraphics(); - if (g != null) { - if (g instanceof Graphics2D) { - canvasScale = ((Graphics2D) g).getTransform().getScaleX(); - } else { - canvasScale = 1.0d; - } - if (Math.floor(canvasScale) != canvasScale) { - subpixelX = 0.0d; - subpixelY = -0.5d; - } else { - subpixelX = 0.5d; - subpixelY = 0.5d; - } - System.out.println("Scaling factor: " + canvasScale + "x, using fractional scaling"); - } if (container == frame) { @Pc(66) Insets insets = frame.getInsets(); canvas.setLocation(leftMargin + insets.left, insets.top + topMargin); @@ -383,6 +367,19 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene } } + public GraphicsDevice getCurrentDevice() { + GraphicsConfiguration config = frame.getGraphicsConfiguration(); + GraphicsDevice myScreen = config.getDevice(); + GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); + GraphicsDevice[] allScreens = env.getScreenDevices(); + for (int i = 0; i < allScreens.length; i++) { + if (allScreens[i].equals(myScreen)) { + return allScreens[i]; + } + } + return null; + } + @OriginalMember(owner = "client!rc", name = "e", descriptor = "(I)V") private void mainRedrawWrapper() { @Pc(2) long now = MonotonicClock.currentTimeMillis(); @@ -398,21 +395,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene partialRedraws -= 50; canvas.setSize(canvasWidth, canvasHeight); canvas.setVisible(true); - Graphics g = canvas.getGraphics(); - if (g != null) { - if (g instanceof Graphics2D) { - canvasScale = ((Graphics2D) g).getTransform().getScaleX(); - if (Math.floor(canvasScale) != canvasScale) { - subpixelX = 0.0d; - subpixelY = -0.5d; - } else { - subpixelX = 0.5d; - subpixelY = 0.5d; - } - } else { - canvasScale = 1.0; - } - } + canvasScale = getCurrentDevice().getDefaultConfiguration().getDefaultTransform().getScaleX(); if (frame != null && fullScreenFrame == null) { @Pc(84) Insets insets = frame.getInsets(); canvas.setLocation(insets.left + leftMargin, topMargin + insets.top); diff --git a/signlink/src/main/java/SignLink.java b/signlink/src/main/java/SignLink.java index df1655d..02a1e1c 100644 --- a/signlink/src/main/java/SignLink.java +++ b/signlink/src/main/java/SignLink.java @@ -1,4 +1,5 @@ import java.applet.Applet; +import java.awt.Color; import java.awt.Component; import java.awt.EventQueue; import java.awt.Frame; @@ -375,6 +376,7 @@ public final class SignLink implements Runnable { @Pc(168) Frame frame = new Frame("Jagex Full Screen"); request.result = frame; frame.setResizable(false); + frame.setBackground(Color.black); this.fullScreenManager.enter(request.intArg1 & 0xFFFF, request.intArg1 >> 16, request.intArg2 & 0xFFFF, frame, request.intArg2 >>> 16); } else if (type == 7) { this.fullScreenManager.exit();