package net.sf.openrocket.gui.figureelements; import java.awt.Color; import java.awt.geom.Area; import java.awt.geom.Ellipse2D; /** * A mark indicating the position of the center of pressure. It is a red filled circle * inside a slightly larger red circle. * * @author Sampo Niskanen <sampo.niskanen@iki.fi> */ public class CPCaret extends Caret { private static final float RADIUS = 7; private static Area caret = null; /** * Create a new CPCaret at the specified coordinates. */ public CPCaret(double x, double y) { super(x,y); } /** * Returns the Area object of the caret. The Area object is created only once, * after which new copies are cloned from it. */ @Override protected Area getCaret() { if (caret != null) { return (Area)caret.clone(); } Ellipse2D.Float e = new Ellipse2D.Float(-RADIUS,-RADIUS,2*RADIUS,2*RADIUS); caret = new Area(e); caret.subtract(new Area(new Ellipse2D.Float(-RADIUS*0.9f,-RADIUS*0.9f, 2*0.9f*RADIUS,2*0.9f*RADIUS))); caret.add(new Area(new Ellipse2D.Float(-RADIUS*0.75f,-RADIUS*0.75f, 2*0.75f*RADIUS,2*0.75f*RADIUS))); return (Area) caret.clone(); } /** * Return the color of the caret (red). */ @Override protected Color getColor() { return Color.RED; } }