@Override public void createLabel( TextStyling styling, String text, Collection<Geometry> geoms ) { for ( Geometry g : geoms ) { createLabel( styling, text, g ); } }
private <T extends Geometry> ArrayList<Label> handleMultiGeometry( TextStyling styling, String text, Font font, MultiGeometry<T> geom ) { ArrayList<Label> list = new ArrayList<Label>(); for ( T g : geom ) { handleGeometryTypes( styling, text, font, g ); } return list; }
private void handleGeometryTypes( TextStyling styling, String text, Font font, Geometry geom ) { if ( geom == null ) { LOG.warn( "null geometry cannot be handled." ); return; } if ( geom instanceof Point ) { labelList.add( createLabel( styling, font, text, (Point) geom ) ); } else if ( geom instanceof Surface && styling.linePlacement != null ) { textRenderer.render( styling, font, text, (Surface) geom ); } else if ( geom instanceof Curve && styling.linePlacement != null ) { textRenderer.render( styling, font, text, (Curve) geom ); } else if ( geom instanceof Polygon && styling.auto ) { handlePolygonWithAutoPlacement( styling, font, text, (Polygon) geom ); } else if ( geom instanceof GeometricPrimitive ) { labelList.add( createLabel( styling, font, text, geom.getCentroid() ) ); } else if ( geom instanceof MultiPoint ) { handleMultiGeometry( styling, text, font, (MultiPoint) geom ); } else if ( geom instanceof MultiCurve<?> && styling.linePlacement != null ) { handleMultiGeometry( styling, text, font, (MultiCurve<?>) geom ); } else if ( geom instanceof MultiLineString && styling.linePlacement != null ) { handleMultiGeometry( styling, text, font, (MultiLineString) geom ); } else if ( geom instanceof MultiGeometry<?> ) { handleMultiGeometry( styling, text, font, (MultiGeometry<?>) geom ); } else { LOG.warn( "Trying to use unsupported geometry type '{}' for text rendering.", geom.getClass().getSimpleName() ); } }
@Override public void render( List<Label> pLabels ) { for ( Label l : pLabels ) { render( l ); } }
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() { for ( Label l : labelList ) { render( l ); } labelList = null; }
@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 ); }