package org.wikiwebserver.handler.http.responder;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.wikiwebserver.handler.http.HTTPHandler;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;

import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGEncodeParam;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

public class BufferedImageResponder implements HTTPResponder {

	private BufferedImage image;
	
	public BufferedImageResponder(BufferedImage image) {
		this.image = image;
	}

	public Object respond(HTTPHandler conn) throws IOException {
	    
	    conn.getResponse().getHeaders().setDate("Last-Modified", System.currentTimeMillis());   
        
	    int w = image.getWidth();
        int h = image.getHeight();
        if (image.getRGB(0, 0) == 0xFFFFFFFF && image.getRGB(w-1, h-1) == 0xFFFFFFFF) {
            conn.getResponse().getHeaders().set("Content-Type", "image/gif");
            ImageIO.write(image, "gif", conn.getOutputStream());
            
        } else {
            conn.getResponse().getHeaders().set("Content-Type", "image/jpeg");
            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(conn.getOutputStream());
            JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(image);
            param.setQuality(0.95f, false);
            encoder.setJPEGEncodeParam(param);
            encoder.encode(image);
        }
        image.flush();
        
        return null;
    }	  
}

