image component: support setPreferredSize
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user