screenshot plugin: Use Sprite ID for overlay image
This commit is contained in:
@@ -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<Consumer<Image>> 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<Image> screenshotConsumer)
|
||||
{
|
||||
if (REPORT_BUTTON == null)
|
||||
if (plugin.getReportButton() == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 KiB |
Reference in New Issue
Block a user