use of org.geotools.styling.StyledLayer in project sldeditor by robward-scisys.
the class RenderSymbol method getRenderStyle.
/**
* Gets the render style.
*
* @param selectedSymbol the selected symbol
* @return the render style
*/
public Style getRenderStyle(SelectedSymbol selectedSymbol) {
List<StyledLayer> styledLayerList = selectedSymbol.getSld().layers();
for (StyledLayer styledLayer : styledLayerList) {
List<Style> styleList = null;
if (styledLayer instanceof NamedLayerImpl) {
NamedLayerImpl namedLayer = (NamedLayerImpl) styledLayer;
styleList = namedLayer.styles();
} else if (styledLayer instanceof UserLayerImpl) {
UserLayerImpl userLayer = (UserLayerImpl) styledLayer;
styleList = userLayer.userStyles();
}
if (styleList != null) {
for (Style style : styleList) {
FeatureTypeStyle ftsToRender = selectedSymbol.getFeatureTypeStyle();
Rule ruleToRender = selectedSymbol.getRule();
// Check to see if style contains the rule to render
if (shouldRenderSymbol(style, ftsToRender, ruleToRender)) {
return renderSymbol(style, ftsToRender, ruleToRender, renderOptions);
}
}
}
}
return null;
}
use of org.geotools.styling.StyledLayer in project sldeditor by robward-scisys.
the class MapRender method renderSymbol.
/**
* Render symbol.
*
* @param mapContent the map content
* @param styledLayer the styled layer
* @param style the style
*/
private void renderSymbol(MapContent mapContent, StyledLayer styledLayer, Style style) {
for (Layer layer : mapContent.layers()) {
mapContent.removeLayer(layer);
}
switch(geometryType) {
case RASTER:
{
GridReaderLayer gridLayer = new GridReaderLayer(gridCoverage, (org.geotools.styling.Style) style);
mapContent.addLayer(gridLayer);
mapContent.getViewport().setBounds(gridLayer.getBounds());
if (gridCoverage != null) {
mapPane.setDisplayArea(gridCoverage.getOriginalEnvelope());
}
}
break;
case POINT:
case LINE:
case POLYGON:
{
FeatureSource<SimpleFeatureType, SimpleFeature> tmpFeatureList = null;
if (styledLayer instanceof UserLayer) {
if (userLayerFeatureListMap != null) {
tmpFeatureList = userLayerFeatureListMap.get(styledLayer);
}
} else {
tmpFeatureList = featureList;
}
if (tmpFeatureList != null) {
mapContent.addLayer(new FeatureLayer(tmpFeatureList, (org.geotools.styling.Style) style));
try {
mapPane.setDisplayArea(tmpFeatureList.getBounds());
} catch (IOException e) {
ConsoleManager.getInstance().exception(this, e);
}
}
}
break;
default:
break;
}
wmsEnvVarValues.setMapBounds(mapBounds);
EnvironmentVariableManager.getInstance().setWMSEnvVarValues(wmsEnvVarValues);
}
use of org.geotools.styling.StyledLayer in project sldeditor by robward-scisys.
the class MapRender method internalRenderStyle.
/**
* Internal render style.
*/
private void internalRenderStyle() {
if (!underTest) {
if (hasError()) {
mapPane.resetRenderer();
mapPane.getRenderer().addRenderListener(this);
resetError();
}
wmsEnvVarValues.setImageWidth(mapPane.getWidth());
wmsEnvVarValues.setImageHeight(mapPane.getHeight());
MapContent mapContent = mapPane.getMapContent();
if (mapContent == null) {
mapContent = new MapContent();
mapPane.setMapContent(mapContent);
}
Map<Object, Object> hints = new HashMap<Object, Object>();
clearLabelCache();
hints.put(StreamingRenderer.LABEL_CACHE_KEY, labelCache);
mapPane.getRenderer().setRendererHints(hints);
// Add the layers back with the updated style
StyledLayerDescriptor sld = SelectedSymbol.getInstance().getSld();
if (sld != null) {
List<StyledLayer> styledLayerList = sld.layers();
for (StyledLayer styledLayer : styledLayerList) {
List<org.geotools.styling.Style> styleList = null;
if (styledLayer instanceof NamedLayerImpl) {
NamedLayerImpl namedLayerImpl = (NamedLayerImpl) styledLayer;
styleList = namedLayerImpl.styles();
} else if (styledLayer instanceof UserLayerImpl) {
UserLayerImpl userLayerImpl = (UserLayerImpl) styledLayer;
styleList = userLayerImpl.userStyles();
}
if (styleList != null) {
for (Style style : styleList) {
renderSymbol(mapContent, styledLayer, style);
}
}
}
}
}
}
use of org.geotools.styling.StyledLayer in project sldeditor by robward-scisys.
the class LegendManager method createLegend.
/**
* Creates the legend.
*
* @param sld the sld
* @param heading the heading
* @param filename the filename
* @param separateSymbolizers the separate symbolizers
* @return the map
*/
public Map<String, BufferedImage> createLegend(StyledLayerDescriptor sld, String heading, String filename, boolean separateSymbolizers) {
Map<String, BufferedImage> imageMap = new HashMap<String, BufferedImage>();
//
// Set legend options
//
Map<String, Object> legendOptions = new HashMap<String, Object>();
if (heading != null) {
legendOptions.put("heading", heading);
}
if (filename != null) {
legendOptions.put("filename", filename);
}
if (legendOptionData == null) {
legendOptionData = new LegendOptionData();
}
GetLegendGraphicRequest request = new GetLegendGraphicRequest();
request.setWidth(legendOptionData.getImageWidth());
request.setHeight(legendOptionData.getImageHeight());
request.setTransparent(legendOptionData.isTransparent());
request.setStrict(false);
legendOptions.put("bgColor", ColourUtils.fromColour(legendOptionData.getBackgroundColour()));
legendOptions.put("fontColor", ColourUtils.fromColour(legendOptionData.getLabelFontColour()));
//
// Label Font
//
Font font = legendOptionData.getLabelFont();
legendOptions.put("fontName", font.getFontName());
String styleValue = null;
if ((font.getStyle() & java.awt.Font.BOLD) == java.awt.Font.BOLD) {
styleValue = "bold";
}
if ((font.getStyle() & java.awt.Font.ITALIC) == java.awt.Font.ITALIC) {
styleValue = "italic";
}
if (styleValue != null) {
legendOptions.put("fontStyle", styleValue);
}
legendOptions.put("fontSize", String.valueOf(font.getSize()));
legendOptions.put("dpi", Integer.valueOf(legendOptionData.getDpi()));
legendOptions.put("fontAntiAliasing", getBooleanValueOnOff(legendOptionData.isFontAntiAliasing()));
legendOptions.put("forceLabels", getBooleanValueOnOff(legendOptionData.isShowLabels()));
legendOptions.put("forceTitles", getBooleanValueOnOff(legendOptionData.isShowTitle()));
legendOptions.put("bandInfo", getBooleanValueTrueFalse(legendOptionData.isBandInformation()));
legendOptions.put("border", getBooleanValueTrueFalse(legendOptionData.isBorder()));
legendOptions.put("borderColor", ColourUtils.fromColour(legendOptionData.getBorderColour()));
legendOptions.put("imageSizeFactor", String.valueOf(legendOptionData.getImageSize() / 100.0));
request.setLegendOptions(legendOptions);
if (sld != null) {
Map<String, Style> styleMap = new LinkedHashMap<String, Style>();
StyledLayer selectedStyledLayer = SelectedSymbol.getInstance().getStyledLayer();
Style selectedStyle = SelectedSymbol.getInstance().getStyle();
if (selectedStyle != null) {
createSingleStyleLegend(styleMap, selectedStyledLayer, selectedStyle);
} else {
createMultipleStyleLegend(sld, styleMap, selectedStyledLayer);
}
// Merge symbolizers into 1 image
if (!separateSymbolizers) {
for (String key : styleMap.keySet()) {
Style style = styleMap.get(key);
if (!style.featureTypeStyles().isEmpty()) {
FeatureTypeStyle featureTypeStyle = style.featureTypeStyles().get(0);
if (featureTypeStyle != null) {
if (!featureTypeStyle.rules().isEmpty()) {
LegendRequest legendEntryRequest = request.new LegendRequest();
request.getLegends().add(legendEntryRequest);
legendEntryRequest.setTitle(key);
legendEntryRequest.setStyle(style);
}
}
}
}
BufferedImage legendGraphic = null;
try {
legendGraphic = legendBuilder.buildLegendGraphic(request);
} catch (Exception e) {
// Ignore
}
imageMap.put("", legendGraphic);
} else {
for (String key : styleMap.keySet()) {
request.getLegends().clear();
LegendRequest legendEntryRequest = request.new LegendRequest();
legendEntryRequest.setStyle(styleMap.get(key));
legendEntryRequest.setStyleName(key);
request.getLegends().add(legendEntryRequest);
BufferedImage legendGraphic = null;
try {
legendGraphic = legendBuilder.buildLegendGraphic(request);
} catch (Exception e) {
// Ignore
}
imageMap.put(key, legendGraphic);
}
}
}
return imageMap;
}
use of org.geotools.styling.StyledLayer in project sldeditor by robward-scisys.
the class LegendManager method createMultipleStyleLegend.
/**
* Creates the legend for multiple SLD styles.
*
* @param sld the sld
* @param styleMap the style map
* @param selectedStyledLayer the selected styled layer
*/
private void createMultipleStyleLegend(StyledLayerDescriptor sld, Map<String, Style> styleMap, StyledLayer selectedStyledLayer) {
List<StyledLayer> styledLayerList = null;
if (selectedStyledLayer == null) {
styledLayerList = sld.layers();
} else {
styledLayerList = new ArrayList<StyledLayer>();
styledLayerList.add(selectedStyledLayer);
}
for (StyledLayer styledLayer : styledLayerList) {
List<Style> styleList = null;
if (styledLayer instanceof NamedLayerImpl) {
NamedLayerImpl namedLayer = (NamedLayerImpl) styledLayer;
styleList = namedLayer.styles();
} else if (styledLayer instanceof UserLayerImpl) {
UserLayerImpl userLayer = (UserLayerImpl) styledLayer;
styleList = userLayer.userStyles();
}
if (styleList != null) {
int count = 1;
for (Style style : styleList) {
String styleName;
if (style.getName() != null) {
styleName = style.getName();
} else {
styleName = String.format("Style %d", count);
}
styleMap.put(styleName, style);
count++;
}
}
}
}
Aggregations