private void handlePolygonWithAutoPlacement( TextStyling styling, Font font, String text, Polygon geom ) { Geometry transformedGeom = renderer.rendererContext.geomHelper.transform( geom ); MultiPoint points = renderer.rendererContext.clipper.calculateInteriorPoints( transformedGeom ); if ( geom == null ) return; handleMultiGeometry( styling, text, font, (MultiGeometry) points ); }
public Java2DRenderContext( RenderingInfo info, Graphics2D graphics, OutputStream outputStream ) { this.graphics = graphics; this.outputStream = outputStream; renderer = new Java2DRenderer( graphics, info.getWidth(), info.getHeight(), info.getEnvelope(), info.getPixelSize() * 1000 ); textRenderer = new Java2DTextRenderer( renderer ); labelRenderer = new Java2DLabelRenderer( renderer, textRenderer ); rasterRenderer = new Java2DRasterRenderer( graphics ); tileRenderer = new Java2DTileRenderer( graphics, info.getWidth(), info.getHeight(), info.getEnvelope() ); }
@Override public void render( List<Label> pLabels ) { for ( Label l : pLabels ) { render( l ); } }
RendererContext( double pixelSize, double res, Graphics2D graphics, Java2DRenderer renderer, Envelope bbox, int width, AffineTransform worldToScreen ) { this.graphics = graphics; if ( bbox != null ) { geomHelper = new GeometryHelper( bbox, width, worldToScreen ); clipper = new GeometryClipper( bbox, width ); } uomCalculator = new UomCalculator( pixelSize, res ); fillRenderer = new Java2DFillRenderer( uomCalculator, graphics ); strokeRenderer = new Java2DStrokeRenderer( graphics, uomCalculator, fillRenderer ); svgRenderer = new SvgRenderer(); polygonRenderer = new PolygonRenderer( geomHelper, fillRenderer, strokeRenderer, graphics, renderer ); curveRenderer = new CurveRenderer( renderer ); pointRenderer = new PointRenderer( renderer.worldToScreen, this ); }
List<LegendItem> prepareLegend( Style style, Graphics2D g, int width, int height ) { Pair<Integer, Integer> p = getLegendSize( style ); Envelope box = geofac.createEnvelope( 0, 0, p.first, p.second, null ); Java2DRenderer renderer = new Java2DRenderer( g, width, height, box ); Java2DTextRenderer textRenderer = new Java2DTextRenderer( renderer ); Java2DRasterRenderer rasterRenderer = new Java2DRasterRenderer( g, width, height, box ); return LegendItemBuilder.prepareLegend( style, renderer, textRenderer, rasterRenderer ); }
@Override public void createLabel( TextStyling styling, String text, Geometry geom ) { if ( geom == null ) { LOG.debug( "Trying to render null geometry." ); } if ( text == null || text.length() == 0 ) { LOG.debug( "Trying to render null or zero length text." ); } geom = renderer.rendererContext.geomHelper.transform( geom ); geom = renderer.rendererContext.clipper.clipGeometry( geom ); Font font = textRenderer.convertFont( styling ); handleGeometryTypes( styling, text, font, geom ); }
Geometry transformToWorldCrsAndClip( final Geometry geom ) { final Geometry geomInWorldCrs = rendererContext.geomHelper.transform( geom ); if ( rendererContext.clipper == null ) { LOG.warn( "No clipper defined, geometry will be ignored for rendering" ); return null; } return rendererContext.clipper.clipGeometry( geomInWorldCrs ); }
/** * @param graphics */ public Java2DRenderer( Graphics2D graphics ) { this.graphics = graphics; res = 1; initRenderers( null ); }
/** * Clips the passed geometry with the drawing area if the drawing area does not contain the passed geometry * completely. * * @param geom * the geometry to clip, must not be <code>null</code> and in the same CRS as the clipping area * @return the clipped geometry or the original geometry if the geometry lays completely in the drawing area. */ Geometry clipGeometry( final Geometry geom ) { return clipGeometry( geom, clippingArea ); }
/** * @param graphics * @param width * @param height * @param envelope */ public Java2DTileRenderer( Graphics2D graphics, int width, int height, Envelope envelope ) { this.graphics = graphics; RenderHelper.getWorldToScreenTransform( worldToScreen, envelope, width, height ); }
@Override protected boolean removeEldestEntry( Map.Entry<ComparablePair<String, Integer>, BufferedImage> eldest ) { return size() > 256; // yeah, hardcoded max size... TODO } };
@Override public void render( TextStyling styling, String text, Collection<Geometry> geoms ) { for ( Geometry g : geoms ) { render( styling, text, g ); } }
@Override public void createLabel( TextStyling styling, String text, Collection<Geometry> geoms ) { for ( Geometry g : geoms ) { createLabel( styling, text, g ); } }
private <T extends Geometry> void handleMultiGeometry( TextStyling styling, String text, Font font, MultiGeometry<T> geom ) { for ( T g : geom ) { handleGeometryTypes( styling, text, font, g ); } }
GeometryClipper( final Envelope viewPort, final int width ) { this.viewPort = viewPort; this.clippingArea = calculateClippingArea( viewPort, width ); }
private void initRenderers( Envelope bbox ) { rendererContext = new RendererContext( pixelSize, res, graphics, this, bbox, width, worldToScreen ); }
public double getResolution() { return RenderHelper.calcResolution( envelope, width, height ); }
public static boolean isGenerationExpensive( PolygonStyling styling ) { if ( styling == null ) return false; return ( !isZero( styling.perpendicularOffset ) || isGenerationExpensive( styling.stroke )); }
@Override public void render() { for ( Label l : labelList ) { render( l ); } labelList = null; }
/** * @param graphics * @param width * @param height * @param bbox * @param pixelSize * in mm */ public Java2DRenderer( Graphics2D graphics, int width, int height, Envelope bbox, double pixelSize ) { this( graphics, width, height, bbox ); this.pixelSize = pixelSize; initRenderers( bbox ); }