/*$************************************************************************************************
 **
 ** $Id: Symbol.java 831 2006-05-01 00:27:23Z Desruisseaux $
 **
 ** $URL: http://svn.code.sf.net/p/geoapi/code/branches/2.0.x/geoapi/src/main/java/org/opengis/sld/Symbol.java $
 **
 ** Copyright (C) 2005 Open GIS Consortium, Inc.
 ** All Rights Reserved. http://www.opengis.org/legal/
 **
 *************************************************************************************************/
package org.opengis.sld;

// OpenGIS direct dependencies
import org.opengis.util.InternationalString;

// Annotations
import org.opengis.annotation.Extension;


/**
 * Abstract superclass of the various symbol classes.
 *
 * @version Implementation specification 1.0
 * @author Chris Dillard (SYS Technologies)
 * @since GeoAPI 2.0
 */
public interface Symbol {
    /**
     * Returns the name of the geometry feature attribute to use for drawing.
     * May return null if this symbol is to use the default geometry attribute,
     * whatever it may be.
     */
    String getGeometryAttribute();

    /**
     * Sets the name of the geometry feature attribute that will be used for
     * drawing this symbol.
     * See {@link #getGeometryAttribute} for details.
     */
    void setGeometryAttribute(String name);

    /**
     * Returns a name for this symbol.
     * This can be any string that uniquely identifies this symbol within a given
     * canvas.  It is not meant to be human-friendly.  (The "title" property is
     * meant to be human friendly.)
     */
    String getName();

    /**
     * Sets the name for this symbol.
     * See {@link #getName} for details.
     */
    void setName(String name);

    /**
     * Returns the human readable title of this symbol.
     * This can be any string, but should be fairly short as it is intended to
     * be used in list boxes or drop down menus or other selection interfaces.
     */
    InternationalString getTitle();

    /**
     * Sets the human readable title of this symbol.
     * See {@link #getTitle} for details.
     */
    void setTitle(InternationalString name);

    /**
     * Returns a human readable, prose description of this symbol.
     * This can be any string and can consist of any amount of text.
     */
    InternationalString getAbstract();

    /**
     * Sets the human readable, prose description of this symbol.
     * See {@link #getAbstract} for details.
     */
    void setAbstract(InternationalString abs);

    /**
     * Accepts a visitor.  Implementations of all subinterfaces must have with a
     * method whose content is the following:
     * 
return visitor.{@linkplain SymbolVisitor#visit visit}(this, extraData);
*/ @Extension Object accept(StyleVisitor visitor, Object extraData); }

Ads help maintain this website.