package org.teachingextensions.logo.utils.InterfaceUtils; import org.teachingextensions.logo.Turtle; import org.teachingextensions.logo.utils.LineAndShapeUtils.LineSegment; import org.teachingextensions.logo.utils.LineAndShapeUtils.Paintable; import javax.swing.*; import java.awt.*; import java.awt.geom.Line2D; public class TurtleTrailPainter implements Paintable { private final Turtle turtle; public TurtleTrailPainter(Turtle turtle) { this.turtle = turtle; } @Override public void paint(Graphics2D g, JPanel caller) { if (turtle == null) { return; } g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setRenderingHint(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_QUALITY); g.setRenderingHint(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE); g.setRenderingHint(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_ENABLE); for (LineSegment l : turtle.getTrail()) { if (l != null) { g.setColor(l.getColor()); g.setStroke(new BasicStroke(l.getWidth(), BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER)); g.draw(new Line2D.Double(l.getStart().x, l.getStart().y, l.getEnd().x, l.getEnd().y)); } } } }