package org.teachingextensions.logo.utils.InterfaceUtils;
import org.teachingextensions.logo.Turtle;
import org.teachingextensions.logo.utils.LineAndShapeUtils.Paintable;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;
public class TurtlePainter implements Paintable {
private final Turtle turtle;
private final Image image;
public TurtlePainter(Turtle turtle, Image image) {
this.turtle = turtle;
this.image = image;
}
@Override
public void paint(Graphics2D g, JPanel caller) {
if (turtle == null || turtle.isHidden()) {
return;
}
Image image = getImage();
int xCenter = image.getWidth(null) / 2;
int yCenter = image.getHeight(null) / 2;
int x = turtle.getX() - xCenter;
int y = turtle.getY() - yCenter;
AffineTransform rotate = AffineTransform.getRotateInstance(Math.toRadians(turtle.getHeadingInDegrees()),
xCenter, yCenter);
AffineTransform move = AffineTransform.getTranslateInstance(x, y);
move.concatenate(rotate);
g.drawImage(image, move, null);
}
public Image getImage() {
return image;
}
}