import java.awt.*;

class DrawSpins extends java.awt.Canvas{

// Responsible for painting spin config to screen

private int space, circle, iborder, jborder;
private Ising appletref;
private int L;

// By passing in reference to control applet can 'go between' different
// objects public variables and methods

// Constructor for DrawSpins

DrawSpins(Ising ref){
appletref=ref;
space=ref.spin_spacing;
circle=ref.circle_size;
this.iborder=ref.iborder;
this.jborder=ref.jborder;
this.L=ref.L;
setBackground(Color.white);}


public void paint(Graphics g){
int i,j;

// Paint spins red or black circles according to spin direction.

for(i=0;i<L;i++)
for(j=0;j<L;j++){
if(appletref.simulation.spin[i][j]==1){
g.setColor(Color.red);
g.fillOval(space*i+iborder,space*j+jborder,circle,circle);}
else{
g.setColor(Color.black);
g.fillOval(space*i+iborder,space*j+jborder,circle,circle);}
}

}

// To avoid flicker clip paint frame to spin which is being updated
// by overriding update method.

public void update(Graphics g){
g.clipRect(appletref.simulation.iglobal*space+iborder,
appletref.simulation.jglobal*space+jborder,circle,circle);
paint(g);
}

}


