/*******************************************************************************
* Copyright 2013 Geoscience Australia
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package au.gov.ga.earthsci.layer.wrappers;
import gov.nasa.worldwind.layers.SkyGradientLayer;
import gov.nasa.worldwind.util.WWXML;
import java.awt.Color;
import javax.xml.xpath.XPath;
import org.w3c.dom.Element;
import au.gov.ga.earthsci.worldwind.common.layers.transform.TransformSkyGradientLayer;
import au.gov.ga.earthsci.worldwind.common.util.XMLUtil;
/**
* {@link ILayerWrapper} for {@link SkyGradientLayer}s.
*
* @author Michael de Hoog (michael.dehoog@ga.gov.au)
*/
public class SkyGradientLayerWrapper extends ClassLayerWrapper<TransformSkyGradientLayer>
{
private final static String ATMOSPHERE_THICKNESS_ELEMENT = "AtmosphereThickness"; //$NON-NLS-1$
private final static String HORIZON_COLOR_ELEMENT = "HorizonColor"; //$NON-NLS-1$
private final static String ZENITH_COLOR_ELEMENT = "ZenithColor"; //$NON-NLS-1$
@Override
protected Class<TransformSkyGradientLayer> getWrappedLayerClass()
{
return TransformSkyGradientLayer.class;
}
@Override
protected void load(TransformSkyGradientLayer layer, Element element)
{
XPath xpath = WWXML.makeXPath();
Double atmosphereThickness = WWXML.getDouble(element, ATMOSPHERE_THICKNESS_ELEMENT, xpath);
if (atmosphereThickness != null)
{
layer.setAtmosphereThickness(atmosphereThickness);
}
Color horizonColor = WWXML.getColor(element, HORIZON_COLOR_ELEMENT, xpath);
if (horizonColor != null)
{
layer.setHorizonColor(horizonColor);
}
Color zenithColor = WWXML.getColor(element, ZENITH_COLOR_ELEMENT, xpath);
if (zenithColor != null)
{
layer.setZenithColor(zenithColor);
}
}
@Override
protected void save(TransformSkyGradientLayer layer, Element element)
{
WWXML.appendDouble(element, ATMOSPHERE_THICKNESS_ELEMENT, layer.getAtmosphereThickness());
XMLUtil.appendColor(element, HORIZON_COLOR_ELEMENT, layer.getHorizonColor());
XMLUtil.appendColor(element, ZENITH_COLOR_ELEMENT, layer.getZenithColor());
}
public double getAtmosphereThickness()
{
return getLayer().getAtmosphereThickness();
}
public void setAtmosphereThickness(double atmosphereThickness)
{
getLayer().setAtmosphereThickness(atmosphereThickness);
}
public Color getHorizonColor()
{
return getLayer().getHorizonColor();
}
public void setHorizonColor(Color horizonColor)
{
getLayer().setHorizonColor(horizonColor);
}
public Color getZenithColor()
{
return getLayer().getZenithColor();
}
public void setZenithColor(Color zenithColor)
{
getLayer().setZenithColor(zenithColor);
}
}