From c8ba452c84317b69979d855ab1a2ae8aef039218 Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Thu, 19 Jul 2018 13:21:19 -0700 Subject: [PATCH] screenshot plugin: Use Sprite ID for overlay image --- .../plugins/screenshot/ScreenshotOverlay.java | 34 +++++------------- .../plugins/screenshot/ScreenshotPlugin.java | 22 +++++++++++- .../plugins/screenshot/report_button.png | Bin 1309 -> 0 bytes 3 files changed, 29 insertions(+), 27 deletions(-) delete mode 100644 runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java index 69357d5bdb..07248ed58a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotOverlay.java @@ -31,16 +31,13 @@ import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; -import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.function.Consumer; -import javax.imageio.ImageIO; import javax.inject.Inject; -import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.MainBufferProvider; import net.runelite.client.ui.DrawManager; @@ -50,41 +47,26 @@ import net.runelite.client.ui.overlay.OverlayLayer; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPriority; -@Slf4j public class ScreenshotOverlay extends Overlay { private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MMM. dd, yyyy"); private static final int REPORT_BUTTON_X_OFFSET = 404; - private static BufferedImage REPORT_BUTTON; - - static - { - try - { - synchronized (ImageIO.class) - { - REPORT_BUTTON = ImageIO.read(ScreenshotPlugin.class.getResourceAsStream("report_button.png")); - } - } - catch (IOException e) - { - log.warn("Report button image failed to load", e); - } - } private final Client client; private final DrawManager drawManager; + private final ScreenshotPlugin plugin; private final Queue> consumers = new ConcurrentLinkedQueue<>(); @Inject - public ScreenshotOverlay(Client client, DrawManager drawManager) + public ScreenshotOverlay(Client client, DrawManager drawManager, ScreenshotPlugin plugin) { setPosition(OverlayPosition.DYNAMIC); setPriority(OverlayPriority.HIGH); setLayer(OverlayLayer.ABOVE_WIDGETS); this.client = client; this.drawManager = drawManager; + this.plugin = plugin; } @Override @@ -97,9 +79,9 @@ public class ScreenshotOverlay extends Overlay final MainBufferProvider bufferProvider = (MainBufferProvider) client.getBufferProvider(); final int imageHeight = ((BufferedImage) bufferProvider.getImage()).getHeight(); - final int y = imageHeight - REPORT_BUTTON.getHeight() - 1; + final int y = imageHeight - plugin.getReportButton().getHeight() - 1; - graphics.drawImage(REPORT_BUTTON, REPORT_BUTTON_X_OFFSET, y, null); + graphics.drawImage(plugin.getReportButton(), REPORT_BUTTON_X_OFFSET, y, null); graphics.setFont(FontManager.getRunescapeSmallFont()); FontMetrics fontMetrics = graphics.getFontMetrics(); @@ -108,8 +90,8 @@ public class ScreenshotOverlay extends Overlay final int dateWidth = fontMetrics.stringWidth(date); final int dateHeight = fontMetrics.getHeight(); - final int textX = REPORT_BUTTON_X_OFFSET + REPORT_BUTTON.getWidth() / 2 - dateWidth / 2; - final int textY = y + REPORT_BUTTON.getHeight() / 2 + dateHeight / 2; + final int textX = REPORT_BUTTON_X_OFFSET + plugin.getReportButton().getWidth() / 2 - dateWidth / 2; + final int textY = y + plugin.getReportButton().getHeight() / 2 + dateHeight / 2; graphics.setColor(Color.BLACK); graphics.drawString(date, textX + 1, textY + 1); @@ -130,7 +112,7 @@ public class ScreenshotOverlay extends Overlay public void queueForTimestamp(Consumer screenshotConsumer) { - if (REPORT_BUTTON == null) + if (plugin.getReportButton() == null) { return; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index 01e4ab47c4..b9e26db8dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -52,13 +52,17 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.imageio.ImageIO; import javax.inject.Inject; +import lombok.AccessLevel; +import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.Point; +import net.runelite.api.SpriteID; import net.runelite.api.WorldType; import net.runelite.api.events.ChatMessage; +import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; @@ -74,6 +78,7 @@ import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.Notifier; import static net.runelite.client.RuneLite.SCREENSHOT_DIR; import net.runelite.client.config.ConfigManager; +import net.runelite.client.game.SpriteManager; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -170,6 +175,12 @@ public class ScreenshotPlugin extends Plugin @Inject private KeyManager keyManager; + @Inject + private SpriteManager spriteManager; + + @Getter(AccessLevel.PACKAGE) + private BufferedImage reportButton; + private NavigationButton titleBarButton; private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.hotkey()) @@ -218,7 +229,6 @@ public class ScreenshotPlugin extends Plugin catch (IOException ex) { log.warn("Error opening screenshot dir", ex); - } }) .build()) @@ -240,6 +250,16 @@ public class ScreenshotPlugin extends Plugin keyManager.unregisterKeyListener(hotkeyListener); } + @Subscribe + public void onGameStateChanged(GameStateChanged event) + { + if (event.getGameState() == GameState.LOGGED_IN + && reportButton == null) + { + reportButton = spriteManager.getSprite(SpriteID.CHATBOX_REPORT_BUTTON, 0); + } + } + @Subscribe public void onGameTick(GameTick event) { diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png b/runelite-client/src/main/resources/net/runelite/client/plugins/screenshot/report_button.png deleted file mode 100644 index 34603643c6603f9f5635e278d54f46a65bbaba73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1309 zcmV+&1>*XNP);BC#$&A|xQ-NWjU8j0lMY2{ID?c$k`-H-7!5 zs=LQ)z*4DurmL&E>%FRO+h=F;`EC7a_vhVR_t&e>r&i_f`+K(!v3Vwc+^wg+_pI-2 zuJt{i>L0>BVaM9vKU*jMqQ31nC%@d>bic0ida&i~9c{@^HB67>wETU{96mzlfds@ z#tkr&Z$En8eZ9IG+Hame>t?{2fyV@~2C&?m#{lQ~N5G=BF#r)5Igk)!?H>!OH)a6- z^huilxa;Nq@`ElZm3uMZW!qBVRHtU%DG9SA6Hg__uFE46vL4`B*1fr2bzfdxb~hL2 z-5Dz_3F5IqDe0(v?^)S@Y#BR7Z;7vHekr4I&H*?R1I}c3^>hI5?!Aj{Dw(CsI|bt( z8<1l&Mv1v}4LY`jG_1ohj?PX#2a$2eIxCsmUcPubW}bn8!_hP7olOx_Y5`DoEoHNo zn1|6$WDD=@QgABraJ4F(nR@BL<%H++K7a=UH=K8U)&acRCrRcV4$0b0=4^ZH_&Ew>qOAm2lv&sH*OaY)rZd8_MIqjZ=S7&tg~`yz$KZ7 ztYd>YR_>kaZhGxKjO!*f0GfebX0c8Vur%O}8(1$34&|zK=XoGR>xgXN?9#r;4^5kV zEhqtJx6SFof{FTFM!y3+1R&|cl~Fl)2yF2=Rk9HUX$b(F5wM}QasaR$y=>%!!2)0q zyIBG_7d-wl$X`@bmbTeaWvQ-!<>tWGJY(8$4N)*^gX9IecHS}eb3l2Zai-b%X25;5 zTDibY;MFop8JH^_U@_X&p+P z)?@&We>cl9=NPutvXNQIwVy?U0M?d*TeFrN5G9H9d7TWBT|%~FmT{&jaGYfTZkBll z9)hrB(Ye4O*rl6JKcm25lO4}^iTmI3t2 zq*pGHaR71xF9$}F;@3eS$6yZQ*9UzL;55fJ!~hTrm5F%9mDvjhY-!*)W7%Jl2|^Cu z&kT&wXQG1`0I0FgS9}I%(~ob)pSMhM*~Wl{XP$k`hyth^VCHCWy9XKwsk#`o?`V6BiV?0 TdRyN>00000NkvXXu0mjfU?PFu