01: /*
02:
03: Licensed to the Apache Software Foundation (ASF) under one or more
04: contributor license agreements. See the NOTICE file distributed with
05: this work for additional information regarding copyright ownership.
06: The ASF licenses this file to You under the Apache License, Version 2.0
07: (the "License"); you may not use this file except in compliance with
08: the License. You may obtain a copy of the License at
09:
10: http://www.apache.org/licenses/LICENSE-2.0
11:
12: Unless required by applicable law or agreed to in writing, software
13: distributed under the License is distributed on an "AS IS" BASIS,
14: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15: See the License for the specific language governing permissions and
16: limitations under the License.
17:
18: */
19: package org.apache.batik.gvt.renderer;
20:
21: import java.awt.Shape;
22: import java.awt.geom.AffineTransform;
23:
24: import org.apache.batik.gvt.GraphicsNode;
25: import org.apache.batik.ext.awt.geom.RectListManager;
26:
27: /**
28: * Interface for GVT Renderers.
29: *
30: * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
31: * @version $Id: Renderer.java 478188 2006-11-22 15:19:17Z dvholten $
32: */
33: public interface Renderer {
34:
35: /**
36: * This associates the given GVT Tree with this renderer.
37: * Any previous tree association is forgotten.
38: * Not certain if this should be just GraphicsNode, or CanvasGraphicsNode.
39: */
40: void setTree(GraphicsNode treeRoot);
41:
42: /**
43: * Returns the GVT tree associated with this renderer
44: */
45: GraphicsNode getTree();
46:
47: /**
48: * Repaints the associated GVT tree at least under <tt>area</tt>.
49: *
50: * @param area the region to be repainted, in the current user
51: * space coordinate system.
52: */
53: void repaint(Shape area);
54:
55: /**
56: * Repaints the associated GVT tree at least in areas under the
57: * list of <tt>areas</tt>.
58: *
59: * @param areas a List of regions to be repainted, in the current
60: * user space coordinate system.
61: */
62: void repaint(RectListManager areas);
63:
64: /**
65: * Sets the transform from the current user space (as defined by
66: * the top node of the GVT tree, to the associated device space.
67: */
68: void setTransform(AffineTransform usr2dev);
69:
70: /**
71: * Returns a copy of the transform from the current user space (as
72: * defined by the top node of the GVT tree) to the device space (1
73: * unit = 1/72nd of an inch / 1 pixel, roughly speaking
74: */
75: AffineTransform getTransform();
76:
77: /**
78: * Returns true if the Renderer is currently doubleBuffering is
79: * rendering requests. If it is then getOffscreen will only
80: * return completed renderings (or null if nothing is available).
81: */
82: boolean isDoubleBuffered();
83:
84: /**
85: * Turns on/off double buffering in renderer. Turning off
86: * double buffering makes it possible to see the ongoing results
87: * of a render operation.
88: */
89: void setDoubleBuffered(boolean isDoubleBuffered);
90:
91: /**
92: * Cause the renderer to ask to be removed from external reference
93: * lists, de-register as a listener to events, etc. This is so that
94: * in the absence of other existing references, it can be
95: * removed by the garbage collector.
96: */
97: void dispose();
98:
99: }
|