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.Applet;
|
||||||
import java.applet.AppletContext;
|
import java.applet.AppletContext;
|
||||||
import java.applet.AppletStub;
|
import java.applet.AppletStub;
|
||||||
import java.awt.Dimension;
|
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
|
||||||
@@ -83,10 +82,7 @@ public class RSStub implements AppletStub
|
|||||||
@Override
|
@Override
|
||||||
public void appletResize(int width, int height)
|
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
|
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();
|
OptionParser parser = new OptionParser();
|
||||||
parser.accepts("developer-mode");
|
parser.accepts("developer-mode");
|
||||||
options = parser.parse(args);
|
options = parser.parse(args);
|
||||||
|
|||||||
@@ -27,8 +27,7 @@ package net.runelite.client.ui;
|
|||||||
import java.applet.Applet;
|
import java.applet.Applet;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.event.ComponentEvent;
|
import java.awt.BorderLayout;
|
||||||
import java.awt.event.ComponentListener;
|
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.client.ClientLoader;
|
import net.runelite.client.ClientLoader;
|
||||||
@@ -36,7 +35,7 @@ import net.runelite.client.RuneLite;
|
|||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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);
|
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));
|
setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||||
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||||
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
|
||||||
|
setLayout(new BorderLayout());
|
||||||
setBackground(Color.black);
|
setBackground(Color.black);
|
||||||
this.addComponentListener(this);
|
|
||||||
|
|
||||||
ClientLoader loader = new ClientLoader();
|
ClientLoader loader = new ClientLoader();
|
||||||
|
|
||||||
rs = loader.load();
|
rs = loader.load();
|
||||||
rs.setSize(this.getSize());
|
rs.setLayout(null);
|
||||||
rs.init();
|
rs.init();
|
||||||
rs.start();
|
rs.start();
|
||||||
this.add(rs);
|
add(rs, BorderLayout.CENTER);
|
||||||
|
|
||||||
Client client = null;
|
Client client = null;
|
||||||
try
|
try
|
||||||
@@ -74,30 +73,4 @@ final class ClientPanel extends JPanel implements ComponentListener
|
|||||||
RuneLite.setClient(client);
|
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.Canvas;
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.awt.Graphics2D;
|
||||||
|
import java.awt.Image;
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import net.runelite.client.RuneLite;
|
import net.runelite.client.RuneLite;
|
||||||
import net.runelite.client.ui.overlay.OverlayRenderer;
|
import net.runelite.client.ui.overlay.OverlayRenderer;
|
||||||
@@ -45,8 +47,8 @@ public class RSCanvasCallback
|
|||||||
{
|
{
|
||||||
if (canvas.getHeight() != clientBuffer.getHeight() || canvas.getWidth() != clientBuffer.getWidth())
|
if (canvas.getHeight() != clientBuffer.getHeight() || canvas.getWidth() != clientBuffer.getWidth())
|
||||||
{
|
{
|
||||||
clientBuffer = new BufferedImage(canvas.getWidth(), canvas.getHeight(), BufferedImage.TYPE_INT_RGB);
|
clientBuffer = resize(clientBuffer, canvas.getWidth(), canvas.getHeight());
|
||||||
gameBuffer = new BufferedImage(canvas.getWidth(), canvas.getHeight(), BufferedImage.TYPE_INT_RGB);
|
gameBuffer = resize(gameBuffer, canvas.getWidth(), canvas.getHeight());
|
||||||
}
|
}
|
||||||
|
|
||||||
Graphics clientGraphics = clientBuffer.getGraphics();
|
Graphics clientGraphics = clientBuffer.getGraphics();
|
||||||
@@ -74,4 +76,16 @@ public class RSCanvasCallback
|
|||||||
|
|
||||||
return gameBuffer.getGraphics();
|
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