/**
 * Projet: PaintRevolution
 * <p>Title:UnCarre.java </p>
 * <p>Description:Classe qui instancie un objet de type UnCarre </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Societe: IUT NANCY CHARLEMAGNE II</p>
 * @author VIGNERON GEOFFROY && GANGANELLI DORIAN
 * @version 3.0
 */
public class UnCarre extends UnQuadrilatere {
    /**
     * Constructeur de la classe qui initialise les points de construction de la figure.
     */
    public UnCarre() {
        super();
        tab_mem = new UnPoint[4];
        int x = (int)(Math.random() * 600), y = (int)(Math.random() * 600);
        int longueur = (int)(Math.random() * (x - 600)), largeur = (int)(Math.random() * (y - 600));
        tab_mem[0] = new UnPoint( x, y);
        tab_mem[1] = new UnPoint(x+longueur,y );
        tab_mem[2] = new UnPoint(x+longueur,y+longueur);
        tab_mem[3] = new UnPoint(x,y+longueur);
    }
    /**
     * Cette méthode retourne en résultat le nombre de points
     * dont on a besoin pour la saisie d'un rectangle.
     * @return nb nombre de points
     */
    public int nbPoints() {
        return 2;
    }
    
    /**
     * Cette méthode modifie le rectangle conformément à un ensemble
     * de deux points de saisie
     * <p>
     * ces deux points forment une diagonale du rectangle
     * @param tab_saisie tableau contenant les nouveaux points de saisie
     */
    public void modifierPoints(UnPoint[] tab_saisie) {
        
        int cote = Math.abs(tab_saisie[1].rendreX()- tab_saisie[0].rendreX());
        if(tab_saisie[1].rendreX()- tab_saisie[0].rendreX()>=0){
            if(tab_saisie[1].rendreY() - tab_saisie[0].rendreY()>=0){
                tab_mem[0] = tab_saisie[0];
                tab_mem[1] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY());
                tab_mem[2] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY()+cote);
                tab_mem[3] = new UnPoint(tab_saisie[0].rendreX(), tab_saisie[0].rendreY()+cote);
            }else{
                tab_mem[0] = new UnPoint(tab_saisie[0].rendreX(), tab_saisie[0].rendreY()-cote);
                tab_mem[1] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY()-cote);
                tab_mem[2] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY());
                tab_mem[3] = tab_saisie[0];
            }
        }else{
            if(tab_saisie[1].rendreY() - tab_saisie[0].rendreY()>=0){
                tab_mem[0] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY());
                tab_mem[1] = tab_saisie[0];
                tab_mem[2] = new UnPoint(tab_saisie[0].rendreX(), tab_saisie[0].rendreY()+cote);
                tab_mem[3] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[0].rendreY()+cote);
            }else{
                tab_mem[0] = tab_saisie[1];
                tab_mem[1] = new UnPoint(tab_saisie[0].rendreX(), tab_saisie[1].rendreY());
                tab_mem[2] = new UnPoint(tab_saisie[0].rendreX(), tab_saisie[1].rendreY()+cote);
                tab_mem[3] = new UnPoint(tab_saisie[1].rendreX(), tab_saisie[1].rendreY()+cote);
            }
        }
    }
}
