/*
 * MouseEyes.java
 * copyright (c) since 2004 "Kimmy" all right reserved.
 */

/*
<applet code="MouseEyes.class" width=450 height=250>
</applet>
*/
 
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class MouseEyes extends Applet implements MouseMotionListener{

    public Dimension d;
    public Image bi;
    public Graphics bg;
    public int bigX1, bigX2, bigY1, bigY2, bigR, 
	smallX1, smallX2, smallY1, smallY2, smallR, dif;

    //初期化メソッド
    public void init(){
	this.setBackground(Color.white);
	d = getSize();
        bi = createImage(d.width, d.height);
        bg = bi.getGraphics();

	dif = 50;
	bigR = 150;
	smallR = 50;
	bigX1 = dif + bigR/2;
	bigX2 = 2*dif + 3*bigR/2;
	bigY1 = dif + bigR/2;
	bigY2 = dif + bigR/2;
	smallX1 = bigX1;
	smallX2 = bigX2;
	smallY1 = bigY1;
	smallY2 = bigY2;

        this.addMouseMotionListener(this);
    }

    public void mouseMoved(MouseEvent e){
	int x = e.getX();
	int y = e.getY();
	double dist1 = Math.sqrt((x-bigX1)*(x-bigX1)+(y-bigY1)*(y-bigY1));
	double dist2 = Math.sqrt((x-bigX2)*(x-bigX2)+(y-bigY2)*(y-bigY2));
	smallX1 = (int)(bigX1 + (x-bigX1)*(bigR-smallR)/dist1/2);
	smallY1 = (int)(bigY1 + (y-bigY1)*(bigR-smallR)/dist1/2);
	smallX2 = (int)(bigX2 + (x-bigX2)*(bigR-smallR)/dist2/2);
	smallY2 = (int)(bigY2 + (y-bigY2)*(bigR-smallR)/dist2/2);
	if(dist1<(double)((bigR-smallR)/2)){
	    smallX1 = x;
	    smallY1 = y;
	}
	if(dist2<(double)((bigR-smallR)/2)){
	    smallX2 = x;
	    smallY2 = y;
	}
	repaint();
    }
    public void mouseDragged(MouseEvent e){
	this.mouseMoved(e);
    }

    //描画メソッド
    public void paint(Graphics g){
	bg.clearRect(0, 0, d.width, d.height);
	bg.drawOval(bigX1-bigR/2, bigY1-bigR/2, bigR, bigR);
	bg.drawOval(bigX2-bigR/2, bigY2-bigR/2, bigR, bigR);
	bg.fillOval(smallX1-smallR/2, smallY1-smallR/2, smallR, smallR);
	bg.fillOval(smallX2-smallR/2, smallY2-smallR/2, smallR, smallR);

	g.drawImage(bi, 0, 0, this);
    }

    //更新メソッド
    public void update(Graphics g){
	paint(g);
    }

}
