package org.mapfish.print.map.geotools.grid;
import org.geotools.styling.Graphic;
import org.geotools.styling.Mark;
import org.geotools.styling.Style;
import org.geotools.styling.StyleBuilder;
import org.geotools.styling.Symbolizer;
import org.mapfish.print.map.style.json.ColorParser;
import java.awt.Color;
import java.util.List;
/**
* Creates the Named LineGridStyle.
*/
public final class PointGridStyle {
private static final int CROSS_SIZE = 10;
private PointGridStyle() {
// do nothing
}
/**
* Create the Grid Point style.
*/
static Style get(final GridParam params) {
StyleBuilder builder = new StyleBuilder();
Symbolizer pointSymbolizer = crossSymbolizer("shape://plus", builder, CROSS_SIZE, ColorParser.toColor(params.gridColor));
Symbolizer halo = crossSymbolizer("cross", builder, CROSS_SIZE + params.haloRadius, ColorParser.toColor(params.haloColor));
final Style style = builder.createStyle(pointSymbolizer);
final List<Symbolizer> symbolizers = style.featureTypeStyles().get(0).rules().get(0).symbolizers();
symbolizers.add(0, halo);
return style;
}
private static Symbolizer crossSymbolizer(final String name, final StyleBuilder builder,
final int crossSize, final Color pointColor) {
Mark cross = builder.createMark(name, pointColor, pointColor, 1);
Graphic graphic = builder.createGraphic(null, cross, null);
graphic.setSize(builder.literalExpression(crossSize));
return builder.createPointSymbolizer(graphic);
}
}