/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2008 - 2009, Geomatys
*
* 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; either
* version 2.1 of the License, or (at your option) any later version.
*
* 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.geotoolkit.style;
import java.awt.Color;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.measure.Unit;
import org.geotoolkit.factory.FactoryFinder;
import org.apache.sis.measure.Units;
import org.apache.sis.util.iso.SimpleInternationalString;
import org.geotoolkit.filter.DefaultLiteral;
import org.geotoolkit.style.function.DefaultInterpolate;
import org.geotoolkit.style.function.InterpolationPoint;
import org.geotoolkit.style.function.Method;
import org.geotoolkit.style.function.Mode;
import org.opengis.filter.FilterFactory;
import org.opengis.filter.expression.Expression;
import org.opengis.filter.expression.Literal;
import org.opengis.style.AnchorPoint;
import org.opengis.style.ChannelSelection;
import org.opengis.style.ColorMap;
import org.opengis.style.ContrastEnhancement;
import org.opengis.style.ContrastMethod;
import org.opengis.style.Description;
import org.opengis.style.Displacement;
import org.opengis.style.Fill;
import org.opengis.style.Font;
import org.opengis.style.Graphic;
import org.opengis.style.GraphicalSymbol;
import org.opengis.style.Halo;
import org.opengis.style.LinePlacement;
import org.opengis.style.LineSymbolizer;
import org.opengis.style.Mark;
import org.opengis.style.OverlapBehavior;
import org.opengis.style.PointPlacement;
import org.opengis.style.PointSymbolizer;
import org.opengis.style.PolygonSymbolizer;
import org.opengis.style.RasterSymbolizer;
import org.opengis.style.SelectedChannelType;
import org.opengis.style.ShadedRelief;
import org.opengis.style.Stroke;
import org.opengis.style.Symbolizer;
import org.opengis.style.TextSymbolizer;
/**
* Default values used for styles.
*
* @author Johann Sorel (Geomatys)
* @module
* @Static
*/
public final class StyleConstants {
public static final Literal LITERAL_ZERO_FLOAT;
public static final Literal LITERAL_HALF_FLOAT;
public static final Literal LITERAL_ONE_FLOAT;
public static final float DEFAULT_ANCHOR_POINT_Xf = 0.5f;
public static final float DEFAULT_ANCHOR_POINT_Yf = 0.5f;
public static final Literal DEFAULT_ANCHOR_POINT_X;
public static final Literal DEFAULT_ANCHOR_POINT_Y;
public static final AnchorPoint DEFAULT_ANCHOR_POINT;
public static final Literal DEFAULT_CONTRAST_ENHANCEMENT_GAMMA;
public static final ContrastEnhancement DEFAULT_CONTRAST_ENHANCEMENT;
public static final float DEFAULT_DISPLACEMENT_Xf = 0f;
public static final float DEFAULT_DISPLACEMENT_Yf = 0f;
public static final Literal DEFAULT_DISPLACEMENT_X;
public static final Literal DEFAULT_DISPLACEMENT_Y;
public static final Displacement DEFAULT_DISPLACEMENT;
public static final Literal DEFAULT_FILL_COLOR;
public static final Literal DEFAULT_FILL_OPACITY;
public static final Fill DEFAULT_FILL;
public static final String STROKE_JOIN_MITRE_STRING = "mitre";
public static final String STROKE_JOIN_ROUND_STRING = "round";
public static final String STROKE_JOIN_BEVEL_STRING = "bevel";
public static final String STROKE_CAP_BUTT_STRING = "butt";
public static final String STROKE_CAP_ROUND_STRING = "round";
public static final String STROKE_CAP_SQUARE_STRING = "square";
public static final Literal STROKE_JOIN_MITRE;
public static final Literal STROKE_JOIN_ROUND;
public static final Literal STROKE_JOIN_BEVEL;
public static final Literal STROKE_CAP_BUTT;
public static final Literal STROKE_CAP_ROUND;
public static final Literal STROKE_CAP_SQUARE;
public static final Literal DEFAULT_STROKE_COLOR;
public static final Literal DEFAULT_STROKE_OPACITY;
public static final Literal DEFAULT_STROKE_WIDTH;
public static final Literal DEFAULT_STROKE_JOIN;
public static final Literal DEFAULT_STROKE_CAP;
public static final Literal DEFAULT_STROKE_OFFSET;
public static final Stroke DEFAULT_STROKE;
public static final String FONT_STYLE_NORMAL_STRING = "normal";
public static final String FONT_STYLE_ITALIC_STRING = "italic";
public static final String FONT_STYLE_OBLIQUE_STRING = "oblique";
public static final String FONT_WEIGHT_NORMAL_STRING = "normal";
public static final String FONT_WEIGHT_BOLD_STRING = "bold";
public static final Literal FONT_STYLE_NORMAL;
public static final Literal FONT_STYLE_ITALIC;
public static final Literal FONT_STYLE_OBLIQUE;
public static final Literal FONT_WEIGHT_NORMAL;
public static final Literal FONT_WEIGHT_BOLD;
public static final Literal DEFAULT_FONT_STYLE;
public static final Literal DEFAULT_FONT_WEIGHT;
public static final Literal DEFAULT_FONT_SIZE;
public static final Font DEFAULT_FONT;
public static final Literal DEFAULT_GRAPHIC_OPACITY;
public static final Literal DEFAULT_GRAPHIC_ROTATION;
public static final Literal DEFAULT_GRAPHIC_SIZE;
public static final Graphic DEFAULT_GRAPHIC;
public static final Mark DEFAULT_GRAPHICAL_SYMBOL;
public static final Literal DEFAULT_GRAPHIC_STROKE_INITIAL_GAP;
public static final Literal DEFAULT_GRAPHIC_STROKE_GAP;
public static final Fill DEFAULT_HALO_FILL;
public static final Literal DEFAULT_HALO_RADIUS;
public static final Halo DEFAULT_HALO;
public static final Literal DEFAULT_LINEPLACEMENT_OFFSET;
public static final Literal DEFAULT_LINEPLACEMENT_INITIAL_GAP;
public static final Literal DEFAULT_LINEPLACEMENT_GAP;
public static final boolean DEFAULT_LINEPLACEMENT_ALIGNED;
public static final boolean DEFAULT_LINEPLACEMENT_REPEATED;
public static final boolean DEFAULT_LINEPLACEMENT_GENERALIZE;
public static final LinePlacement DEFAULT_LINEPLACEMENT;
public static final Literal DEFAULT_POINTPLACEMENT_ROTATION;
public static final PointPlacement DEFAULT_POINTPLACEMENT;
public static final String MARK_SQUARE_STRING = "square";
public static final String MARK_CIRCLE_STRING = "circle";
public static final String MARK_TRIANGLE_STRING = "triangle";
public static final String MARK_STAR_STRING = "star";
public static final String MARK_CROSS_STRING = "cross";
public static final String MARK_X_STRING = "x";
public static final Literal MARK_SQUARE;
public static final Literal MARK_CIRCLE;
public static final Literal MARK_TRIANGLE;
public static final Literal MARK_STAR;
public static final Literal MARK_CROSS;
public static final Literal MARK_X;
public static final Literal DEFAULT_MARK_WKN;
public static final String DIAGRAM_TYPE_PIE_STRING = "pie";
public static final String DIAGRAM_TYPE_BAR_STRING = "bar";
public static final String DIAGRAM_TYPE_LINE_STRING = "line";
public static final String DIAGRAM_TYPE_AREA_STRING = "area";
public static final String DIAGRAM_TYPE_RING_STRING = "ring";
public static final String DIAGRAM_TYPE_POLAR_STRING = "polar";
public static final String DIAGRAM_SUBTYPE_NORMAL_STRING = "normal";
public static final String DIAGRAM_SUBTYPE_STACKED_STRING = "stacked";
public static final String DIAGRAM_SUBTYPE_PERCENT_STRING = "percent";
public static final Literal DIAGRAM_TYPE_PIE;
public static final Literal DIAGRAM_TYPE_BAR;
public static final Literal DIAGRAM_TYPE_LINE;
public static final Literal DIAGRAM_TYPE_AREA;
public static final Literal DIAGRAM_TYPE_RING;
public static final Literal DIAGRAM_TYPE_POLAR;
public static final Literal DIAGRAM_SUBTYPE_NORMAL;
public static final Literal DIAGRAM_SUBTYPE_STACKED;
public static final Literal DIAGRAM_SUBTYPE_PERCENT;
public static final Literal DEFAULT_DIAGRAM_TYPE;
public static final Literal DEFAULT_DIAGRAM_SUBTYPE;
public static final Literal DEFAULT_SHADED_RELIEF_FACTOR;
public static final ShadedRelief DEFAULT_SHADED_RELIEF;
public static final Literal DEFAULT_LINE_OFFSET;
public static final Literal DEFAULT_POLYGON_OFFSET;
public static final Literal DEFAULT_RASTER_OPACITY;
public static final ChannelSelection DEFAULT_RASTER_CHANNEL_RGB;
public static final ChannelSelection DEFAULT_RASTER_CHANNEL_GRAY;
public static final OverlapBehavior DEFAULT_RASTER_OVERLAP;
public static final ColorMap DEFAULT_RASTER_COLORMAP;
public static final Symbolizer DEFAULT_RASTER_OUTLINE;
public static final Literal DEFAULT_FALLBACK;
public static final Literal DEFAULT_CATEGORIZE_LOOKUP;
public static final Literal CATEGORIZE_LESS_INFINITY;
public static final Unit DEFAULT_UOM;
public static final String DEFAULT_GEOM;
public static final Description DEFAULT_DESCRIPTION;
public static final PointSymbolizer DEFAULT_POINT_SYMBOLIZER;
public static final LineSymbolizer DEFAULT_LINE_SYMBOLIZER;
public static final PolygonSymbolizer DEFAULT_POLYGON_SYMBOLIZER;
public static final TextSymbolizer DEFAULT_TEXT_SYMBOLIZER;
public static final RasterSymbolizer DEFAULT_RASTER_SYMBOLIZER;
static {
final MutableStyleFactory SF = new DefaultStyleFactory();
final FilterFactory FF = FactoryFinder.getFilterFactory(null);
LITERAL_ZERO_FLOAT = FF.literal(0);
LITERAL_HALF_FLOAT = FF.literal(0.5f);
LITERAL_ONE_FLOAT = FF.literal(1);
DEFAULT_UOM = Units.POINT;
DEFAULT_GEOM = null;
DEFAULT_DESCRIPTION = new DefaultDescription(
new SimpleInternationalString(""),
new SimpleInternationalString(""));
DEFAULT_ANCHOR_POINT_X = LITERAL_HALF_FLOAT;
DEFAULT_ANCHOR_POINT_Y = LITERAL_HALF_FLOAT;
DEFAULT_ANCHOR_POINT = new DefaultAnchorPoint(DEFAULT_ANCHOR_POINT_X,DEFAULT_ANCHOR_POINT_Y);
DEFAULT_CONTRAST_ENHANCEMENT_GAMMA = LITERAL_ONE_FLOAT;
DEFAULT_CONTRAST_ENHANCEMENT = new DefaultContrastEnhancement(ContrastMethod.NONE,LITERAL_ONE_FLOAT);
DEFAULT_DISPLACEMENT_X = LITERAL_ZERO_FLOAT;
DEFAULT_DISPLACEMENT_Y = LITERAL_ZERO_FLOAT;
DEFAULT_DISPLACEMENT = new DefaultDisplacement(DEFAULT_DISPLACEMENT_X,DEFAULT_DISPLACEMENT_Y);
DEFAULT_FILL_COLOR = SF.literal(Color.GRAY);
DEFAULT_FILL_OPACITY = LITERAL_ONE_FLOAT;
DEFAULT_FILL = new DefaultFill(null, DEFAULT_FILL_COLOR, DEFAULT_FILL_OPACITY);
STROKE_JOIN_MITRE = FF.literal(STROKE_JOIN_MITRE_STRING);
STROKE_JOIN_ROUND = FF.literal(STROKE_JOIN_ROUND_STRING);
STROKE_JOIN_BEVEL = FF.literal(STROKE_JOIN_BEVEL_STRING);
STROKE_CAP_BUTT = FF.literal(STROKE_CAP_BUTT_STRING);
STROKE_CAP_ROUND = FF.literal(STROKE_CAP_ROUND_STRING);
STROKE_CAP_SQUARE = FF.literal(STROKE_CAP_SQUARE_STRING);
DEFAULT_STROKE_COLOR = SF.literal(Color.BLACK);
DEFAULT_STROKE_OPACITY = LITERAL_ONE_FLOAT;
DEFAULT_STROKE_WIDTH = LITERAL_ONE_FLOAT;
DEFAULT_STROKE_JOIN = STROKE_JOIN_BEVEL;
DEFAULT_STROKE_CAP = STROKE_CAP_SQUARE;
DEFAULT_STROKE_OFFSET = LITERAL_ZERO_FLOAT;
DEFAULT_STROKE = new DefaultStroke(DEFAULT_STROKE_COLOR, DEFAULT_STROKE_OPACITY,
DEFAULT_STROKE_WIDTH, DEFAULT_STROKE_JOIN, DEFAULT_STROKE_CAP, null, DEFAULT_STROKE_OFFSET);
FONT_STYLE_NORMAL = FF.literal(FONT_STYLE_NORMAL_STRING);
FONT_STYLE_ITALIC = FF.literal(FONT_STYLE_ITALIC_STRING);
FONT_STYLE_OBLIQUE = FF.literal(FONT_STYLE_OBLIQUE_STRING);
FONT_WEIGHT_NORMAL = FF.literal(FONT_WEIGHT_NORMAL_STRING);
FONT_WEIGHT_BOLD = FF.literal(FONT_WEIGHT_BOLD_STRING);
DEFAULT_FONT_STYLE = FONT_STYLE_NORMAL;
DEFAULT_FONT_WEIGHT = FONT_WEIGHT_NORMAL;
DEFAULT_FONT_SIZE = FF.literal(10);
DEFAULT_FONT = new DefaultFont(Collections.singletonList((Expression)new DefaultLiteral<>("Serif")), DEFAULT_FONT_STYLE, DEFAULT_FONT_WEIGHT, DEFAULT_FONT_SIZE);
DEFAULT_HALO_RADIUS = LITERAL_ONE_FLOAT;
DEFAULT_HALO_FILL = new DefaultFill(null, SF.literal(Color.WHITE), DEFAULT_FILL_OPACITY);
DEFAULT_HALO = new DefaultHalo(DEFAULT_HALO_FILL, DEFAULT_HALO_RADIUS);
MARK_SQUARE = FF.literal(MARK_SQUARE_STRING);
MARK_CIRCLE = FF.literal(MARK_CIRCLE_STRING);
MARK_TRIANGLE = FF.literal(MARK_TRIANGLE_STRING);
MARK_STAR = FF.literal(MARK_STAR_STRING);
MARK_CROSS = FF.literal(MARK_CROSS_STRING);
MARK_X = FF.literal(MARK_X_STRING);
DEFAULT_MARK_WKN = MARK_SQUARE;
DIAGRAM_TYPE_PIE = FF.literal(DIAGRAM_TYPE_PIE_STRING);
DIAGRAM_TYPE_BAR = FF.literal(DIAGRAM_TYPE_BAR_STRING);
DIAGRAM_TYPE_LINE = FF.literal(DIAGRAM_TYPE_LINE_STRING);
DIAGRAM_TYPE_AREA = FF.literal(DIAGRAM_TYPE_AREA_STRING);
DIAGRAM_TYPE_RING = FF.literal(DIAGRAM_TYPE_RING_STRING);
DIAGRAM_TYPE_POLAR = FF.literal(DIAGRAM_TYPE_POLAR_STRING);
DEFAULT_DIAGRAM_TYPE = DIAGRAM_TYPE_PIE;
DIAGRAM_SUBTYPE_NORMAL = FF.literal(DIAGRAM_SUBTYPE_NORMAL_STRING);
DIAGRAM_SUBTYPE_STACKED = FF.literal(DIAGRAM_SUBTYPE_STACKED_STRING);
DIAGRAM_SUBTYPE_PERCENT = FF.literal(DIAGRAM_SUBTYPE_PERCENT_STRING);
DEFAULT_DIAGRAM_SUBTYPE = DIAGRAM_SUBTYPE_NORMAL;
DEFAULT_GRAPHICAL_SYMBOL = new DefaultMark(MARK_SQUARE, DEFAULT_FILL, DEFAULT_STROKE);
DEFAULT_GRAPHIC_STROKE_INITIAL_GAP = FF.literal(LITERAL_ZERO_FLOAT);
DEFAULT_GRAPHIC_STROKE_GAP = FF.literal(LITERAL_ZERO_FLOAT);
DEFAULT_GRAPHIC_OPACITY = LITERAL_ONE_FLOAT;
DEFAULT_GRAPHIC_ROTATION = LITERAL_ZERO_FLOAT;
DEFAULT_GRAPHIC_SIZE = FF.literal(6);
final List<GraphicalSymbol> symbols = new ArrayList<GraphicalSymbol>();
symbols.add(DEFAULT_GRAPHICAL_SYMBOL);
DEFAULT_GRAPHIC = new DefaultGraphic(symbols, DEFAULT_GRAPHIC_OPACITY,
DEFAULT_GRAPHIC_SIZE, DEFAULT_GRAPHIC_ROTATION, DEFAULT_ANCHOR_POINT, DEFAULT_DISPLACEMENT);
DEFAULT_LINEPLACEMENT_OFFSET = LITERAL_ZERO_FLOAT;
DEFAULT_LINEPLACEMENT_INITIAL_GAP = LITERAL_ZERO_FLOAT;
DEFAULT_LINEPLACEMENT_GAP = LITERAL_ZERO_FLOAT;
DEFAULT_LINEPLACEMENT_ALIGNED = true;
DEFAULT_LINEPLACEMENT_REPEATED = false;
DEFAULT_LINEPLACEMENT_GENERALIZE = false;
DEFAULT_LINEPLACEMENT = new DefaultLinePlacement(DEFAULT_LINEPLACEMENT_OFFSET,
DEFAULT_LINEPLACEMENT_INITIAL_GAP, DEFAULT_LINEPLACEMENT_GAP, DEFAULT_LINEPLACEMENT_REPEATED,
DEFAULT_LINEPLACEMENT_ALIGNED, DEFAULT_LINEPLACEMENT_GENERALIZE);
DEFAULT_POINTPLACEMENT_ROTATION = LITERAL_ZERO_FLOAT;
DEFAULT_POINTPLACEMENT = new DefaultPointPlacement(DEFAULT_ANCHOR_POINT,
DEFAULT_DISPLACEMENT, DEFAULT_POINTPLACEMENT_ROTATION);
DEFAULT_SHADED_RELIEF_FACTOR = FF.literal(0);
DEFAULT_SHADED_RELIEF = new DefaultShadedRelief(false, DEFAULT_SHADED_RELIEF_FACTOR);
DEFAULT_LINE_OFFSET = LITERAL_ZERO_FLOAT;
DEFAULT_POLYGON_OFFSET = LITERAL_ZERO_FLOAT;
DEFAULT_RASTER_OPACITY = LITERAL_ONE_FLOAT;
final SelectedChannelType red = new DefaultSelectedChannelType("0", DEFAULT_CONTRAST_ENHANCEMENT);
final SelectedChannelType green = new DefaultSelectedChannelType("1", DEFAULT_CONTRAST_ENHANCEMENT);
final SelectedChannelType blue = new DefaultSelectedChannelType("2", DEFAULT_CONTRAST_ENHANCEMENT);
DEFAULT_RASTER_CHANNEL_RGB = new DefaultChannelSelection(red,green,blue);
final SelectedChannelType gray = new DefaultSelectedChannelType("0", DEFAULT_CONTRAST_ENHANCEMENT);
DEFAULT_RASTER_CHANNEL_GRAY = new DefaultChannelSelection(gray);
DEFAULT_RASTER_OVERLAP = OverlapBehavior.LATEST_ON_TOP;
DEFAULT_FALLBACK = SF.literal(Color.RED);
DEFAULT_CATEGORIZE_LOOKUP = FF.literal("RASTER_DATA");
DEFAULT_RASTER_COLORMAP = new DefaultColorMap(new DefaultInterpolate(DEFAULT_CATEGORIZE_LOOKUP, new ArrayList<InterpolationPoint>(), Method.COLOR, Mode.LINEAR, DEFAULT_FALLBACK));
DEFAULT_RASTER_OUTLINE = null;
CATEGORIZE_LESS_INFINITY = FF.literal("CATEGORIZE_LESS_INFINITY");
DEFAULT_POINT_SYMBOLIZER = new DefaultPointSymbolizer(
DEFAULT_GRAPHIC,
DEFAULT_UOM,
null,
null,
DEFAULT_DESCRIPTION);
DEFAULT_LINE_SYMBOLIZER = new DefaultLineSymbolizer(
DEFAULT_STROKE,
DEFAULT_LINE_OFFSET,
DEFAULT_UOM,
null,
null,
DEFAULT_DESCRIPTION);
DEFAULT_POLYGON_SYMBOLIZER = new DefaultPolygonSymbolizer(
DEFAULT_STROKE,
DEFAULT_FILL,
DEFAULT_DISPLACEMENT,
DEFAULT_POLYGON_OFFSET,
DEFAULT_UOM,
null,
null,
DEFAULT_DESCRIPTION);
DEFAULT_TEXT_SYMBOLIZER = new DefaultTextSymbolizer(
FF.literal("Label"),
DEFAULT_FONT,
DEFAULT_POINTPLACEMENT,
DEFAULT_HALO,
SF.fill(Color.BLACK),
DEFAULT_UOM,
null,
null,
DEFAULT_DESCRIPTION);
DEFAULT_RASTER_SYMBOLIZER = new DefaultRasterSymbolizer(
DEFAULT_RASTER_OPACITY,
null,
DEFAULT_RASTER_OVERLAP,
null,
DEFAULT_CONTRAST_ENHANCEMENT,
DEFAULT_SHADED_RELIEF,
DEFAULT_RASTER_OUTLINE,
DEFAULT_UOM,
null,
null,
DEFAULT_DESCRIPTION);
}
private StyleConstants(){}
}