package haven.minimap; import java.awt.*; import java.awt.image.BufferedImage; import haven.*; import haven.minimap.Marker.Shape; public class Utils { private static final int tri_x[] = {0, Shape.TRIANGLE.sz/2, Shape.TRIANGLE.sz-1}; private static final int tri_y[] = {Shape.TRIANGLE.sz-1,0,Shape.TRIANGLE.sz-1}; private static final int tri2_y[] = {0,Shape.TRIANGLE.sz-1,0}; private static final int dia_x[] = {0, Shape.DIAMOND.sz/2, Shape.DIAMOND.sz-1, Shape.DIAMOND.sz/2}; private static final int dia_y[] = {Shape.DIAMOND.sz/2, 0, Shape.DIAMOND.sz/2, Shape.DIAMOND.sz-1}; private static final int pen_x[] = {Shape.PENTAGON.sz/2, Shape.PENTAGON.sz-1, (int) ((Shape.PENTAGON.sz+1)*0.75), (int) ((Shape.PENTAGON.sz-1)*0.25), 0}; private static final int pen_y[] = {0, Shape.PENTAGON.sz/2, Shape.PENTAGON.sz-1, Shape.PENTAGON.sz-1, Shape.PENTAGON.sz/2}; public static BufferedImage generateMarkerImage(Shape shape) { BufferedImage scaled = new BufferedImage(shape.sz, shape.sz, BufferedImage.TYPE_INT_ARGB); Graphics2D g = scaled.createGraphics(); g.setRenderingHint( RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); switch(shape){ case CIRCLE: g.setColor(Color.WHITE); g.fillOval(0, 0, shape.sz - 1, shape.sz - 1); g.setColor(Color.BLACK); g.drawOval(0, 0, shape.sz - 1, shape.sz - 1); break; case TRIANGLE: g.setColor(Color.WHITE); g.fillPolygon(tri_x, tri_y, 3); g.setColor(Color.BLACK); g.drawPolygon(tri_x, tri_y, 3); break; case TRIANGLED: g.setColor(Color.WHITE); g.fillPolygon(tri_x, tri2_y, 3); g.setColor(Color.BLACK); g.drawPolygon(tri_x, tri2_y, 3); break; case DIAMOND: g.setColor(Color.WHITE); g.fillPolygon(dia_x, dia_y, 4); g.setColor(Color.BLACK); g.drawPolygon(dia_x, dia_y, 4); break; case SQUARE: g.setColor(Color.WHITE); g.fillRect(0, 0, shape.sz - 1, shape.sz - 1); g.setColor(Color.BLACK); g.drawRect(0, 0, shape.sz - 1, shape.sz - 1); break; case PENTAGON: g.setColor(Color.WHITE); g.fillPolygon(pen_x, pen_y, 5); g.setColor(Color.BLACK); g.drawPolygon(pen_x, pen_y, 5); break; } return scaled; } public static Tex generateMarkerTex(Shape shape) { return new TexI(generateMarkerImage(shape)); } public static Color parseColor(String value) { try { return Color.decode(value); } catch (NumberFormatException e) { return null; } } }