/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2014, 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;
* version 2.1 of the License.
*
* 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.display2d.ext.isoline.symbolizer;
import org.geotoolkit.display2d.GO2Utilities;
import org.geotoolkit.display2d.canvas.RenderingContext2D;
import org.geotoolkit.display2d.service.DefaultGlyphService;
import org.geotoolkit.display2d.style.renderer.AbstractSymbolizerRendererService;
import org.geotoolkit.display2d.style.renderer.SymbolizerRenderer;
import org.geotoolkit.display2d.style.renderer.SymbolizerRendererService;
import org.geotoolkit.map.MapLayer;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import org.geotoolkit.display2d.style.CachedRasterSymbolizer;
/**
* @author Quentin Boileau (Geomatys)
*/
public class IsolineSymbolizerRendererService extends AbstractSymbolizerRendererService<IsolineSymbolizer, CachedIsolineSymbolizer> {
@Override
public boolean isGroupSymbolizer() {
return false;
}
@Override
public Class<IsolineSymbolizer> getSymbolizerClass() {
return IsolineSymbolizer.class;
}
@Override
public Class<CachedIsolineSymbolizer> getCachedSymbolizerClass() {
return CachedIsolineSymbolizer.class;
}
@Override
public CachedIsolineSymbolizer createCachedSymbolizer(IsolineSymbolizer symbol) {
return new CachedIsolineSymbolizer(symbol, this);
}
@Override
public SymbolizerRenderer createRenderer(CachedIsolineSymbolizer symbol, RenderingContext2D context) {
return new IsolineSymbolizerRenderer(this, symbol, context);
}
@Override
public Rectangle2D glyphPreferredSize(CachedIsolineSymbolizer symbol, MapLayer layer) {
CachedRasterSymbolizer rs = symbol.getCachedRasterSymbolizer();
if(rs!=null){
SymbolizerRendererService rasterRenderer = GO2Utilities.findRenderer(rs);
return rasterRenderer.glyphPreferredSize(symbol.getCachedRasterSymbolizer(), layer);
}
return super.glyphPreferredSize(symbol, layer);
}
@Override
public void glyph(Graphics2D g, Rectangle2D rect, CachedIsolineSymbolizer symbol, MapLayer layer) {
CachedRasterSymbolizer rs = symbol.getCachedRasterSymbolizer();
if(rs!=null){
DefaultGlyphService.render(symbol.getCachedRasterSymbolizer().getSource(), rect, g, layer);
}
//TODO add lines
}
}