/* * 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.graduation; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import org.geotoolkit.display2d.canvas.RenderingContext2D; import org.geotoolkit.display2d.style.renderer.AbstractSymbolizerRendererService; import org.geotoolkit.display2d.style.renderer.SymbolizerRenderer; import org.geotoolkit.map.MapLayer; /** * * @author Johann Sorel (Geomatys) */ public class GraduationSymbolizerRendererService extends AbstractSymbolizerRendererService<GraduationSymbolizer,CachedGraduationSymbolizer>{ @Override public boolean isGroupSymbolizer() { return false; } @Override public Class<GraduationSymbolizer> getSymbolizerClass() { return GraduationSymbolizer.class; } @Override public Class<CachedGraduationSymbolizer> getCachedSymbolizerClass() { return CachedGraduationSymbolizer.class; } @Override public CachedGraduationSymbolizer createCachedSymbolizer(GraduationSymbolizer symbol) { return new CachedGraduationSymbolizer(symbol, this); } @Override public SymbolizerRenderer createRenderer(CachedGraduationSymbolizer symbol, RenderingContext2D context) { return new GraduationSymbolizerRenderer(this, symbol, context); } @Override public void glyph(Graphics2D g, Rectangle2D rect, CachedGraduationSymbolizer symbol, MapLayer layer) { final double stepMajor = rect.getWidth()/2; final double stepMinor = rect.getWidth()/10; final double minX = rect.getMinX(); final double minY = rect.getMaxY(); final double maxMajorY = minY - rect.getHeight()/2; final double maxMinorY = minY - rect.getHeight()/3; //draw minor ticks g.setStroke(new BasicStroke(1)); g.setColor(Color.DARK_GRAY); for(int i=0;i<11;i++){ final int x = (int)(minX + i*stepMinor); g.drawLine(x, (int)minY, x, (int)maxMinorY); } //draw major ticks g.setStroke(new BasicStroke(2)); g.setColor(Color.RED); for(int i=0;i<3;i++){ final int x = (int)(minX + i*stepMajor); g.drawLine(x, (int)minY, x, (int)maxMajorY); } } }