private void handleStyling( RasterStyling styling, AbstractRaster raster ) { BufferedImage img = null; if ( styling.channelSelection != null ) { // Compute channel selection indexes on current raster styling.channelSelection.evaluate( raster.getRasterDataInfo().bandInfo ); } // TODO maybe reorder this a bit if ( styling.shaded != null ) { raster = performHillShading( raster, styling ); } if ( styling.channelSelection != null ) { raster = evaluateChannelSelections( styling.channelSelection, raster ); } if ( styling.contrastEnhancement != null ) { raster = performContrastEnhancement( raster, styling.contrastEnhancement ); } if ( styling.opacity != 1 ) { LOG.trace( "Using opacity: {}", styling.opacity ); graphics.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, (float) styling.opacity ) ); } img = handleFunctions( styling, raster ); LOG.trace( "Rendering raster..." ); if ( img != null ) { render( img, raster.getEnvelope() ); } else { render( raster ); } LOG.trace( "Done rendering raster." ); handleOutline( styling, raster ); }