1 // Copyright 2001-2004 freehep 2 package org.freehep.graphicsio; 3 4 import java.awt.Shape; 5 import java.awt.geom.AffineTransform; 6 import java.io.IOException; 7 8 /** 9 * Interface for objects that are capable of constructing paths. Path painting 10 * (stroking or filling) is not included. 11 * 12 * @author Simon Fischer 13 * @version $Id: PathConstructor.java 8584 2006-08-10 23:06:37Z duns $ 14 */ 15 public interface PathConstructor { 16 17 /** 18 * Makes (x,y) the current point. 19 */ 20 public void move(double x, double y) throws IOException; 21 22 /** 23 * Draws a line from the current point to (x,y) and make (x,y) the current 24 * point. 25 */ 26 public void line(double x, double y) throws IOException; 27 28 /** 29 * Draws a quadratic bezier curve from the current point to (x2, y2) using 30 * the control point (x1, y1) and make (x2, y2) the current point. 31 */ 32 public void quad(double x1, double y1, double x2, double y2) 33 throws IOException; 34 35 /** 36 * Draws a cubic bezier curve from the current point to (x3, y3) using the 37 * control points (x1, y1) and (x2, y2) and make (x3, y3) the current point. 38 */ 39 public void cubic(double x1, double y1, double x2, double y2, double x3, 40 double y3) throws IOException; 41 42 /** 43 * Closes the path by drawing a straight line to the last point which was 44 * argument to move. 45 */ 46 public void closePath(double x0, double y0) throws IOException; 47 48 /** 49 * Flushes any cached info to the output file. The path is complete at this 50 * point. 51 */ 52 public void flush() throws IOException; 53 54 /** 55 * Adds the <i>points</i> of the shape using path <i>construction</i> 56 * operators. The path is neither stroked nor filled. 57 * 58 * @return true if even-odd winding rule should be used, false if non-zero 59 * winding rule should be used. 60 */ 61 public boolean addPath(Shape s) throws IOException; 62 63 /** 64 * Adds the <i>points</i> of the shape using path <i>construction</i> 65 * operators, using the given transform. The path is neither stroked nor 66 * filled. 67 * 68 * @return true if even-odd winding rule should be used, false if non-zero 69 * winding rule should be used. 70 */ 71 public boolean addPath(Shape s, AffineTransform transform) 72 throws IOException; 73 }