// Copyright 2001-2004 freehep package org.freehep.graphicsio; import java.awt.Shape; import java.awt.geom.AffineTransform; import java.io.IOException; /** * Interface for objects that are capable of constructing paths. Path painting * (stroking or filling) is not included. * * @author Simon Fischer * @version $Id: PathConstructor.java 8584 2006-08-10 23:06:37Z duns $ */ public interface PathConstructor { /** * Makes (x,y) the current point. */ public void move(double x, double y) throws IOException; /** * Draws a line from the current point to (x,y) and make (x,y) the current * point. */ public void line(double x, double y) throws IOException; /** * Draws a quadratic bezier curve from the current point to (x2, y2) using * the control point (x1, y1) and make (x2, y2) the current point. */ public void quad(double x1, double y1, double x2, double y2) throws IOException; /** * Draws a cubic bezier curve from the current point to (x3, y3) using the * control points (x1, y1) and (x2, y2) and make (x3, y3) the current point. */ public void cubic(double x1, double y1, double x2, double y2, double x3, double y3) throws IOException; /** * Closes the path by drawing a straight line to the last point which was * argument to move. */ public void closePath(double x0, double y0) throws IOException; /** * Flushes any cached info to the output file. The path is complete at this * point. */ public void flush() throws IOException; /** * Adds the points of the shape using path construction * operators. The path is neither stroked nor filled. * * @return true if even-odd winding rule should be used, false if non-zero * winding rule should be used. */ public boolean addPath(Shape s) throws IOException; /** * Adds the points of the shape using path construction * operators, using the given transform. The path is neither stroked nor * filled. * * @return true if even-odd winding rule should be used, false if non-zero * winding rule should be used. */ public boolean addPath(Shape s, AffineTransform transform) throws IOException; }