package primitives.spaces;
import java.awt.*;
import primitives.geomtry.*;
import primitives.machines.*;
public class MultiPolygonDemo extends MultiPolygons{
	public int j=0;
	private Coordinate mcenter;
	private Point[] points;
	public 	MultiPolygonDemo(Dimension d,int arms,NarmsMachine machine,int type){
		super(d,arms,0,machine,4);
		if(type>0) j = d.width*2;
		for(int i=0;i<2;i++){
			polygons[2*i].xpoints[0] = d.width/2-r+i*2*r;
			polygons[2*i].ypoints[0] = d.height/2;
			polygons[2*i].addPoint(d.width/2,d.height/2-r+i*2*r);
			System.arraycopy(polygons[1+2*i].xpoints,1,polygons[1+2*i].xpoints,0,polygons[1+2*i].npoints-1);
			System.arraycopy(polygons[1+2*i].ypoints,1,polygons[1+2*i].ypoints,0,polygons[1+2*i].npoints-1);
		}
		mcenter = new Coordinate((int)d.width/2,(int)d.height/2);
		points = new Point[4];
	}
	public void update(Graphics g){
//	if(j>2)	g.setClip(d.width/2-r+j-1,d.height/2-r-j-1,2*r+4,2*r+4);
		g. clearRect(0,0,d.width,d.height);
		g.setColor(Color.black);
		for(int i=0;i<4;i++){
			g.drawPolyline(polygons[i].xpoints,polygons[i].ypoints,polygons[i].npoints-(i%2));
		}
		g.drawOval(d.width/2-r,d.height/2-r,2*r,2*r);
	}
	public void redraw(Graphics g){
		if(j<d.width/2+r){
		//	g.setClip(d.width/2-r+j-1,d.height/2-r-j-1,2*r+4,2*r+4);
			g.setColor(Color.gray);
			g.fillOval(d.width/2-r+(++j),d.height/2-r-j,2*r,2*r);
			g.setColor(Color.black);
			mcenter.translate(1,-1);
//			g.drawString("V",d.width/2-r+(++j)-2,d.height/2-r-j-2);
			for(int i=0;i<4;i++){
				points[i] = Geomtry.getPointByVector(mcenter,r,Math.PI/2*i+j*Math.PI/(d.width/2)).toPoint();
				if (i<2)Machine.drawLine(g,points[i],points[i+2]);
			}
		}else if(j>=d.width*2) super.redraw(g);
	}
	public void finalize()throws Throwable{
		mcenter = null;
		points = null;
		super.finalize();
	}
}
		