import java.applet.*;
import java.awt.*;

public class eraser extends Applet
 {
  Graphics g;

  Image image_1;
  Image image_2;
  int width;
  int height;

  boolean done_loading_image = false;
  boolean first_time = true;

  int eraser_size = 17;

  int old_x;
  int old_y;
  
  public void init()
   {
    g = getGraphics();

    width = size().width;
    height = size().height;

    String parameter = getParameter("ERASER_SIZE");
    if (parameter != null)
      eraser_size = Integer.parseInt(parameter);

    image_1 = getImage(getCodeBase(),"image1.jpg");
    image_2 = getImage(getCodeBase(),"image2.jpg");


}
    public boolean mouseMove(Event evt, int x, int y)
     {
       Graphics g2 = g.create();
       g2.setXORMode(Color.white);

       if(first_time)
         first_time = false;
       else
         g2.drawRect(old_x, old_y, eraser_size, eraser_size);

      g2.drawRect(x, y, eraser_size, eraser_size);
      old_x = x;
      old_y = y;
      return true;
    }

    public boolean mouseDown(Event evt, int x, int y)
    {
     replace_image(x,y);
     return true;
    }

    public boolean mouseDrag(Event evt, int x, int y)
    {
      replace_image(x,y);
      return true;
    }

    public void replace_image(int x, int y)
    {
      Graphics g2 = g.create();
      g2.setXORMode(Color.white);

      if (!first_time)
       {
        g2.drawRect(old_x, old_y, eraser_size, eraser_size);
        first_time = true;
       }

       g2.setPaintMode();
       g2.clipRect(x, y, eraser_size, eraser_size);
       g2.drawImage(image_2, 345, 80, width=340,height=292, this);
       }

      public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
       {
        if (infoflags == ALLBITS)
           {
            done_loading_image = true;
            repaint();

            return false;
           }

           else
             return true;
           }

           public void paint(Graphics g)
             {
              if (!done_loading_image)
              showStatus("Eraser:  Loading image");

              else
              {
              width = 700;
              height = 400;
              first_time = true;
              showStatus("Eraer: done");
              g.drawImage(image_1, 0, 0, width, height, this);}
             }

}