001 /*
002 * GeoAPI - Java interfaces for OGC/ISO standards
003 * http://www.geoapi.org
004 *
005 * Copyright (C) 2004-2012 Open Geospatial Consortium, Inc.
006 * All Rights Reserved. http://www.opengeospatial.org/ogc/legal
007 *
008 * Permission to use, copy, and modify this software and its documentation, with
009 * or without modification, for any purpose and without fee or royalty is hereby
010 * granted, provided that you include the following on ALL copies of the software
011 * and documentation or portions thereof, including modifications, that you make:
012 *
013 * 1. The full text of this NOTICE in a location viewable to users of the
014 * redistributed or derivative work.
015 * 2. Notice of any changes or modifications to the OGC files, including the
016 * date changes were made.
017 *
018 * THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
019 * NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
020 * TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
021 * THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
022 * PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
023 *
024 * COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
025 * CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
026 *
027 * The name and trademarks of copyright holders may NOT be used in advertising or
028 * publicity pertaining to the software without specific, written prior permission.
029 * Title to copyright in this software and any associated documentation will at all
030 * times remain with copyright holders.
031 */
032 package org.opengis.style;
033
034 import org.opengis.annotation.Extension;
035 import org.opengis.filter.expression.Expression;
036 import org.opengis.annotation.XmlElement;
037
038
039 /**
040 * Indicate that one of a few predefined shapes will be drawn at the points of the geometry.
041 *
042 * @version <A HREF="http://www.opengeospatial.org/standards/symbol">Symbology Encoding Implementation Specification 1.1.0</A>
043 * @author Open Geospatial Consortium
044 * @author Johann Sorel (Geomatys)
045 * @author Chris Dillard (SYS Technologies)
046 * @since GeoAPI 2.2
047 */
048 @XmlElement("Mark")
049 public interface Mark extends GraphicalSymbol {
050
051 /**
052 * Returns the expression whose value will indicate the symbol to draw.
053 * The WellKnownName element gives the well-known name of the shape of the mark.
054 * Allowed values include at least “square”, “circle”, “triangle”, “star”, “cross”, and “x”,
055 * though map servers may draw a different symbol instead if they don't have a shape for all
056 * of these. The default WellKnownName is “square”. Renderings of these marks may be
057 * made solid or hollow depending on Fill and Stroke elements.
058 *
059 * if the WellKnowname is null, check the ExternalMark before using the default square
060 * symbol.
061 *
062 * Both WellKnowName and ExternalMark canot be set, but both can be null.
063 * If none are set then the default square symbol is used.
064 *
065 * @return Expression or null
066 */
067 @XmlElement("WellKnownName")
068 Expression getWellKnownName();
069
070 /**
071 * The alternative to a WellKnownName is an external mark format.
072 * See {@link ExternalMark} for details.
073 *
074 * Both WellKnowName and ExternalMark canot be set, but both can be null.
075 * If none are set then the default square symbol is used.
076 *
077 * @return ExternalMark or null
078 */
079 ExternalMark getExternalMark();
080
081 /**
082 * Returns the object that indicates how the mark should be filled.
083 * Null means no fill.
084 * @return Fill or null
085 */
086 @XmlElement("Fill")
087 Fill getFill();
088
089 /**
090 * Returns the object that indicates how the edges of the mark will be
091 * drawn. Null means that the edges will not be drawn at all.
092 *
093 * @return stroke or null
094 */
095 @XmlElement("Stroke")
096 Stroke getStroke();
097
098 /**
099 * calls the visit method of a StyleVisitor
100 *
101 * @param visitor the style visitor
102 */
103 @Extension
104 Object accept(StyleVisitor visitor, Object extraData);
105
106 }