From a1a860e0f4ed903e7bba589491081aeda5f5b048 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Wed, 3 Jul 2019 12:16:11 -0600 Subject: [PATCH] runelite-client: Use BufferedImage where applicable All of these places would crash at runtime should they be given a non-buffered image due to calling methods without a null ImageObserver --- .../net/runelite/client/plugins/cooking/FermentTimer.java | 4 ++-- .../client/plugins/statusbars/StatusBarsOverlay.java | 8 ++++---- .../client/ui/overlay/components/InfoBoxComponent.java | 4 ++-- .../net/runelite/client/ui/overlay/infobox/InfoBox.java | 8 ++++---- .../client/ui/overlay/infobox/InfoBoxManager.java | 5 ++--- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cooking/FermentTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/cooking/FermentTimer.java index 5312414ad1..84d7033f57 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cooking/FermentTimer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cooking/FermentTimer.java @@ -25,7 +25,7 @@ package net.runelite.client.plugins.cooking; import java.awt.Color; -import java.awt.Image; +import java.awt.image.BufferedImage; import java.time.Duration; import java.time.Instant; import net.runelite.client.plugins.Plugin; @@ -37,7 +37,7 @@ final class FermentTimer extends InfoBox private Instant fermentTime; - FermentTimer(Image image, Plugin plugin) + FermentTimer(BufferedImage image, Plugin plugin) { super(image, plugin); reset(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java index e92251bec0..529fa250a4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java @@ -27,7 +27,7 @@ package net.runelite.client.plugins.statusbars; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; -import java.awt.Image; +import java.awt.image.BufferedImage; import javax.inject.Inject; import net.runelite.api.Client; import net.runelite.api.MenuEntry; @@ -83,7 +83,7 @@ class StatusBarsOverlay extends Overlay private final TextComponent textComponent = new TextComponent(); private final ItemStatChangesService itemStatService; - private final Image prayerImage; + private final BufferedImage prayerImage; @Inject private StatusBarsOverlay(Client client, StatusBarsConfig config, SkillIconManager skillIconManager, ItemStatChangesService itemstatservice) @@ -225,7 +225,7 @@ class StatusBarsOverlay extends Overlay if (config.enableSkillIcon() || config.enableCounter()) { - final Image healthImage = skillIconManager.getSkillImage(Skill.HITPOINTS, true); + final BufferedImage healthImage = skillIconManager.getSkillImage(Skill.HITPOINTS, true); final int counterHealth = client.getBoostedSkillLevel(Skill.HITPOINTS); final int counterPrayer = client.getBoostedSkillLevel(Skill.PRAYER); final String counterHealthText = Integer.toString(counterHealth); @@ -294,7 +294,7 @@ class StatusBarsOverlay extends Overlay return (int) Math.round(ratio * size); } - private void renderIconsAndCounters(Graphics2D graphics, int x, int y, Image image, String counterText, int counterPadding) + private void renderIconsAndCounters(Graphics2D graphics, int x, int y, BufferedImage image, String counterText, int counterPadding) { final int widthOfCounter = graphics.getFontMetrics().stringWidth(counterText); final int centerText = (WIDTH - PADDING) / 2 - (widthOfCounter / 2); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/InfoBoxComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/InfoBoxComponent.java index d8f7841099..a72d13f73d 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/InfoBoxComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/InfoBoxComponent.java @@ -29,9 +29,9 @@ import java.awt.Color; import java.awt.Dimension; import java.awt.FontMetrics; import java.awt.Graphics2D; -import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; +import java.awt.image.BufferedImage; import lombok.Getter; import lombok.Setter; import net.runelite.client.ui.FontManager; @@ -53,7 +53,7 @@ public class InfoBoxComponent implements LayoutableRenderableEntity private String text; private Color color = Color.WHITE; private Color backgroundColor = ComponentConstants.STANDARD_BACKGROUND_COLOR; - private Image image; + private BufferedImage image; @Override public Dimension render(Graphics2D graphics) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBox.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBox.java index 8c2889e8e6..fab945c11b 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBox.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBox.java @@ -25,7 +25,7 @@ package net.runelite.client.ui.overlay.infobox; import java.awt.Color; -import java.awt.Image; +import java.awt.image.BufferedImage; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; @@ -38,11 +38,11 @@ public abstract class InfoBox @Getter @Setter - private Image image; + private BufferedImage image; @Getter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE) - private Image scaledImage; + private BufferedImage scaledImage; @Getter(AccessLevel.PACKAGE) @Setter @@ -52,7 +52,7 @@ public abstract class InfoBox @Setter private String tooltip; - public InfoBox(Image image, Plugin plugin) + public InfoBox(BufferedImage image, Plugin plugin) { this.plugin = plugin; setImage(image); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java index 088a1a104a..af47777511 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java @@ -27,7 +27,6 @@ package net.runelite.client.ui.overlay.infobox; import com.google.common.base.Preconditions; import com.google.common.collect.ComparisonChain; import java.awt.Graphics; -import java.awt.Image; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.Collections; @@ -126,8 +125,8 @@ public class InfoBoxManager } // Set scaled InfoBox image - final Image image = infoBox.getImage(); - Image resultImage = image; + final BufferedImage image = infoBox.getImage(); + BufferedImage resultImage = image; final double width = image.getWidth(null); final double height = image.getHeight(null); final double size = Math.max(2, runeLiteConfig.infoBoxSize()); // Limit size to 2 as that is minimum size not causing breakage