X-Git-Url: https://git.hedgecode.org/?p=chesshog.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fimg%2FDiagramBuilder.java;h=c059361b70ce5a4f02831440189b3616247c37fb;hp=17ff21aca9048a59b434962b5af4cc8969caa875;hb=ccafd673bfcda89a75f428e58dc06525e1b0a368;hpb=d3bad7f328495d5746704f914fd335a2487ad2bb diff --git a/src/main/java/org/hedgecode/chess/img/DiagramBuilder.java b/src/main/java/org/hedgecode/chess/img/DiagramBuilder.java index 17ff21a..c059361 100644 --- a/src/main/java/org/hedgecode/chess/img/DiagramBuilder.java +++ b/src/main/java/org/hedgecode/chess/img/DiagramBuilder.java @@ -16,13 +16,24 @@ package org.hedgecode.chess.img; +import java.awt.Graphics; import java.awt.Image; -import java.util.HashSet; -import java.util.Set; +import java.awt.image.BufferedImage; +import java.awt.image.RenderedImage; +import java.io.File; +import java.io.IOException; +import java.util.Map; import javax.imageio.ImageIO; +import org.hedgecode.chess.img.board.Board; +import org.hedgecode.chess.img.board.BoardLoader; +import org.hedgecode.chess.img.piece.PieceSet; +import org.hedgecode.chess.img.piece.PieceSetLoader; +import org.hedgecode.chess.position.ColorPiece; import org.hedgecode.chess.position.Position; +import org.hedgecode.chess.position.Positions; +import org.hedgecode.chess.position.Square; /** * @@ -33,28 +44,53 @@ public class DiagramBuilder implements ImageBuilder { private static ImageBuilder _instance = new DiagramBuilder(); + private BoardLoader boardLoader; + private PieceSetLoader pieceSetLoader; + private DiagramBuilder() { + boardLoader = new BoardLoader(); + pieceSetLoader = new PieceSetLoader(); } @Override public String build(Position position) { - - return ""; + return ""; // todo } @Override - public Image build(Position position, String type) { - // BufferedImage - // Image image = ImageIO.read(new URL(urlname)); - // Graphics.drawImage() - -/* - Image image = ImageIO.read(new File("f://image1.jpg")); - - ImageIO.write(image, "JPEG", new File("f://image2.jpg")); -*/ - - return null; + public RenderedImage build(Position position, String boardType, String pieceType) + throws ImageException + { + Map squares = position.getSquares(); + + Board board = boardLoader.load(boardType); + PieceSet pieces = pieceSetLoader.load(pieceType); + + if (board == null || pieces == null) { + throw new ImageException("Couldn't find image resources!"); // todo: locale + } + + int squareSize = board.squareSize(); + + BufferedImage diagram = board.render(); + Graphics diagramGraphics = diagram.getGraphics(); + for (int y = 0; y < Square.getSize(); ++y) { + for (int x = 0; x < Square.getSize(); ++x) { + Square square = Square.getSquare(x, Square.getSize() - (y + 1)); + ColorPiece colorPiece = squares.get(square); + if (colorPiece != null) { + diagramGraphics.drawImage( + pieces.get(colorPiece).getScaledInstance( + squareSize, squareSize, Image.SCALE_SMOOTH + ), + x * squareSize, + y * squareSize, + null + ); + } + } + } + return diagram; } public static ImageBuilder getInstance() { @@ -62,7 +98,15 @@ public class DiagramBuilder implements ImageBuilder { } - public static void main(String[] args) { + public static void main(String[] args) throws IOException, ImageException { + + ImageIO.write( + DiagramBuilder.getInstance().build(Positions.INITIAL.getPosition(), "test", "shade"), + ImageFormat.PNG.name(), + new File("chessboard" + "." + ImageFormat.PNG.getExt()) + ); + +/* String[] formatNames; Set set = new HashSet<>(); @@ -91,6 +135,7 @@ public class DiagramBuilder implements ImageBuilder { for (String formatName : formatNames) set.add(formatName.toLowerCase()); System.out.println("Supported write MIME types: " + set); +*/ } }