From 4d8dde760fa5c3993117f50f2d4e006dc706395c Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Thu, 14 Dec 2017 16:49:08 +0100 Subject: [PATCH] Cleanup overlay logic after native-ui changes - Remove unnecessary derivations of runescapeSmallFont - Render overlays in "safe" environment (restore original font and tranform after overlay rendering is done) - Use TextComponent at more places - Remove unnecessary setting of default font in VolcanicMineOverlay - Change RenderableEntity from abstract class to interface - Remove unused tooltip configuration from RuneliteConfig - Use viewportWidget instead of chatbox widget for positioning the overlay groups (thanks to Devin for tip) Signed-off-by: Tomas Slusny --- .../client/config/RuneliteConfig.java | 10 ------ .../grounditems/GroundItemsOverlay.java | 3 ++ .../jewellerycount/JewelleryCountOverlay.java | 33 ++++------------- .../plugins/runecraft/BindNeckOverlay.java | 36 ++++++------------- .../plugins/runecraft/RunecraftOverlay.java | 33 +++++------------ .../client/plugins/slayer/SlayerOverlay.java | 32 +++++------------ .../volcanicmine/VolcanicMineOverlay.java | 7 ---- .../runelite/client/ui/overlay/Overlay.java | 2 +- .../client/ui/overlay/OverlayRenderer.java | 36 ++++++++++++------- .../client/ui/overlay/RenderableEntity.java | 7 ++-- .../components/BackgroundComponent.java | 2 +- .../overlay/components/InfoBoxComponent.java | 2 +- .../ui/overlay/components/PanelComponent.java | 2 +- .../ui/overlay/components/TextComponent.java | 2 +- .../overlay/components/TooltipComponent.java | 5 ++- 15 files changed, 72 insertions(+), 140 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/config/RuneliteConfig.java b/runelite-client/src/main/java/net/runelite/client/config/RuneliteConfig.java index 4d59f847f1..ce517231c8 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/RuneliteConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/config/RuneliteConfig.java @@ -31,16 +31,6 @@ package net.runelite.client.config; ) public interface RuneliteConfig extends Config { - @ConfigItem( - keyName = "tooltipLeft", - name = "Tooltip left of mouse?", - description = "Places the tooltip on the left side of the mouse" - ) - default boolean tooltipLeft() - { - return false; - } - @ConfigItem( keyName = "chatCommandsRecolorEnabled", name = "Enable chat commands recolor", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java index effdab1c0d..91badee731 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java @@ -48,6 +48,7 @@ import net.runelite.api.Region; import net.runelite.api.Tile; import net.runelite.api.widgets.Widget; import net.runelite.client.game.ItemManager; +import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.http.api.item.ItemPrice; @@ -140,6 +141,8 @@ public class GroundItemsOverlay extends Overlay return null; } + graphics.setFont(FontManager.getRunescapeSmallFont()); + int z = client.getPlane(); for (int x = 0; x < REGION_SIZE; x++) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java index 150877d203..d16a971aef 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java @@ -24,10 +24,7 @@ */ package net.runelite.client.plugins.jewellerycount; -import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; @@ -35,7 +32,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import javax.inject.Inject; -import net.runelite.api.Client; import net.runelite.api.Query; import net.runelite.api.queries.EquipmentItemQuery; import net.runelite.api.queries.InventoryItemQuery; @@ -45,20 +41,18 @@ import net.runelite.client.RuneLite; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.TextComponent; class JewelleryCountOverlay extends Overlay { private final RuneLite runelite; - private final Client client; private final JewelleryCountConfig config; - private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); @Inject JewelleryCountOverlay(RuneLite runelite, JewelleryCountConfig config) { setPosition(OverlayPosition.DYNAMIC); this.runelite = runelite; - this.client = runelite.getClient(); this.config = config; this.setDrawOverBankScreen(true); } @@ -71,7 +65,7 @@ class JewelleryCountOverlay extends Overlay return null; } - graphics.setFont(font); + graphics.setFont(FontManager.getRunescapeSmallFont()); for (WidgetItem item : getJewelleryWidgetItems()) { @@ -82,8 +76,11 @@ class JewelleryCountOverlay extends Overlay continue; } - renderWidgetText(graphics, item.getCanvasBounds(), charges.getCharges(), Color.white); - + final Rectangle bounds = item.getCanvasBounds(); + final TextComponent textComponent = new TextComponent(); + textComponent.setPosition(new Point(bounds.x, bounds.y + 16)); + textComponent.setText(String.valueOf(charges.getCharges())); + textComponent.render(graphics, parent); } return null; @@ -106,20 +103,4 @@ class JewelleryCountOverlay extends Overlay jewellery.addAll(Arrays.asList(equipmentWidgetItems)); return jewellery; } - - private void renderWidgetText(Graphics2D graphics, Rectangle bounds, int charges, Color color) - { - FontMetrics fm = graphics.getFontMetrics(); - - int textX = (int) bounds.getX(); - int textY = (int) bounds.getY() + fm.getHeight(); - - //text shadow - graphics.setColor(Color.BLACK); - graphics.drawString(String.valueOf(charges), textX + 1, textY + 1); - - graphics.setColor(color); - graphics.drawString(String.valueOf(charges), textX, textY); - } - } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/BindNeckOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/BindNeckOverlay.java index 656346421f..69d098877a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/BindNeckOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/BindNeckOverlay.java @@ -28,8 +28,6 @@ package net.runelite.client.plugins.runecraft; import static net.runelite.api.ItemID.BINDING_NECKLACE; import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; @@ -37,7 +35,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import javax.inject.Inject; -import net.runelite.api.Client; import net.runelite.api.Query; import net.runelite.api.queries.EquipmentItemQuery; import net.runelite.api.queries.InventoryItemQuery; @@ -47,13 +44,12 @@ import net.runelite.client.RuneLite; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.TextComponent; public class BindNeckOverlay extends Overlay { private final RuneLite runelite; - private final Client client; private final RunecraftConfig config; - private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); int bindingCharges; @Inject @@ -61,7 +57,6 @@ public class BindNeckOverlay extends Overlay { setPosition(OverlayPosition.DYNAMIC); this.runelite = runelite; - this.client = runelite.getClient(); this.config = config; this.setDrawOverBankScreen(true); } @@ -74,12 +69,19 @@ public class BindNeckOverlay extends Overlay return null; } - graphics.setFont(font); + graphics.setFont(FontManager.getRunescapeSmallFont()); for (WidgetItem necklace : getNecklaceWidgetItems()) { - Color color = bindingCharges == 1 ? Color.RED : Color.WHITE; - renderBindNeck(graphics, necklace.getCanvasBounds(), bindingCharges, color); + final Color color = bindingCharges == 1 ? Color.RED : Color.WHITE; + final Rectangle bounds = necklace.getCanvasBounds(); + final String text = bindingCharges <= 0 ? "?" : bindingCharges + ""; + + final TextComponent textComponent = new TextComponent(); + textComponent.setPosition(new Point(bounds.x, bounds.y + 16)); + textComponent.setText(text); + textComponent.setColor(color); + textComponent.render(graphics, parent); } return null; @@ -101,20 +103,4 @@ public class BindNeckOverlay extends Overlay necklaces.addAll(Arrays.asList(equipmentWidgetItems)); return necklaces; } - - private void renderBindNeck(Graphics2D graphics, Rectangle bounds, int charges, Color color) - { - String text = charges <= 0 ? "?" : charges + ""; - FontMetrics fm = graphics.getFontMetrics(); - - int textX = (int) bounds.getX(); - int textY = (int) bounds.getY() + fm.getHeight(); - - //text shadow - graphics.setColor(Color.BLACK); - graphics.drawString(text, textX + 1, textY + 1); - - graphics.setColor(color); - graphics.drawString(text, textX, textY); - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftOverlay.java index 02bac9d917..cbfa054c1d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftOverlay.java @@ -24,10 +24,7 @@ */ package net.runelite.client.plugins.runecraft; -import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; @@ -42,6 +39,7 @@ import net.runelite.client.RuneLite; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.TextComponent; public class RunecraftOverlay extends Overlay { @@ -51,7 +49,6 @@ public class RunecraftOverlay extends Overlay private final RuneLite runelite; private final Client client; - private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final RunecraftConfig config; @@ -73,10 +70,10 @@ public class RunecraftOverlay extends Overlay return null; } - graphics.setFont(font); - Query query = new InventoryItemQuery(); WidgetItem[] widgetItems = runelite.runQuery(query); + graphics.setFont(FontManager.getRunescapeSmallFont()); + for (WidgetItem item : widgetItems) { Varbits varbits; @@ -102,25 +99,13 @@ public class RunecraftOverlay extends Overlay continue; } - renderPouch(graphics, item.getCanvasBounds(), varbits, Color.WHITE); + final Rectangle bounds = item.getCanvasBounds(); + final TextComponent textComponent = new TextComponent(); + textComponent.setPosition(new Point(bounds.x, bounds.y + 16)); + textComponent.setText(String.valueOf(client.getSetting(varbits))); + textComponent.render(graphics, parent); } + return null; } - - private void renderPouch(Graphics2D graphics, Rectangle bounds, Varbits varbits, Color color) - { - FontMetrics fm = graphics.getFontMetrics(); - - int textX = (int) bounds.getX(); - int textY = (int) bounds.getY() + fm.getHeight(); - - int contents = client.getSetting(varbits); - - //text shadow - graphics.setColor(Color.BLACK); - graphics.drawString(String.valueOf(contents), textX + 1, textY + 1); - - graphics.setColor(color); - graphics.drawString(String.valueOf(contents), textX, textY); - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java index bb90235bf9..1037fdd92f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerOverlay.java @@ -27,17 +27,13 @@ package net.runelite.client.plugins.slayer; import static com.google.common.collect.ObjectArrays.concat; import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; -import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; -import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.util.Collection; import java.util.Set; import javax.inject.Inject; -import net.runelite.api.Client; import net.runelite.api.ItemID; import net.runelite.api.Query; import net.runelite.api.queries.EquipmentItemQuery; @@ -48,14 +44,13 @@ import net.runelite.client.RuneLite; import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; +import net.runelite.client.ui.overlay.components.TextComponent; class SlayerOverlay extends Overlay { private final RuneLite runelite; - private final Client client; private final SlayerConfig config; private final SlayerPlugin plugin; - private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final Set slayerJewelry = Sets.newHashSet( ItemID.SLAYER_RING_1, @@ -89,7 +84,6 @@ class SlayerOverlay extends Overlay { setPosition(OverlayPosition.DYNAMIC); this.runelite = runelite; - this.client = runelite.getClient(); this.plugin = plugin; this.config = config; } @@ -113,7 +107,7 @@ class SlayerOverlay extends Overlay return null; } - graphics.setFont(font); + graphics.setFont(FontManager.getRunescapeSmallFont()); for (WidgetItem item : getSlayerWidgetItems()) { @@ -124,7 +118,12 @@ class SlayerOverlay extends Overlay continue; } - renderWidgetText(graphics, itemId, item.getCanvasBounds(), amount, Color.white); + final Rectangle bounds = item.getCanvasBounds(); + final TextComponent textComponent = new TextComponent(); + textComponent.setText(String.valueOf(amount)); + textComponent.setPosition(new Point(bounds.x, (slayerJewelry.contains(itemId) + ? bounds.x + : 16 ))); } return null; @@ -141,19 +140,4 @@ class SlayerOverlay extends Overlay WidgetItem[] items = concat(inventoryWidgetItems, equipmentWidgetItems, WidgetItem.class); return ImmutableList.copyOf(items); } - - private void renderWidgetText(Graphics2D graphics, int itemId, Rectangle bounds, int amount, Color color) - { - FontMetrics fm = graphics.getFontMetrics(); - - int textX = (int) bounds.getX(); - int textY = (int) bounds.getY() + (slayerJewelry.contains(itemId) ? (int) bounds.getHeight() : fm.getHeight()); - - //text shadow - graphics.setColor(Color.BLACK); - graphics.drawString(String.valueOf(amount), textX + 1, textY + 1); - - graphics.setColor(color); - graphics.drawString(String.valueOf(amount), textX, textY); - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMineOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMineOverlay.java index e326466c0a..66336260ab 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMineOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMineOverlay.java @@ -27,7 +27,6 @@ package net.runelite.client.plugins.volcanicmine; import java.awt.Color; import java.awt.Dimension; -import java.awt.Font; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Polygon; @@ -47,7 +46,6 @@ import net.runelite.api.Point; import net.runelite.api.Prayer; import net.runelite.api.Region; import net.runelite.api.Tile; -import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayUtil; @@ -86,11 +84,6 @@ public class VolcanicMineOverlay extends Overlay return null; } - Font font = FontManager.getRunescapeFont(); - if (font != null) - { - graphics.setFont(font); - } renderTileObjects(graphics); renderRangePrayer(graphics); return null; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java index f94de86352..fb6e454cbc 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/Overlay.java @@ -27,7 +27,7 @@ package net.runelite.client.ui.overlay; import lombok.Data; @Data -public abstract class Overlay extends RenderableEntity +public abstract class Overlay implements RenderableEntity { private OverlayPosition position = OverlayPosition.TOP_LEFT; private OverlayPriority priority = OverlayPriority.NONE; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 1da1f952e3..00c400ae68 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -28,9 +28,11 @@ import com.google.common.base.MoreObjects; import com.google.common.eventbus.Subscribe; import java.awt.Color; import java.awt.Dimension; +import java.awt.Font; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; +import java.awt.geom.AffineTransform; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; @@ -55,7 +57,7 @@ public class OverlayRenderer { private static final int BORDER_TOP = 25; private static final int BORDER_LEFT = 5; - private static final int BORDER_RIGHT = 5; + private static final int BORDER_RIGHT = 2; private static final int BORDER_BOTTOM = 2; private static final int PADDING = 2; @@ -72,7 +74,6 @@ public class OverlayRenderer TooltipOverlay tooltipOverlay; private final List overlays = new ArrayList<>(); - private final Rectangle chatboxBounds = new Rectangle(); private BufferedImage surface; private Graphics2D surfaceGraphics; @@ -168,21 +169,20 @@ public class OverlayRenderer return; } - final Widget chatbox = client.getWidget(WidgetInfo.CHATBOX); - - if (chatbox != null) - { - chatboxBounds.setBounds(chatbox.getBounds()); - } + final Widget viewport = client.getViewportWidget(); + final Rectangle bounds = viewport != null + ? new Rectangle(viewport.getBounds()) + : new Rectangle(0, 0, surface.getWidth(), surface.getHeight()); + OverlayUtil.setGraphicProperties(graphics); final Point topLeftPoint = new Point(); topLeftPoint.move(BORDER_LEFT, BORDER_TOP); final Point topRightPoint = new Point(); - topRightPoint.move(surface.getWidth() - BORDER_RIGHT, BORDER_TOP); + topRightPoint.move(bounds.x + bounds.width - BORDER_RIGHT, BORDER_TOP); final Point bottomLeftPoint = new Point(); - bottomLeftPoint.move(BORDER_LEFT, chatboxBounds.y - BORDER_BOTTOM); + bottomLeftPoint.move(BORDER_LEFT, bounds.y + bounds.height - BORDER_BOTTOM); final Point bottomRightPoint = new Point(); - bottomRightPoint.move(chatboxBounds.x + chatboxBounds.width - BORDER_RIGHT, chatboxBounds.y - BORDER_BOTTOM); + bottomRightPoint.move(bounds.x + bounds.width - BORDER_RIGHT, bounds.y + bounds.height - BORDER_BOTTOM); overlays.stream() .filter(overlay -> shouldDrawOverlay(client, overlay)) @@ -208,13 +208,13 @@ public class OverlayRenderer if (overlay.getPosition().equals(OverlayPosition.DYNAMIC)) { - overlay.render(graphics, new Point()); + safeRender(overlay, graphics, new Point()); } else { surfaceGraphics.clearRect(0, 0, surface.getWidth(), surface.getHeight()); - final Dimension dimension = MoreObjects.firstNonNull(overlay.render(surfaceGraphics, subPosition), new Dimension()); + final Dimension dimension = MoreObjects.firstNonNull(safeRender(overlay, surfaceGraphics, subPosition), new Dimension()); if (dimension.width == 0 && dimension.height == 0) { return; @@ -244,6 +244,16 @@ public class OverlayRenderer }); } + private Dimension safeRender(RenderableEntity entity, Graphics2D graphics, Point point) + { + final Font font = graphics.getFont(); + final AffineTransform transform = graphics.getTransform(); + final Dimension dimension = entity.render(graphics, point); + graphics.setFont(font); + graphics.setTransform(transform); + return dimension; + } + private boolean shouldDrawOverlay(Client client, Overlay overlay) { return client != null diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/RenderableEntity.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/RenderableEntity.java index 35b702cf31..ddd26829e1 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/RenderableEntity.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/RenderableEntity.java @@ -28,10 +28,7 @@ import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; -public abstract class RenderableEntity +public interface RenderableEntity { - public Dimension render(Graphics2D graphics, Point parent) - { - return null; - } + Dimension render(Graphics2D graphics, Point parent); } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/BackgroundComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/BackgroundComponent.java index ca952fa77a..9326193a0a 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/BackgroundComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/BackgroundComponent.java @@ -36,7 +36,7 @@ import net.runelite.client.ui.overlay.RenderableEntity; @NoArgsConstructor @AllArgsConstructor -public class BackgroundComponent extends RenderableEntity +public class BackgroundComponent implements RenderableEntity { private static final int BORDER_OFFSET = 2; private static final Color BACKGROUND_COLOR = new Color(70, 61, 50, 156); 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 4672a57085..39db76efb2 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 @@ -36,7 +36,7 @@ import javax.annotation.Nullable; import lombok.Setter; import net.runelite.client.ui.overlay.RenderableEntity; -public class InfoBoxComponent extends RenderableEntity +public class InfoBoxComponent implements RenderableEntity { private static final int BOX_SIZE = 35; private static final int SEPARATOR = 2; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/PanelComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/PanelComponent.java index 481aefc27c..77026ceded 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/PanelComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/PanelComponent.java @@ -41,7 +41,7 @@ import lombok.RequiredArgsConstructor; import lombok.Setter; import net.runelite.client.ui.overlay.RenderableEntity; -public class PanelComponent extends RenderableEntity +public class PanelComponent implements RenderableEntity { private static final int TOP_BORDER = 3; private static final int LEFT_BORDER = 6; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TextComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TextComponent.java index 83cc81db18..095e3f1a4c 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TextComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TextComponent.java @@ -32,7 +32,7 @@ import java.awt.Point; import lombok.Setter; import net.runelite.client.ui.overlay.RenderableEntity; -public class TextComponent extends RenderableEntity +public class TextComponent implements RenderableEntity { @Setter private String text; diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java index 52310e6327..2443caae25 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/TooltipComponent.java @@ -33,9 +33,10 @@ import java.awt.Rectangle; import java.util.regex.Matcher; import java.util.regex.Pattern; import lombok.Setter; +import net.runelite.client.ui.FontManager; import net.runelite.client.ui.overlay.RenderableEntity; -public class TooltipComponent extends RenderableEntity +public class TooltipComponent implements RenderableEntity { private static final Pattern COLOR_SPLIT = Pattern.compile("<\\/?col=?([^>]+)?>"); private static final Pattern BR = Pattern.compile("
"); @@ -50,6 +51,8 @@ public class TooltipComponent extends RenderableEntity @Override public Dimension render(Graphics2D graphics, Point parent) { + graphics.setFont(FontManager.getRunescapeSmallFont()); + // Tooltip size final FontMetrics metrics = graphics.getFontMetrics(); final int textDescent = metrics.getDescent();