package edu.cmu.cs.eyetrack.gui.shapes.sabine.part2;
import java.awt.Color;
import java.awt.geom.GeneralPath;
import edu.cmu.cs.eyetrack.gui.shapes.Stimulus;
public class SabineNew7Stimulus extends Stimulus {
private static double kappa = 0.5522847498;
private int radius; // Radius of the little bump circles
public SabineNew7Stimulus(String name, Color color, int width, int height) {
super(name, color, width, height, color);
this.radius = (int) (Math.min(width, height)*0.25);
makeShape(0,0);
}
private void makeShape(int x, int y) {
GeneralPath s = new GeneralPath();
s.moveTo(x+radius, y+(int) (0.25*height)); // Start at the top of the left-hand bump
s.lineTo(x+radius+(int)(0.1*width), y+(int) (0.1*height));
s.lineTo(x+width-radius, y+0);
s.lineTo(x+width-radius, y+radius); // At the top of the right-hand bump
int curx=x+width-radius; int cury=y+radius+radius;
s.curveTo(curx+radius*kappa, cury-radius, curx+radius, cury-radius*kappa, curx+radius, cury);
s.curveTo(curx+radius, cury+radius*kappa, curx+radius*kappa, cury+radius, curx, cury+radius);
s.lineTo(x+width-radius, y+height); // At the buttom of the right-hand bump
s.lineTo(x+radius+(int)(0.1*width), y+(int) (0.9*height));
s.lineTo(x+radius, y+height-radius);
curx=x+radius; cury=y+height-radius-radius;
s.curveTo(curx-radius*kappa, cury+radius, curx-radius, cury+radius*kappa, curx-radius, cury);
s.curveTo(curx-radius, cury-radius*kappa, curx-radius*kappa, cury-radius, curx, cury-radius);
s.closePath();
shape = s;
}
@Override
public Stimulus factoryClone(Color color) {
if(color==null) {
return new SabineNew7Stimulus(name, this.color, width, height);
} else {
return new SabineNew7Stimulus(name, color, width, height);
}
}
@Override
public void move(int newX, int newY) {
makeShape(newX - (int) (0.5 * width),
newY - (int) (0.5 * height));
}
}