use of org.geotools.styling.ContrastEnhancement in project sldeditor by robward-scisys.
the class RasterSymbolizerDetails method updateSymbol.
/**
* Update symbol.
*/
private void updateSymbol() {
// Contrast enhancement
Expression gammaValueExpression = fieldConfigVisitor.getExpression(FieldIdEnum.RASTER_CONTRAST_GAMMAVALUE);
ContrastEnhancement contrastEnhancement = null;
GroupConfigInterface group = getGroup(GroupIdEnum.RASTER_CONTRAST);
if (group.isPanelEnabled()) {
String method = null;
group = getGroup(GroupIdEnum.RASTER_OVERALL_CONTRAST_METHOD);
if (group != null) {
MultiOptionGroup contrastNormalizeMethodGroup = (MultiOptionGroup) group;
OptionGroup selectedOption = contrastNormalizeMethodGroup.getSelectedOptionGroup();
if (selectedOption != null) {
method = selectedOption.getLabel();
}
}
contrastEnhancement = (ContrastEnhancement) getStyleFactory().contrastEnhancement(gammaValueExpression, method);
}
// Colour map
ColorMap colorMap = fieldConfigVisitor.getColourMap(FieldIdEnum.RASTER_COLOURMAP);
ValueComboBoxData colourMapType = fieldConfigVisitor.getComboBox(FieldIdEnum.RASTER_COLOURMAP_TYPE);
colorMap.setType(Integer.valueOf(colourMapType.getKey()));
// Channel selection
ChannelSelection channelSelection = null;
group = getGroup(GroupIdEnum.RASTER_CHANNELSELECTION);
if (group != null) {
if (group.isPanelEnabled()) {
MultiOptionGroup contrastEnhancementGroup = (MultiOptionGroup) group;
OptionGroup selectedOption = contrastEnhancementGroup.getSelectedOptionGroup();
if (selectedOption.getId() == GroupIdEnum.RASTER_GREY_CHANNEL_OPTION) {
// Grey option group
SelectedChannelType greyChannel = extractContrastEnhancementGroup(GroupIdEnum.RASTER_GREY_CHANNEL, FieldIdEnum.RASTER_RGB_GREY_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST_METHOD);
channelSelection = getStyleFactory().channelSelection(greyChannel);
} else {
SelectedChannelType redChannel = extractContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_RED, FieldIdEnum.RASTER_RGB_RED_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST_METHOD);
SelectedChannelType greenChannel = extractContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_GREEN, FieldIdEnum.RASTER_RGB_GREEN_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST_METHOD);
SelectedChannelType blueChannel = extractContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_BLUE, FieldIdEnum.RASTER_RGB_BLUE_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST_METHOD);
SelectedChannelType[] channels = new SelectedChannelType[3];
channels[0] = redChannel;
channels[1] = greenChannel;
channels[2] = blueChannel;
channelSelection = getStyleFactory().createChannelSelection(channels);
}
}
}
//
// Overlap
//
OverlapBehavior overlapBehavior = null;
group = getGroup(GroupIdEnum.RASTER_OVERLAP);
if (group.isPanelEnabled()) {
ValueComboBoxData overlapBehaviorValue = fieldConfigVisitor.getComboBox(FieldIdEnum.RASTER_OVERLAP_BEHAVIOUR);
overlapBehavior = OverlapBehavior.valueOf(overlapBehaviorValue.getKey());
}
//
// Shaded relief
//
ShadedRelief shadedRelief = null;
group = getGroup(GroupIdEnum.RASTER_SHADEDRELIEF);
if (group.isPanelEnabled()) {
shadedRelief = new ShadedReliefImpl();
shadedRelief.setBrightnessOnly(fieldConfigVisitor.getBoolean(FieldIdEnum.RASTER_SHADEDRELIEF_BRIGHTNESS));
shadedRelief.setReliefFactor(fieldConfigVisitor.getExpression(FieldIdEnum.RASTER_SHADEDRELIEF_FACTOR));
}
Symbolizer symbolizer = null;
StandardData standardData = getStandardData();
Expression opacityExpression = fieldConfigVisitor.getExpression(FieldIdEnum.RASTER_OPACITY);
// Geometry field
Expression geometryField = ExtractGeometryField.getGeometryField(fieldConfigVisitor);
RasterSymbolizer rasterSymbolizer = (RasterSymbolizer) getStyleFactory().rasterSymbolizer(standardData.name, geometryField, standardData.description, standardData.unit, opacityExpression, channelSelection, overlapBehavior, colorMap, contrastEnhancement, shadedRelief, symbolizer);
if (vendorOptionRasterFactory != null) {
vendorOptionRasterFactory.updateSymbol(rasterSymbolizer);
}
rasterSymbolizer.setOverlapBehavior(overlapBehavior);
SelectedSymbol.getInstance().replaceSymbolizer(rasterSymbolizer);
this.fireUpdateSymbol();
}
use of org.geotools.styling.ContrastEnhancement in project sldeditor by robward-scisys.
the class RasterSymbolizerDetails method extractContrastEnhancementGroup.
/**
* Extract contrast enhancement group.
*
* @param channelGroup the channel group
* @param nameField the name field
* @param contrastGroup the contrast group
* @param gammaField the gamma field
* @param contrastMethod the contrast method
* @return the selected channel type
*/
private SelectedChannelType extractContrastEnhancementGroup(GroupIdEnum channelGroup, FieldIdEnum nameField, GroupIdEnum contrastGroup, FieldIdEnum gammaField, GroupIdEnum contrastMethod) {
SelectedChannelType channelType = null;
GroupConfigInterface group = getGroup(channelGroup);
if (group.isPanelEnabled()) {
String channelName = fieldConfigVisitor.getText(nameField);
GroupConfigInterface contrastGrp = getGroup(contrastGroup);
ContrastEnhancement contrastEnhancement = null;
if (contrastGrp.isPanelEnabled()) {
Expression gammaExpression = fieldConfigVisitor.getExpression(gammaField);
GroupConfigInterface constrastMethodGroup = getGroup(contrastMethod);
if (constrastMethodGroup != null) {
String method = null;
MultiOptionGroup constrastMethodGroup2 = (MultiOptionGroup) constrastMethodGroup;
OptionGroup selectedOption = constrastMethodGroup2.getSelectedOptionGroup();
if (selectedOption != null) {
method = selectedOption.getLabel();
}
contrastEnhancement = (ContrastEnhancement) getStyleFactory().contrastEnhancement(gammaExpression, method);
}
}
channelType = getStyleFactory().createSelectedChannelType(channelName, contrastEnhancement);
}
return channelType;
}
use of org.geotools.styling.ContrastEnhancement in project sldeditor by robward-scisys.
the class RasterSymbolizerDetails method populate.
/**
* Populate.
*
* @param selectedSymbol the selected symbol
*/
/*
* (non-Javadoc)
*
* @see com.sldeditor.ui.iface.PopulateDetailsInterface#populate(com.sldeditor.ui.detail.selectedsymbol.SelectedSymbol)
*/
@Override
public void populate(SelectedSymbol selectedSymbol) {
if (selectedSymbol != null) {
RasterSymbolizer rasterSymbolizer = (RasterSymbolizer) selectedSymbol.getSymbolizer();
if (rasterSymbolizer != null) {
populateStandardData(rasterSymbolizer);
// Opacity
fieldConfigVisitor.populateField(FieldIdEnum.RASTER_OPACITY, rasterSymbolizer.getOpacity());
// Contrast enhancement
ContrastEnhancement contrast = rasterSymbolizer.getContrastEnhancement();
GroupConfigInterface group = getGroup(GroupIdEnum.RASTER_CONTRAST);
if (group != null) {
group.enable(contrast != null);
}
if (contrast != null) {
Expression gammaValue = contrast.getGammaValue();
fieldConfigVisitor.populateField(FieldIdEnum.RASTER_CONTRAST_GAMMAVALUE, gammaValue);
populateContrastMethod(contrast, GroupIdEnum.RASTER_OVERALL_CONTRAST_METHOD);
}
// Channel selection
group = getGroup(GroupIdEnum.RASTER_CHANNELSELECTION);
if (group != null) {
MultiOptionGroup channelSelectionGroup = (MultiOptionGroup) group;
ChannelSelection channelSelection = rasterSymbolizer.getChannelSelection();
boolean enableChannelSelection = false;
if (channelSelection != null) {
SelectedChannelType[] rgbChannels = channelSelection.getRGBChannels();
enableChannelSelection = ((channelSelection.getGrayChannel() != null) || (rgbChannels[0] != null) || (rgbChannels[1] != null) || (rgbChannels[2] != null));
}
channelSelectionGroup.enable(enableChannelSelection);
if (enableChannelSelection) {
SelectedChannelType greyChannel = channelSelection.getGrayChannel();
if (greyChannel != null) {
channelSelectionGroup.setOption(GroupIdEnum.RASTER_GREY_CHANNEL_OPTION);
populateContrastEnhancementGroup(GroupIdEnum.RASTER_GREY_CHANNEL, FieldIdEnum.RASTER_RGB_GREY_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_GREY_CONTRAST_METHOD, greyChannel);
} else {
SelectedChannelType[] rgbChannels = channelSelection.getRGBChannels();
channelSelectionGroup.setOption(GroupIdEnum.RASTER_RGB_CHANNEL_OPTION);
populateContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_RED, FieldIdEnum.RASTER_RGB_RED_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_RED_CONTRAST_METHOD, rgbChannels[0]);
populateContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_GREEN, FieldIdEnum.RASTER_RGB_GREEN_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_GREEN_CONTRAST_METHOD, rgbChannels[1]);
populateContrastEnhancementGroup(GroupIdEnum.RASTER_RGB_CHANNEL_BLUE, FieldIdEnum.RASTER_RGB_BLUE_NAME, GroupIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST, FieldIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST_GAMMA, GroupIdEnum.RASTER_RGB_CHANNEL_BLUE_CONTRAST_METHOD, rgbChannels[2]);
}
}
}
// Colour map
ColorMap colourMap = rasterSymbolizer.getColorMap();
fieldConfigVisitor.populateComboBoxField(FieldIdEnum.RASTER_COLOURMAP_TYPE, Integer.valueOf(colourMap.getType()).toString());
fieldConfigVisitor.populateColourMapField(FieldIdEnum.RASTER_COLOURMAP, colourMap);
// Shaded relief
ShadedRelief shadedRelief = rasterSymbolizer.getShadedRelief();
group = getGroup(GroupIdEnum.RASTER_SHADEDRELIEF);
if (group != null) {
group.enable(shadedRelief != null);
}
if (shadedRelief != null) {
fieldConfigVisitor.populateBooleanField(FieldIdEnum.RASTER_SHADEDRELIEF_BRIGHTNESS, shadedRelief.isBrightnessOnly());
fieldConfigVisitor.populateField(FieldIdEnum.RASTER_SHADEDRELIEF_FACTOR, shadedRelief.getReliefFactor());
}
// Overlap behaviour
OverlapBehavior overlapBehaviour = rasterSymbolizer.getOverlapBehavior();
group = getGroup(GroupIdEnum.RASTER_OVERLAP);
if (group != null) {
group.enable(overlapBehaviour != null);
}
if (overlapBehaviour != null) {
fieldConfigVisitor.populateComboBoxField(FieldIdEnum.RASTER_OVERLAP_BEHAVIOUR, overlapBehaviour.name());
}
if (vendorOptionRasterFactory != null) {
vendorOptionRasterFactory.populate(rasterSymbolizer);
}
}
}
}
use of org.geotools.styling.ContrastEnhancement in project sldeditor by robward-scisys.
the class RasterSymbolizerDetailsTest method testRasterSymbolizerDetailsGreyChannel.
/**
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#RasterSymbolizerDetails(com.sldeditor.filter.v2.function.FunctionNameInterface)}.
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#isDataPresent()}.
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#populate(com.sldeditor.common.data.SelectedSymbol)}.
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#dataChanged(com.sldeditor.ui.detail.config.FieldId)}.
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#getFieldDataManager()}.
* Test method for {@link com.sldeditor.ui.detail.RasterSymbolizerDetails#preLoadSymbol()}.
*/
@Test
public void testRasterSymbolizerDetailsGreyChannel() {
RasterSymbolizerDetails panel = new RasterSymbolizerDetails();
panel.populate(null);
// Set up test data
StyledLayerDescriptor sld = DefaultSymbols.createNewSLD();
SelectedSymbol.getInstance().createNewSLD(sld);
NamedLayer namedLayer = DefaultSymbols.createNewNamedLayer();
String expectedNameLayerValue = "named layer test value";
namedLayer.setName(expectedNameLayerValue);
Style style = DefaultSymbols.createNewStyle();
String expectedNameStyleValue = "style test value";
style.setName(expectedNameStyleValue);
namedLayer.addStyle(style);
FeatureTypeStyle fts = DefaultSymbols.createNewFeatureTypeStyle();
String expectedNameFTSValue = "feature type style test value";
fts.setName(expectedNameFTSValue);
style.featureTypeStyles().add(fts);
Rule rule = DefaultSymbols.createNewRule();
String expectedRuleValue = "rule test value";
rule.setName(expectedRuleValue);
RasterSymbolizer symbolizer = DefaultSymbols.createDefaultRasterSymbolizer();
StyleFactoryImpl styleFactory = (StyleFactoryImpl) CommonFactoryFinder.getStyleFactory();
FilterFactory ff = CommonFactoryFinder.getFilterFactory();
ContrastEnhancement contrastEnhancement = (ContrastEnhancement) styleFactory.contrastEnhancement(ff.literal(.5), "ramp");
SelectedChannelType greyChannel = styleFactory.createSelectedChannelType("grey", contrastEnhancement);
symbolizer.setChannelSelection(styleFactory.channelSelection(greyChannel));
String expectedNameValue = "symbolizer test value";
symbolizer.setName(expectedNameValue);
rule.symbolizers().add(symbolizer);
fts.rules().add(rule);
sld.layers().add(namedLayer);
SelectedSymbol.getInstance().addNewStyledLayer(namedLayer);
SelectedSymbol.getInstance().setStyledLayer(namedLayer);
SelectedSymbol.getInstance().setStyle(style);
SelectedSymbol.getInstance().setFeatureTypeStyle(fts);
SelectedSymbol.getInstance().setRule(rule);
SelectedSymbol.getInstance().setSymbolizer(symbolizer);
panel.populate(SelectedSymbol.getInstance());
GraphicPanelFieldManager fieldDataManager = panel.getFieldDataManager();
assertNotNull(fieldDataManager);
panel.dataChanged(null);
FieldConfigString nameField = (FieldConfigString) fieldDataManager.get(FieldIdEnum.NAME);
assertNull(nameField);
assertTrue(panel.isDataPresent());
// Reset to default value
panel.preLoadSymbol();
}
Aggregations