package rs.macro.internal.ext; import rs.macro.RSMacro; import java.awt.*; import java.awt.image.BufferedImage; /** * @author Tyler Sedlar */ public class RSCanvas extends Canvas { public final RSMacro app; public final Canvas original; public final BufferedImage raw; public final BufferedImage backBuffer; public RSCanvas(RSMacro app, Canvas original) { this.app = app; this.raw = new BufferedImage(app.size.width, app.size.height, BufferedImage.TYPE_INT_ARGB); this.backBuffer = new BufferedImage(app.size.width, app.size.height, BufferedImage.TYPE_INT_ARGB); this.original = original; } @Override public Graphics getGraphics() { Graphics g = original.getGraphics(); Graphics2D paint = backBuffer.createGraphics(); paint.drawImage(raw, 0, 0, null); try { app.render(paint); } catch (Exception ignored) { ignored.printStackTrace(); } paint.dispose(); g.drawImage(backBuffer, 0, 0, null); g.dispose(); return raw.createGraphics(); } @Override public int hashCode() { return original.hashCode(); } }