import com.sun.image.codec.jpeg.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;

public class Anim1 extends Canvas {

    BufferedImage bi;
    int size;
    public double angle;
    
    public Anim1(String filename) {
	ImageIcon ii = new ImageIcon(filename);
	Image im = ii.getImage();
	size = (int)(1 + Math.sqrt(im.getHeight(null)*im.getHeight(null) + im.getWidth(null)*im.getWidth(null)));
	bi = new BufferedImage(im.getWidth(null),im.getHeight(null),BufferedImage.TYPE_3BYTE_BGR);
	bi.getGraphics().drawImage(im,0,0,this);
	angle = 0;
	final Anim1 theAnim1 = this;
	javax.swing.Timer timer = new javax.swing.Timer(500,new ActionListener(){
		public void actionPerformed(ActionEvent e){
		    System.out.println("tick");
		    theAnim1.angle += Math.PI/15;
		    theAnim1.repaint();
		}});
	timer.start();
	setSize(size,size);
    }
    
    public void paint(Graphics g) {
	Graphics2D g2 = (Graphics2D)g;
	g2.translate(size/2,size/2);
	g2.rotate(angle);
	g2.drawImage(bi,-bi.getWidth()/2,-bi.getHeight()/2,this);
    }
    
    public static void main(String[] args) {
	JFrame f = new JFrame("Anim1 demo");
	f.getContentPane().add(new Anim1("jim.graham.gif"));
	f.pack();
	f.setVisible(true);
	f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
	
}
