001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2002, Centre for Computational Geography
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: *
017: * Contacts:
018: * UNITED KINGDOM: James Macgill. j.macgill@geog.leeds.ac.uk
019: */
020: package org.geotools.styling;
021:
022: /**
023: * A symbolizer describes how a polygon feature should appear on a map.
024: *
025: * <p>
026: * The symbolizer describes not just the shape that should appear but also
027: * such graphical properties as color and opacity.
028: * </p>
029: *
030: * <p>
031: * A symbolizer is obtained by specifying one of a small number of different
032: * types of symbolizer and then supplying parameters to overide its default
033: * behaviour.
034: * </p>
035: *
036: * <p>
037: * The details of this object are taken from the <a
038: * href="https://portal.opengeospatial.org/files/?artifact_id=1188"> OGC
039: * Styled-Layer Descriptor Report (OGC 02-070) version 1.0.0.</a>:
040: * <pre><code>
041: * <xsd:element name="PolygonSymbolizer" substitutionGroup="sld:Symbolizer">
042: * <xsd:annotation>
043: * <xsd:documentation>
044: * A "PolygonSymbolizer" specifies the rendering of a polygon or
045: * area geometry, including its interior fill and border stroke.
046: * </xsd:documentation>
047: * </xsd:annotation>
048: * <xsd:complexType>
049: * <xsd:complexContent>
050: * <xsd:extension base="sld:SymbolizerType">
051: * <xsd:sequence>
052: * <xsd:element ref="sld:Geometry" minOccurs="0"/>
053: * <xsd:element ref="sld:Fill" minOccurs="0"/>
054: * <xsd:element ref="sld:Stroke" minOccurs="0"/>
055: * </xsd:sequence>
056: * </xsd:extension>
057: * </xsd:complexContent>
058: * </xsd:complexType>
059: * </xsd:element>
060: * </code></pre>
061: * </p>
062: *
063: * <p>
064: * Renderers can use this information when displaying styled features, though
065: * it must be remembered that not all renderers will be able to fully
066: * represent strokes as set out by this interface. For example, opacity may
067: * not be supported.
068: * </p>
069: *
070: * <p>
071: * Notes:
072: *
073: * <ul>
074: * <li>
075: * The graphical parameters and their values are derived from SVG/CSS2
076: * standards with names and semantics which are as close as possible.
077: * </li>
078: * </ul>
079: * </p>
080: *
081: * @author James Macgill
082: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/api/src/main/java/org/geotools/styling/PolygonSymbolizer.java $
083: * @version $Id: PolygonSymbolizer.java 20562 2006-07-16 14:54:53Z jgarnett $
084: */
085: public interface PolygonSymbolizer extends Symbolizer {
086: /**
087: * Provides the graphical-symbolization parameter to use to fill the area
088: * of the geometry. Note that the area should be filled first before the
089: * outline is rendered.
090: *
091: * @return The Fill style to use when rendering the area.
092: */
093: Fill getFill();
094:
095: /**
096: * Provides the graphical-symbolization parameter to use to fill the area
097: * of the geometry. Note that the area should be filled first before the
098: * outline is rendered.
099: *
100: * @param fill The Fill style to use when rendering the area.
101: */
102: void setFill(Fill fill);
103:
104: /**
105: * Provides the graphical-symbolization parameter to use for the outline of
106: * the Polygon.
107: *
108: * @return The Stroke style to use when rendering lines.
109: */
110: Stroke getStroke();
111:
112: /**
113: * Provides the graphical-symbolization parameter to use for the outline of
114: * the Polygon.
115: *
116: * @param stroke The Stroke style to use when rendering lines.
117: */
118: void setStroke(Stroke stroke);
119:
120: /**
121: * This property defines the geometry to be used for styling.<br>
122: * The property is optional and if it is absent (null) then the "default"
123: * geometry property of the feature should be used. Geometry types other
124: * than inherently area types can be used. If a line is used then the
125: * line string is closed for filling (only) by connecting its end point to
126: * its start point. The geometryPropertyName is the name of a geometry
127: * property in the Feature being styled. Typically, features only have
128: * one geometry so, in general, the need to select one is not required.
129: * Note: this moves a little away from the SLD spec which provides an
130: * XPath reference to a Geometry object, but does follow it in spirit.
131: *
132: * @return The name of the attribute in the feature being styled that
133: * should be used. If null then the default geometry should be
134: * used.
135: */
136: String getGeometryPropertyName();
137:
138: /**
139: * This property defines the geometry to be used for styling.<br>
140: * The property is optional and if it is absent (null) then the "default"
141: * geometry property of the feature should be used. Geometry types other
142: * than inherently area types can be used. If a line is used then the
143: * line string is closed for filling (only) by connecting its end point to
144: * its start point. The geometryPropertyName is the name of a geometry
145: * property in the Feature being styled. Typically, features only have
146: * one geometry so, in general, the need to select one is not required.
147: * Note: this moves a little away from the SLD spec which provides an
148: * XPath reference to a Geometry object, but does follow it in spirit.
149: *
150: * @param geometryPropertyName The name of the attribute in the feature
151: * being styled that should be used. If null then the default
152: * geometry should be used.
153: */
154: void setGeometryPropertyName(String geometryPropertyName);
155: }
|