01: /*
02: *
03: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
04: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
05: *
06: * This program is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU General Public License version
08: * 2 only, as published by the Free Software Foundation.
09: *
10: * This program is distributed in the hope that it will be useful, but
11: * WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * General Public License version 2 for more details (a copy is
14: * included at /legal/license.txt).
15: *
16: * You should have received a copy of the GNU General Public License
17: * version 2 along with this work; if not, write to the Free Software
18: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
19: * 02110-1301 USA
20: *
21: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
22: * Clara, CA 95054 or visit www.sun.com if you need additional
23: * information or have any questions.
24: */
25:
26: package com.sun.pisces;
27:
28: /**
29: * The <code>LineSink</code> interface accepts a series of line
30: * drawing commands: <code>moveTo</code>, <code>lineTo</code>,
31: * <code>close</code> (equivalent to a <code>lineTo</code> command
32: * with an argument equal to the argument of the last
33: * <code>moveTo</code> command), and <code>end</code>.
34: *
35: * <p> A <code>Flattener</code> may be used to connect a general path
36: * source to a <code>LineSink</code>.
37: *
38: * <p> The <code>Renderer</code> class implements the
39: * <code>LineSink</code> interface.
40: *
41: */
42: public abstract class LineSink {
43:
44: /**
45: * Moves the current drawing position to the point <code>(x0,
46: * y0)</code>.
47: *
48: * @param x0 the X coordinate in S15.16 format
49: * @param y0 the Y coordinate in S15.16 format
50: */
51: public abstract void moveTo(int x0, int y0);
52:
53: /**
54: * Provides a hint that the current segment should be joined to
55: * the following segment using an explicit miter or round join if
56: * required.
57: *
58: * <p> An application-generated path will generally have no need
59: * to contain calls to this method; they are typically introduced
60: * by a <code>Flattener</code> to mark segment divisions that
61: * appear in its input, and consumed by a <code>Stroker</code>
62: * that is responsible for emitting the miter or round join
63: * segments.
64: *
65: * <p> Other <code>LineSink</code> classes should simply pass this
66: * hint to their output sink as needed.
67: */
68: public abstract void lineJoin();
69:
70: /**
71: * Draws a line from the current drawing position to the point
72: * <code>(x1, y1)</code> and sets the current drawing position to
73: * <code>(x1, y1)</code>.
74: *
75: * @param x1 the X coordinate in S15.16 format
76: * @param y1 the Y coordinate in S15.16 format
77: */
78: public abstract void lineTo(int x1, int y1);
79:
80: /**
81: * Closes the current path by drawing a line from the current
82: * drawing position to the point specified by the moset recent
83: * <code>moveTo</code> command.
84: */
85: public abstract void close();
86:
87: /**
88: * Ends the current path. It may be necessary to end a path in
89: * order to allow end caps to be drawn.
90: */
91: public abstract void end();
92:
93: }
|