Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
94ff58e1aThis file is pinned to the selected release. Download the original to open it in your design tool.
package com.marginallyclever.makelangelo.turtle.turtlerenderer;
import com.marginallyclever.makelangelo.Translator;
import javax.vecmath.Point2d;
import java.awt.*;
import java.awt.geom.Line2D;
/**
* Draws Turtle instructions one line segment at a time.
* @author Dan Royer
*
*/
public class DefaultTurtleRenderer implements TurtleRenderer {
private Graphics2D g2;
private Color colorTravel = Color.GREEN;
private Color colorDraw = Color.BLACK;
private boolean showTravel = false;
private float penDiameter = 1;
private boolean isPenUp = true;
private final Line2D line = new Line2D.Double();
@Override
public void start(Graphics2D g2) {
this.g2 = g2;
makePenUp();
// set pen diameter
g2.setStroke(new BasicStroke(penDiameter, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
}
@Override
public void end() {}
@Override
public void draw(Point2d p0, Point2d p1) {
if(isPenUp) makePenDown();
line.setLine(p0.x, p0.y, p1.x, p1.y);
g2.draw(line);
}
@Override
public void travel(Point2d p0, Point2d p1) {
if(!isPenUp) makePenUp();
if(!showTravel) return;
line.setLine(p0.x, p0.y, p1.x, p1.y);
g2.draw(line);
}
private void makePenUp() {
isPenUp = true;
g2.setColor(colorTravel);
}
private void makePenDown() {
isPenUp = false;
g2.setColor(colorDraw);
}
@Override
public void setPenDownColor(Color color) {
colorDraw = color;
}
@Override
public void setPenUpColor(Color color) {
colorTravel = color;
}
@Override
public void setPenDiameter(double penDiameter) {
this.penDiameter = (float)penDiameter;
}
@Override
public String getTranslatedName() {
return Translator.get("DefaultTurtleRenderer.name");
}
/**
* Reset any internal state to defaults. This makes sure rendering optimizations cleaned
* up when the turtle is changed.
*/
@Override
public void reset() {}
@Override
public void setShowTravel(boolean showTravel) {
this.showTravel = showTravel;
}
}