package magic.ui.screen.duel.game; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Transparency; import java.awt.image.BufferedImage; import magic.ui.helpers.ImageHelper; public class BattlefieldTextOverlay { private static final Font ZONE_FONT = new Font("Dialog", Font.BOLD, 12); private BufferedImage textOverlayImage = null; private String zoneName = ""; private boolean refreshOverlay = true; public BufferedImage getOverlayImage(final int battlefieldWidth, final int batttlefieldHeight) { final boolean createNewImage = textOverlayImage == null || textOverlayImage.getHeight() != batttlefieldHeight || textOverlayImage.getWidth() != battlefieldWidth; if (createNewImage) { textOverlayImage = ImageHelper.getCompatibleBufferedImage( battlefieldWidth, batttlefieldHeight, Transparency.BITMASK ); } if (refreshOverlay) { refreshOverlay = false; ImageHelper.clearImage(textOverlayImage); final Graphics2D g2d = textOverlayImage.createGraphics(); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); drawZoneName(g2d); g2d.dispose(); } return textOverlayImage; } private void drawZoneName(final Graphics2D g2d) { g2d.setFont(ZONE_FONT); final int textWidth = g2d.getFontMetrics(ZONE_FONT).stringWidth(zoneName); final int textX = (textOverlayImage.getWidth() / 2) - (textWidth / 2); final int textY = textOverlayImage.getHeight() - 4; ImageHelper.drawStringWithOutline(g2d, zoneName, textX, textY, Color.YELLOW, Color.DARK_GRAY); } public void setPlayerZoneName(final String text) { this.zoneName = text; refreshOverlay = true; } }