/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.image.filter.effect; import java.awt.Color; import java.awt.Graphics2D; import java.awt.TexturePaint; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; public final class RoundedFilter extends BaseImageFilter { private final int radius; private final int borderSize; private final int borderColor; public RoundedFilter( int radius, int borderSize, int borderColor ) { this.radius = radius; this.borderSize = borderSize; this.borderColor = borderColor; } public BufferedImage filter( BufferedImage source ) { BufferedImage dest = createImage( source ); Graphics2D g = getGraphics( dest ); int arc = this.radius * 2; int margin = this.borderSize; if ( margin > 0 ) { g.setPaint( new Color( this.borderColor, false ) ); g.fillRoundRect( 0, 0, source.getWidth(), source.getHeight(), arc, arc ); } arc = arc - ( margin * 2 ); g.setPaint( new TexturePaint( source, new Rectangle2D.Float( 0, 0, source.getWidth(), source.getHeight() ) ) ); g.fillRoundRect( margin, margin, source.getWidth() - ( margin * 2 ), source.getHeight() - ( margin * 2 ), arc, arc ); g.dispose(); return dest; } }