From 5e7242388daedef973ee3504a1831a093d42fc0a Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 2 Feb 2021 21:03:56 -0500 Subject: [PATCH] image component: support setPreferredSize --- .../ui/overlay/components/ImageComponent.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ImageComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ImageComponent.java index 39ec431697..46f07f0515 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ImageComponent.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/ImageComponent.java @@ -24,35 +24,37 @@ */ package net.runelite.client.ui.overlay.components; +import com.google.common.base.MoreObjects; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.image.BufferedImage; import lombok.Getter; +import lombok.NonNull; import lombok.RequiredArgsConstructor; import lombok.Setter; +import net.runelite.client.util.ImageUtil; @RequiredArgsConstructor -@Setter public class ImageComponent implements LayoutableRenderableEntity { + @NonNull private final BufferedImage image; + private BufferedImage scaledImage; + @Getter private final Rectangle bounds = new Rectangle(); + @Setter private Point preferredLocation = new Point(); @Override public Dimension render(Graphics2D graphics) { - if (image == null) - { - return null; - } - - graphics.drawImage(image, preferredLocation.x, preferredLocation.y, null); + BufferedImage i = MoreObjects.firstNonNull(scaledImage, image); + graphics.drawImage(i, preferredLocation.x, preferredLocation.y, null); final Dimension dimension = new Dimension(image.getWidth(), image.getHeight()); bounds.setLocation(preferredLocation); bounds.setSize(dimension); @@ -60,8 +62,15 @@ public class ImageComponent implements LayoutableRenderableEntity } @Override - public void setPreferredSize(Dimension dimension) + public void setPreferredSize(Dimension preferredSize) { - // Just use image dimensions for now + if (preferredSize == null || (preferredSize.width == image.getWidth() && preferredSize.height == image.getHeight())) + { + scaledImage = null; + } + else + { + scaledImage = ImageUtil.resizeImage(image, preferredSize.width, preferredSize.height); + } } -} \ No newline at end of file +}