package CapturarPantallas;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;

/**
 * Clase que permite capturar y guardar la pantalla 
 * @author Bantec inc
 */
class CapturarPantalla {
    //imagen anterior de la pantalla
    private BufferedImage tmppantalla;
            //Instancio de la clase ComparaImagenes
    private ComparaImagenes tmp = new ComparaImagenes();
    //secuencia de nombre de los archivos
    private int count = 0;
    //Ancho de la imagen
    private final static int imgwidth = Toolkit.getDefaultToolkit().getScreenSize().width - 5;
    //Alto de la imagen
    private final static int imgheight = Toolkit.getDefaultToolkit().getScreenSize().height - 208;
    //coordenadas de inicio de la imagen
    private final static int imgX = 5;
    private final static int imgy = 123;
/**
 * Metodo main utilizado para pruebas del tamanio de imagenes
 * @param args 
 */
    public static void main(String args[]) {
        CapturarPantalla cp = new CapturarPantalla();
        cp.guardarPantalla("prueba", "");
    }
/**
 * Guarda la imagen
 * @param nombre nombre de la imagen
 * @param dir directorio donde se guarda la imagen
 */
    public void guardarPantalla(String nombre, String dir) {
        GuargaImagen(getPantalla(), nombre, dir);
    }
/**
 * Captura la pantalla del escritorio
 * 
 * @return BufferedImage pantalla
 */
    private BufferedImage getPantalla() {
        try {
            return new Robot().createScreenCapture(
                    new Rectangle(imgX, imgy, imgwidth, imgheight));
        } catch (AWTException e) {
            e.printStackTrace();
        }
        return null;

    }
/**
 * revisa si existe un cambio de panatalla
 * @return true si la pantalla es diferente
 */
    public boolean compararImg() {
        BufferedImage pantalla = getPantalla();
        if (getCount() == 0 && tmppantalla == null) {
            tmppantalla = pantalla;
        }
        if (tmppantalla != null && tmp.compararImagenes(pantalla, tmppantalla, 800)) {
            setCount(getCount() + 1);
            tmppantalla = pantalla;
            return true;
        }
        return false;
    }
/**
 * devuelve el valor de la secuencia 
 * @return secuencia
 */
    public int getCount() {
        return count;
    }
/**
 * Modifica la secuencia 
 * @param count secuencia
 */
    public void setCount(int count) {
        this.count = count;
    }
/**
 * Guarda la imagen
 * @param img BufferedImage
 * @param nombre nombre imagen
 * @param dir directorio donde se guarda la imagen
 */
    public void GuargaImagen(BufferedImage img, String nombre, String dir) {
        try {
            File file = new File("imagenes2/" + dir + "/" + nombre + ".png");
            ImageIO.write(img, "png", file);
            System.out.println("Imagen " + nombre + ".png guardada");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}