package railo.runtime.img.coder; import java.awt.image.BufferedImage; import java.io.IOException; import railo.commons.io.res.Resource; class DoubleCoder extends Coder { private Coder first; private Coder second; private String[] writerFormatNames; private String[] readerFormatNames; public DoubleCoder(Coder first, Coder second){ this.first=first; this.second=second; } @Override public BufferedImage toBufferedImage(Resource res, String format) throws IOException { try { return first.toBufferedImage(res, format); } catch(Throwable t){ return second.toBufferedImage(res, format); } } @Override public BufferedImage toBufferedImage(byte[] bytes, String format) throws IOException { try { return first.toBufferedImage(bytes, format); } catch(Throwable t){ return second.toBufferedImage(bytes, format); } } @Override public final String[] getWriterFormatNames() { if(writerFormatNames==null) { writerFormatNames=JRECoder.mixTogetherOrdered(first.getWriterFormatNames(),second.getWriterFormatNames()); } return writerFormatNames; } @Override public final String[] getReaderFormatNames() { if(readerFormatNames==null){ readerFormatNames=JRECoder.mixTogetherOrdered(first.getReaderFormatNames(),second.getReaderFormatNames()); } return readerFormatNames; } }