/* * 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; import java.awt.image.BufferedImage; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import org.hedgecode.chess.img.bitmap.BitmapImageShaper; import org.hedgecode.chess.img.vector.VectorImageShaper; import static org.hedgecode.chess.img.ImageFormat.Type; /** * Shaper for images, indicated by type format. * * @author Dmitry Samoshin aka gotty */ public final class ImageFormatShaper { private static ImageFormatShaper _instance = new ImageFormatShaper(); private Map imageShapers = new HashMap<>(); private ImageFormatShaper() { imageShapers.put( Type.BITMAP, BitmapImageShaper.create() ); imageShapers.put( Type.VECTOR, VectorImageShaper.create() ); } public BufferedImage shape(String imageFormat, InputStream imageStream, int size) throws ImageException { ImageFormat format = ImageFormat.findFormat(imageFormat); if (format != null) { ImageShaper imageShaper = imageShapers.get( format.getType() ); return imageShaper.shape(imageStream, size); } else { throw new ImageException("image.unknown.image.format", imageFormat); } } public static ImageFormatShaper getInstance() { return _instance; } }