org.geotools.styling.Fill Maven / Gradle / Ivy
/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
*/
package org.geotools.styling;
import java.awt.Color;
import org.geotools.filter.ConstantExpression;
import org.opengis.filter.expression.Expression;
import org.opengis.style.StyleVisitor;
/**
* The Fill object encapsulates the graphical-symbolization parameters for areas of geometries.
*
* There are two types of fill: solid-color and repeated graphic fill.
*
*
The details of this object are taken from the OGC Styled-Layer Descriptor
* Report (OGC 02-070) version 1.0.0.:
*
*
* <xsd:element name="Fill">
* <xsd:annotation>
* <xsd:documentation>
* A "Fill" specifies the pattern for filling an area geometry.
* The allowed CssParameters are: "fill" (color) and "fill-opacity".
* </xsd:documentation>
* </xsd:annotation>
* <xsd:complexType>
* <xsd:sequence>
* <xsd:element ref="sld:GraphicFill" minOccurs="0"/>
* <xsd:element ref="sld:CssParameter" minOccurs="0"
* maxOccurs="unbounded"/>
* </xsd:sequence>
* </xsd:complexType>
* </xsd:element>
*
*
* Renderers can use this information when displaying styled features, though it must be
* remembered that not all renderers will be able to fully represent strokes as set out by this
* interface. For example, opacity may not be supported.
*
*
Notes:
*
*
* - The graphical parameters and their values are derived from SVG/CSS2 standards with names
* and semantics which are as close as possible.
*
*
* @author James Macgill, CCG
* @version $Id$
*/
public interface Fill extends org.opengis.style.Fill {
static final Fill DEFAULT =
new ConstantFill() {
private void cannotModifyConstant() {
throw new UnsupportedOperationException("Constant Stroke may not be modified");
}
final Expression COLOR = ConstantExpression.color(new Color(128, 128, 128));
final Expression BGCOLOR = ConstantExpression.color(new Color(255, 255, 255, 0));
final Expression OPACITY = ConstantExpression.ONE;
public Expression getColor() {
return COLOR;
}
public Expression getOpacity() {
return OPACITY;
}
public Graphic getGraphicFill() {
return Graphic.NULL;
}
public Object accept(StyleVisitor visitor, Object extraData) {
cannotModifyConstant();
return null;
}
};
static final Fill NULL =
new ConstantFill() {
private void cannotModifyConstant() {
throw new UnsupportedOperationException("Constant Stroke may not be modified");
}
public Expression getColor() {
return ConstantExpression.NULL;
}
public Expression getOpacity() {
return ConstantExpression.NULL;
}
public Graphic getGraphicFill() {
return Graphic.NULL;
}
public Object accept(StyleVisitor visitor, Object extraData) {
cannotModifyConstant();
return null;
}
};
/**
* This parameter gives the solid color that will be used for a Fill.
* The color value is RGB-encoded using two hexidecimal digits per primary-color component, in
* the order Red, Green, Blue, prefixed with the hash (#) sign. The hexidecimal digits beetween
* A and F may be in either upper or lower case. For example, full red is encoded as "#ff0000"
* (with no quotation marks). The default color is defined to be 50% gray ("#808080"). Note: in
* CSS this parameter is just called Fill and not Color.
*
* @return The color of the Fill encoded as a hexidecimal RGB value.
*/
Expression getColor();
/**
* This parameter gives the solid color that will be used for a Fill.
* The color value is RGB-encoded using two hexidecimal digits per primary-color component, in
* the order Red, Green, Blue, prefixed with the hash (#) sign. The hexidecimal digits beetween
* A and F may be in either upper or lower case. For example, full red is encoded as "#ff0000"
* (with no quotation marks).
*
* @param color solid color that will be used for a Fill
*/
void setColor(Expression color);
/**
* This specifies the level of translucency to use when rendering the fill.
* The value is encoded as a floating-point value between 0.0 and 1.0 with 0.0 representing
* totally transparent and 1.0 representing totally opaque, with a linear scale of translucency
* for intermediate values.
* For example, "0.65" would represent 65% opacity. The default value is 1.0 (opaque).
*
* @return The opacity of the fill, where 0.0 is completely transparent and 1.0 is completely
* opaque.
*/
Expression getOpacity();
/**
* This specifies the level of translucency to use when rendering the fill.
* The value is encoded as a floating-point value between 0.0 and 1.0 with 0.0 representing
* totally transparent and 1.0 representing totally opaque, with a linear scale of translucency
* for intermediate values.
* For example, "0.65" would represent 65% opacity.
*/
void setOpacity(Expression opacity);
/**
* This parameter indicates that a stipple-fill repeated graphic will be used and specifies the
* fill graphic to use.
*
* @return The graphic to use as a stipple fill. If null then no stipple fill should be used.
*/
Graphic getGraphicFill();
/**
* This parameter indicates that a stipple-fill repeated graphic will be used and specifies the
* fill graphic to use.
*/
void setGraphicFill(org.opengis.style.Graphic graphicFill);
void accept(org.geotools.styling.StyleVisitor visitor);
}
abstract class ConstantFill implements Fill {
private void cannotModifyConstant() {
throw new UnsupportedOperationException("Constant Fill may not be modified");
}
public void setColor(Expression color) {
cannotModifyConstant();
}
public void setBackgroundColor(Expression backgroundColor) {
cannotModifyConstant();
}
public void setOpacity(Expression opacity) {
cannotModifyConstant();
}
public void setGraphicFill(org.opengis.style.Graphic graphicFill) {
cannotModifyConstant();
}
public void accept(org.geotools.styling.StyleVisitor visitor) {
cannotModifyConstant();
}
public Object accept(org.opengis.style.StyleVisitor visitor, Object data) {
cannotModifyConstant();
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy