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

public class Anisotrop extends Applet{

  public void init(){
    setBackground(Color.white);
    setLayout(new BorderLayout());
    add("Center", new CVAnisotrop() );
  }
}

class CVAnisotrop extends Canvas{
  
  int boxX1, boxX2, boxY1, boxY2;
  int startX, startY, endX, endY;
  boolean adjustmentFlag, mode;
  Dimension d;

  CVAnisotrop(){
    d = getSize();
    startX = 3;
    startY = 3;
    boxX2 = boxX1+10;
    boxY2 = boxY1+10;
    addMouseListener(new MouseAdapter(){
      public void mousePressed(MouseEvent me){
        int xP = me.getX();
        int yP = me.getY();
        if( xP > boxX1 && xP < boxX2 &&
            yP > boxY1 && yP < boxY2){
          adjustmentFlag = true;
        }
      }
      public void mouseReleased(MouseEvent me){
        int xP = me.getX();
        int yP = me.getY();
        if(adjustmentFlag){
          boxX1 = xP - 5;
          boxX2 = xP + 5;
          boxY1 = yP - 5;
          boxY2 = yP + 5;
          adjustmentFlag = false;
          calcPTS();
          repaint();
        }
        else{
          mode=!mode;
          calcPTS();
          repaint();
        }
      }
    });
  }

  public void calcPTS(){
    if(!mode){
      endX = boxX1 -2;
      endY = boxY1 -2;
    }
    else{
      int size = Math.min(boxX1, boxY1);
      endX=size;
      endY=size;
    }
  }

  public void paint(Graphics g){
    g.setColor(Color.white);
    g.fillRect(0,0,d.width,d.height);
    g.setColor(Color.red);
    g.fillRect(boxX1,boxY1,10,10);
    g.drawRect(1,1,boxX1+5,boxY1+5);
    g.setColor(Color.blue);
    g.drawLine(startX,startY,endX,endY);
    if(mode) g.drawString("MODE: isotropic", 10, 310);
    else g.drawString("MODE: anisotropic", 10, 310);
    g.drawString("Drag red box to resize",10,295);
    g.drawString("Click outside red box to change modes",10,280);
  }
}
//isotropic = retains original scale in both dimensions
//anisotropic = horizontal and vertical scale separately
//<applet code=Anisotrop.class height=320 width=320></applet>