/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2011, Open Source Geospatial Foundation (OSGeo) * (C) 2008, Open Geospatial Consortium Inc. * * All Rights Reserved. http://www.opengis.org/legal/ */ package org.opengis.style; import org.opengis.annotation.Extension; import org.opengis.filter.expression.Expression; import org.opengis.annotation.XmlElement; import org.opengis.annotation.XmlParameter; /** * Contains all the information needed to draw styled lines. Stroke objects are contained * by {@link LineSymbol}s and {@link PolygonSymbol}s. There are three basic types of strokes: * solid-color, {@code GraphicFill} (stipple), and repeated linear {@code GraphicStroke}. A * repeated linear graphic is plotted linearly and has its graphic symbol bent around the curves * of the line string, and a graphic fill has the pixels of the line rendered with a repeating * area-fill pattern. If neither a {@link #getGraphicFill GraphicFill} nor {@link #getGraphicStroke * GraphicStroke} element is given, then the line symbolizer will render a solid color. * * * @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/style/Stroke.java $ * @version <A HREF="http://www.opengeospatial.org/standards/symbol">Symbology Encoding Implementation Specification 1.1.0</A> * @author Open Geospatial Consortium * @author Johann Sorel (Geomatys) * @author Chris Dillard (SYS Technologies) * @since GeoAPI 2.2 */ @XmlElement("Stroke") public interface Stroke { /** * If non-null, indicates that line should be drawn by tiling the (thin) area of the line with * the given graphic. Between {@code getGraphicFill()} and {@link #getGraphicStroke()}, only one * may return a non-null value since a {@code Stroke} can have a {@code GraphicFill} or a * {@code GraphicStroke}, but not both. * @return Graphic */ @XmlElement("GraphicFill") GraphicFill getGraphicFill(); /** * If non-null, indicates that lines should be drawn by repeatedly plotting the given graphic * along the path of the lines, rotating it according to the orientation of the line. * Between {@link #getGraphicFill()} and {@code getGraphicStroke}, only one may return a * non-null value since a {@code Stroke} can have a {@code GraphicFill} or a {@code GraphicStroke}, * but not both. * @return Graphic */ @XmlElement("GraphicStroke") GraphicStroke getGraphicStroke(); //************************************************************* // SVG PARAMETERS //************************************************************* /** * Indicates the color of the line if it is to be solid-color filled. The format of color * values is {@code "#rrggbb"} where {@code rr}, {@code gg}, and {@code bb}, are red, green, * and blue intensity values, respectively, represented as two digit hexadecimal integers. * The hexadecimal digits between {@code A} and {@code F} may be in either uppercase or lowercase. * If null, the default color is {@code "#000000"}, black. * @return Expression */ @XmlParameter("stroke") Expression getColor(); /** * Indicates the level of translucency as a floating point number whose value is between 0.0 * and 1.0 (inclusive). A value of zero means completely transparent. A value of 1.0 means * completely opaque. If null, the default value is 1.0, totally opaque. * @return expression */ @XmlParameter("stroke-opacity") Expression getOpacity(); /** * Gives the absolute width in uoms of the line stroke as a floating point number. * Fractional numbers are allowed (with system-dependent interpretation), but negative * numbers are not. If null, the default value is 1.0. * @return expression */ @XmlParameter("stroke-width") Expression getWidth(); /** * Indicates how the various segments of a (thick) line string should be joined. * Valid values are "miter", "round", and "bevel". If null, the default value is * system dependent (probably whichever one is fastest to render). * @return expression */ @XmlParameter("stroke-linejoin") Expression getLineJoin(); /** * Indicates how the beginning and ending segments of a line string will be terminated. * Valid values are "butt", "round", and "square". If null, the default value is system * dependent. * @return expression */ @XmlParameter("stroke-linecap") Expression getLineCap(); /** * If present, indicates the dash pattern as a space-separated sequence of floating point numbers. * The first number represents the length of the first dash to draw. The second number * represents the length of space to leave. This continues to the end of the list then * repeats. If the list contains an odd number of values, then before * rendering the list is enlarged by repeating the last value. If this * parameter is omitted, lines will be drawn as solid and unbroken. * @return expression */ @XmlParameter("stroke-dasharray") float[] getDashArray(); /** * Indicates the distance offset into the dash array to begin drawing. * If null, the default value is zero. * @return expression */ @XmlParameter("stroke-dashoffset") Expression getDashOffset(); /** * calls the visit method of a StyleVisitor * * @param visitor the style visitor */ @Extension Object accept(StyleVisitor visitor, Object extraData); }