Fixed applet resize and bouncing
This commit is contained in:
@@ -28,7 +28,6 @@ package net.runelite.client;
|
||||
import java.applet.Applet;
|
||||
import java.applet.AppletContext;
|
||||
import java.applet.AppletStub;
|
||||
import java.awt.Dimension;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
@@ -83,10 +82,7 @@ public class RSStub implements AppletStub
|
||||
@Override
|
||||
public void appletResize(int width, int height)
|
||||
{
|
||||
Dimension d = new Dimension(width, height);
|
||||
|
||||
app.setSize(d);
|
||||
app.setPreferredSize(d);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -80,6 +80,10 @@ public class RuneLite
|
||||
|
||||
public static void main(String[] args) throws Exception
|
||||
{
|
||||
// Do not fill in background on repaint. Reduces flickering when
|
||||
// the applet is resized.
|
||||
System.setProperty("sun.awt.noerasebackground", "true");
|
||||
|
||||
OptionParser parser = new OptionParser();
|
||||
parser.accepts("developer-mode");
|
||||
options = parser.parse(args);
|
||||
|
||||
@@ -27,8 +27,7 @@ package net.runelite.client.ui;
|
||||
import java.applet.Applet;
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ComponentListener;
|
||||
import java.awt.BorderLayout;
|
||||
import javax.swing.JPanel;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.ClientLoader;
|
||||
@@ -36,7 +35,7 @@ import net.runelite.client.RuneLite;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
final class ClientPanel extends JPanel implements ComponentListener
|
||||
final class ClientPanel extends JPanel
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(ClientPanel.class);
|
||||
|
||||
@@ -49,16 +48,16 @@ final class ClientPanel extends JPanel implements ComponentListener
|
||||
setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||
setLayout(new BorderLayout());
|
||||
setBackground(Color.black);
|
||||
this.addComponentListener(this);
|
||||
|
||||
ClientLoader loader = new ClientLoader();
|
||||
|
||||
rs = loader.load();
|
||||
rs.setSize(this.getSize());
|
||||
rs.setLayout(null);
|
||||
rs.init();
|
||||
rs.start();
|
||||
this.add(rs);
|
||||
add(rs, BorderLayout.CENTER);
|
||||
|
||||
Client client = null;
|
||||
try
|
||||
@@ -74,30 +73,4 @@ final class ClientPanel extends JPanel implements ComponentListener
|
||||
RuneLite.setClient(client);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e)
|
||||
{
|
||||
if (rs != null)
|
||||
{
|
||||
rs.setLocation(0, 0);
|
||||
rs.setSize(this.getSize());
|
||||
rs.setPreferredSize(this.getPreferredSize());
|
||||
}
|
||||
this.setPreferredSize(this.getSize());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentMoved(ComponentEvent e)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e)
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
public void componentHidden(ComponentEvent e)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ package net.runelite.inject.callbacks;
|
||||
|
||||
import java.awt.Canvas;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.image.BufferedImage;
|
||||
import net.runelite.client.RuneLite;
|
||||
import net.runelite.client.ui.overlay.OverlayRenderer;
|
||||
@@ -45,8 +47,8 @@ public class RSCanvasCallback
|
||||
{
|
||||
if (canvas.getHeight() != clientBuffer.getHeight() || canvas.getWidth() != clientBuffer.getWidth())
|
||||
{
|
||||
clientBuffer = new BufferedImage(canvas.getWidth(), canvas.getHeight(), BufferedImage.TYPE_INT_RGB);
|
||||
gameBuffer = new BufferedImage(canvas.getWidth(), canvas.getHeight(), BufferedImage.TYPE_INT_RGB);
|
||||
clientBuffer = resize(clientBuffer, canvas.getWidth(), canvas.getHeight());
|
||||
gameBuffer = resize(gameBuffer, canvas.getWidth(), canvas.getHeight());
|
||||
}
|
||||
|
||||
Graphics clientGraphics = clientBuffer.getGraphics();
|
||||
@@ -74,4 +76,16 @@ public class RSCanvasCallback
|
||||
|
||||
return gameBuffer.getGraphics();
|
||||
}
|
||||
|
||||
private static BufferedImage resize(BufferedImage img, int newWidth, int newHeight)
|
||||
{
|
||||
Image tmp = img.getScaledInstance(newWidth, newHeight, Image.SCALE_FAST);
|
||||
BufferedImage bufferedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
Graphics2D graphics = bufferedImage.createGraphics();
|
||||
graphics.drawImage(tmp, 0, 0, null);
|
||||
graphics.dispose();
|
||||
|
||||
return bufferedImage;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user