/**
 * Application manipulant des figures

 * @author Matthias Colin
 * @version 1.0 (29/03/2009)
 */

import fr.eisti.ing1.mc.java.figures.*; 
 
public class AppliFigures {
	
	/**
	 * l'application manipule des figures : affichage et translation
	 */
	public static void main(String[] args) {
	
		Figure[] figures;
		
		figures = new Figure[10];
		
		figures[0] = new Point("A", 0, 0);
		figures[1] = new Point("B", 0, 3);
		figures[2] = new Point("D", 4, 0);
		figures[3] = new PointPondere("E", 0, 4, 10.0);
		figures[4] = new PointPondere("F", 4, 4, 15.0);
		figures[5] = new PointPondere("G", 4, 1, 7.5);
		figures[6] = new Point("H", 8, 2);
		figures[7] = new Triangle("T1",
				(Point) figures[0],
				(Point) figures[1],
				(Point) figures[2]);
		figures[8] = new Triangle("T2",
				(Point) figures[3],
				(Point) figures[4],
				(Point) figures[5]);
		figures[9] = new Cercle("C", (Point) figures[6], 2);
		
		afficherFigures(figures);
		
		System.out.println();
		System.out.println("Translation de toutes les figures de (8,-5)");
		translaterFigures(figures,8,-5);
		
		afficherFigures(figures);		
	}
	
	/**
	 * affichage d'un tableau de figures
	 * @param figures : le tableau des figures à afficher
	 */
	private static void afficherFigures(Figure[] figures) {
		System.out.println("--------------------------------------------");
		System.out.println("---------  M E S   F I G U R E S  ----------");
		System.out.println("--------------------------------------------");
		for (Figure figure : figures) {
			System.out.println(figure.getNom());
			System.out.println("	nom complet : " + figure);
			// TODO : le traitement suivant pourra être simplifié avec
			// l'utilisation d'interface
			if (figure instanceof Triangle) {
				System.out.println("	perimetre : " 
						+ ((Triangle) figure).perimetre());
				System.out.println("	surface : " 
						+ ((Triangle) figure).surface());
			} else if (figure instanceof Cercle) {
				System.out.println("	perimetre : " 
						+ ((Cercle) figure).perimetre());
				System.out.println("	surface : " 
						+ ((Cercle) figure).surface());
			}
		}
	}
	
	/**
	 * translation de toutes les figures d'un tableau par un même
	 * vecteur de déplacement
	 * @param figures : le tableau des figures à translater
	 * @param deplacementHorizontal : composante horizontale du vecteur
	 * de déplacement
	 * @param deplacementVertical : composante verticale du vecteur
	 * de déplacement
	 */
	private static void translaterFigures(Figure[] figures,
			int deplacementHorizontal, int deplacementVertical)
	{
		for (Figure figure : figures) {
			figure.translater(deplacementHorizontal, deplacementVertical);
		}
	}
	
}
