image component: support setPreferredSize

This commit is contained in:
Adam
2021-02-02 21:03:56 -05:00
parent e4d5450283
commit 5e7242388d

View File

@@ -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);
}
}
}
}