/**
 * aire2.java - jpq - 24/10/00
 * jdk1.2
 * modification et ajout de main() le 19/02/18
 */

import java.awt.*;
import java.applet.*;
import geo.*;

public class aire2 extends Applet implements Runnable {
  static final long serialVersionUID = 180219L;
  Thread trace;
  boolean debut;
  Image img;
  Graphics g1;
  int w, h;

//---------- définition et initialisation des objets mathématiques

  Repere R;
  DemiDroite ddm, ddp;
  Segment KL, LM;
  pt [] Z;
  pt K, L, M;
  Polygone poly;
  int n;
  double xiji, xijj;

  public void init () {
  }

//----------------------------------------------------------------------------

  public void start ()
  { if (trace == null) { trace = new Thread (this); trace.start (); } }

  public void stop ()
  { trace = null; }

  public void run ()
  { while (true)
    { if ((xij.i != xiji) || (xij.j != xijj))
      { xiji = xij.i;
        xijj = xij.j;
        repaint ();
      }
      try { Thread.sleep (100); }
      catch (Exception e) { } 
    }
  }

  public void update (Graphics g)
  { paint (g); }

//----------------------------------------------------------------------------

  public void paint (Graphics g) {
	if (img == null || w != getSize().width || h != getSize().height) {
	  w = getSize().width;
      h = getSize().height;
      img = createImage (w, h);
      g1 = img.getGraphics();
	  Font f = new Font ("Arial", Font.PLAIN, 12);
      g1.setFont (f);
    R = new Repere (20, getSize().height - 20, getSize().width, getSize().height, 50.0, 50.0);
    ddm = new DemiDroite (0.0, 0.0, -1.0, 0.0, "", R);
    ddp = new DemiDroite (2.0, 0.0, 3.0, 0.0, "", R);
    K = new pt (0.0, 0.0, "K", R);
    L = new pt (1.0, 1.0, "L", R);
    M = new pt (2.0, 0.0, "M", R);
    KL = new Segment (K, L, "", R);
    LM = new Segment (L, M, "", R);
    n = 5;
    Z = new pt [5];
    for (int i = 0; i < n; i ++) Z [i] = new pt ("", R);
    poly = new Polygone ("", R);
	}
    g1.setColor (Color.white);
    g1.fillRect (0, 0, R.XMAX, R.YMAX);
    g1.setColor (Color.red);
    R.trace (g1);
    g1.setColor (Color.black);
    ddm.trace (g1);
    KL.trace (g1);
    LM.trace (g1);
    ddp.trace (g1);
/*  K.traceNom (g1);
    L.traceNom (g1);
    M.traceNom (g1); */
    g1.setColor (Color.blue);
      Z[0].point (xijj, 0.0);
    if ((xijj < 1.0) && (xiji > 1.0))
    { n = 5;
      Z[1].point (xijj, xijj);
      Z[2].point (1.0, 1.0);
      Z[3].point (xiji, 2.0 - xiji);
      Z[4].point (xiji, 0.0);
    }
    else
    { n = 4;
      if (xijj < 1.0)
      { Z[1].point (xijj, xijj);
        Z[2].point (xiji, xiji);
      }
      else
      { double d = 2.0 - xijj;
        Z[1].point (xijj, d);
        d = 2.0 - xiji;
        Z[2].point (xiji, d);
      }
      Z[3].point (xiji, 0.0);
    }
    poly.Polygone (Z, n, true);
    poly.trace (g1);
    g.drawImage (img, 0, 0, this);
  }
}

/**
 * Sert à la liaison entre les différents Applets
 */

class xij
{ static double i;
  static double j;
}

