+/*
+ * Copyright (c) 2018-2019. Developed by Hedgecode.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hedgecode.chess.img.vector;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.imageio.ImageIO;
+
+import org.apache.batik.transcoder.TranscoderException;
+import org.apache.batik.transcoder.TranscoderInput;
+import org.apache.batik.transcoder.TranscoderOutput;
+import org.apache.batik.transcoder.image.ImageTranscoder;
+
+import org.hedgecode.chess.img.ImageFormat;
+
+/**
+ * Transcoder for vector square images to {@link BufferedImage}.
+ *
+ * @author Dmitry Samoshin aka gotty
+ * @see ImageTranscoder
+ */
+public class SquareImageTranscoder extends ImageTranscoder {
+
+ private final int type;
+ private BufferedImage image;
+
+ SquareImageTranscoder(int type) {
+ this.type = type;
+ }
+
+ SquareImageTranscoder(int type, int size) {
+ this.type = type;
+ addTranscodingHint(ImageTranscoder.KEY_WIDTH, (float) size);
+ addTranscodingHint(ImageTranscoder.KEY_HEIGHT, (float) size);
+
+ }
+
+ @Override
+ protected void setImageSize(float width, float height) {
+ if (width > 0 && height > 0) {
+ super.setImageSize(width, height);
+ }
+ }
+
+ @Override
+ public BufferedImage createImage(int width, int height) {
+ return new BufferedImage(width, height, type);
+ }
+
+ @Override
+ public void writeImage(BufferedImage image, TranscoderOutput to) throws TranscoderException {
+ this.image = image;
+ }
+
+ public BufferedImage transcode(InputStream inputStream) throws TranscoderException {
+ transcode(
+ new TranscoderInput(inputStream),
+ null
+ );
+ return getImage();
+ }
+
+ public BufferedImage getImage() {
+ return image;
+ }
+
+
+ public static void main(String[] args) throws TranscoderException, IOException {
+ SquareImageTranscoder imageTranscoder =
+ new SquareImageTranscoder(BufferedImage.TYPE_INT_ARGB); // , 250
+ ImageIO.write(
+ imageTranscoder.transcode(
+ ClassLoader.getSystemResourceAsStream("images/pieces/spatial/bb.svg")
+ ),
+ ImageFormat.PNG.name(),
+ new File("bishop" + "." + ImageFormat.PNG.getExt())
+ );
+ }
+
+}