package page.image;

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;

import org.wikiwebserver.handler.http.FormData;
import org.wikiwebserver.handler.http.interfaces.*;
import org.wikiwebserver.util.CacheableDynamicImage;

public class Email extends CacheableDynamicImage implements HTTPResponder {
    
    private String email = "example@wikiwebserver.org";
    private int size = 22;
  
	
    protected void init(FormData formData) {
        
        if (formData != null) {
            String emailString = formData.getFirst("email");
            if (emailString != null) email = emailString;
            String sizeString = formData.getFirst("size");        
            if (sizeString != null) size = Integer.parseInt(sizeString);
        }
        
        if (size < 1 || size > 100) size = 22;        
        
        // Process provided email, decode robot confusers
        email = email.replace("-at-", "@");
        email = email.replace("-dot-", ".");
        
        // Figure out the size required to draw text
        Graphics2D g2d = new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB).createGraphics();
        Font font = new Font(g2d.getFont().getName(), Font.BOLD, size);         
        FontMetrics fm = g2d.getFontMetrics(font);
        
        setSize(fm.stringWidth(email), fm.getHeight());
        
    } 
    
    protected void paint(Graphics2D g2d) {

        String displayString = email;

        Font font = new Font(g2d.getFont().getName(), Font.BOLD, size); 
        FontMetrics fm = g2d.getFontMetrics(font);
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);        
        g2d.setColor(Color.white);
        g2d.fillRect(0, 0, getWidth(), getHeight());
        g2d.setColor(Color.black);
        g2d.setFont(font);
        g2d.drawString(displayString, 0, fm.getAscent());
    }      
}
