/** 
  Questa classe rappresenta il pixel di uno schermo: un pixel ha due
  coordinate come @see Point e dei valori che rappresentano il colore
 */
public class Pixel extends Point {
    public int red; // Valore di rosso
    public int green; // Valore di verde
    public int blue; // Valore di blu
    
    /**
     Sposta il pixel sull'origine e resetta a nero il colore
     */
   public void clear() {
      super.clear(); // chiamo il metodo clear della superclasse
      // completo il reset ponendo a zero i valori dei tre colori
      this.red = 0;
      this.green = 0;
      this.blue = 0;
   }

/** Per provare la classe */
public static void main(String argv[]) {
  SetOfPoints s = new SetOfPoints();
  s.set = new Point[2]; // creo l'array di punti
  s.set[0] = new Pixel(); 
  /* ho creato un oggetto di tipo Pixel e con il polimorfismo
   * ho pututo farlo puntare da una variabile (l'elemento dell'array)
   * che riferisce oggetti di tipo Point.
   */
  // Assegno al pixel, visto come Point, le coordinate (20,10)
  s.set[0].x = 20;
  s.set[0].y = 10;
  // Creo un oggetto Pixel e gli assegno il colore rosso, oltre alle 
  // coordinate (10,20)
  Pixel p = new Pixel();
  p.x = 10;
  p.y = 20;
  p.red = 255;
  p.green = 0;
  p.blue = 0;
  // Assegno al secondo elemento dell'array il riferimento al nuovo 
  // Pixel creato
  s.set[1] = p;
  //A questo punto posso chiamare il metodo per calcolare il punto medio
  Point p1;
  p1 = s.midpoint();
  // p1.x == 15 e p1.y == 15
  System.out.println("p1.x == " + p1.x);
  System.out.println("p1.y == " + p1.y);
  //resetto le coordinate e il colore del secondo oggetto creato
  p.clear();
}
}
