01: /*
02: * uDig - User Friendly Desktop Internet GIS client
03: * http://udig.refractions.net
04: * (C) 2004, Refractions Research Inc.
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: */
17: package net.refractions.udig.project.render;
18:
19: import java.io.IOException;
20:
21: /**
22: * The RenderMetricsFactory is used by the RenderManager (more specifically the
23: * RenderCreationDecisive) to obtain metrics on renderer extensions. The RenderMetrics objects are
24: * used to decide which renderers to instantiate to render a layer. As the state of udig changes
25: * different renderers may be more suited so the RenderMetrics object are also used to judge whether
26: * a new renderer should be used for rendering a layer.
27: *
28: * @author Jesse Eichar
29: * @version $Revision: 1.9 $
30: */
31: public interface IRenderMetricsFactory {
32:
33: /**
34: * This method is used to determine whether the renderer can render the layer. It is used so
35: * that not all metrics need to be created.
36: *
37: * @param toolkit A toolkit containing reference to everything a renderer needs.
38: * @return true if the associated renderer can render the layer using the data provided by data.
39: * @throws IOException
40: * @see IRenderContext
41: */
42: public boolean canRender(IRenderContext context) throws IOException;
43:
44: /**
45: * Returns a RenderMetrics object which provides metrics for a renderer while rendering
46: * <code>layer</code> using <code>data</code> as the data source and rendering to a viewport
47: * modeled by <code>vmodel</code>. NOTE: These metrics is a active object and cached by the
48: * RenderManager. As such no references should be maintained to the objects returned by this
49: * method.
50: *
51: * @param toolkit A toolkit containing reference to everything a renderer needs.
52: * @return A RenderMetrics object which provides metrics for a renderer while rendering
53: * <code>layer</code> using <code>data</code> as the data source and rendering to a
54: * viewport modeled by <code>vmodel</code>.
55: * @see IRenderMetrics
56: * @see IRenderContext
57: */
58:
59: public IRenderMetrics createMetrics(IRenderContext context);
60:
61: /**
62: * Returns the type of the Renderer that will be created.
63: * <p>
64: * Note if this is a MultiLayerRenderer the metrics values will be weighted depending on how
65: * many adjacent layers can be rendered by the renderer for the current map.
66: * </p>
67: * Please return the class that this RenderMetricsFactory will create (if given
68: * the appropriate context).
69: *
70: * @return the type of the Renderer that will be created
71: */
72: public Class<? extends IRenderer> getRendererType();
73: }
|