/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package feuille.drawing.bspline; import java.awt.Graphics2D; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import java.util.ArrayList; import java.util.List; /** * Trouvé sur le projet http://code.google.com/p/curvecreator/ * @author The Wingate 2940 */ public abstract class Curve { public static int LOW_QUALITY = 1, MEDIUM_QUALITY = 2, HIGH_QUALITY = 3, EXPORT_QUALITY = 4; private List<Point2D> controlPoints = new ArrayList<Point2D>(); public abstract boolean isValid(); /** * Paints the curve on the provided graphics object * @param g The graphics object to paint on. * @param quality The visual-quality of the curve. Must be one of the constants LOW_QUALITY, MEDIUM_QUALITY, HIGH_QUALITY. * @param adaptive adaptive rendering or not */ public abstract void paintCurve(Graphics2D g, int quality, boolean adaptive); public void paintControlPoints(Graphics2D g) { for (Point2D point : controlPoints) { Line2D l2 = new Line2D.Double(point, point); g.draw(l2); } } public void paintControlPolygon(Graphics2D g) { Point2D lastPoint = null; for (Point2D point : controlPoints) { if (lastPoint != null) { Line2D line = new Line2D.Double(lastPoint, point); g.draw(line); } lastPoint = point; } } public List<Point2D> getControlPoints() { return controlPoints; } public abstract void addControlPoint(Point2D point); public abstract void removeControlPoint(Point2D point); public void setControlPoints(List<Point2D> controlPoints) { this.controlPoints = controlPoints; } @Override public String toString() { StringBuilder sb = new StringBuilder("A curve segment with " + controlPoints.size() + " control points: \n"); for (Point2D point2D : controlPoints) { sb.append(point2D).append("\t"); } return sb.toString(); } }