final Fill flBackground = ore.getBackground( );
final Fill flBackground = validateMultipleFill( ore.getBackground( ) );
	public void fillOval( OvalRenderEvent ore ) throws ChartException	{		final Fill flBackground = ore.getBackground( );		if ( isFullTransparent( flBackground ) )		{			return;		}		final Bounds bo = ore.getBounds( );		final Rectangle r = new Rectangle( (int) ( ( bo.getLeft( ) + dTranslateX ) * dScale ),				(int) ( ( bo.getTop( ) + dTranslateY ) * dScale ),				(int) ( bo.getWidth( ) * dScale ),				(int) ( bo.getHeight( ) * dScale ) );		if ( flBackground instanceof ColorDefinition )		{			final ColorDefinition cd = (ColorDefinition) flBackground;			final Color cBG = (Color) _ids.getColor( cd );			final Color cPreviousBG = _gc.getBackground( );			_gc.setBackground( cBG );			R31Enhance.setAlpha( _gc, cd );			_gc.fillOval( r.x, r.y, r.width, r.height );			cBG.dispose( );			_gc.setBackground( cPreviousBG );		}		else if ( flBackground instanceof Gradient				|| flBackground instanceof org.eclipse.birt.chart.model.attribute.Image )		{			Path pt = new Path( ( (SwtDisplayServer) _ids ).getDevice( ) );			pt.addArc( r.x, r.y, r.width, r.height, 0, 360 );			Region previousClipping = new Region( );			_gc.getClipping( previousClipping );			// TODO intersect previous clipping with current path.			_gc.setClipping( pt );			RectangleRenderEvent rre = (RectangleRenderEvent) ( (EventObjectCache) this ).getEventObject( ore.getSource( ),					RectangleRenderEvent.class );			rre.setBackground( ore.getBackground( ) );			try			{				rre.setBounds( ore.getBounds( ) );				rre.setOutline( ore.getOutline( ) );				fillRectangle( rre );			}			catch ( ChartException ufex )			{				throw new ChartException( ChartDeviceSwtActivator.ID,						ChartException.RENDERING,						ufex );			}			finally			{				_gc.setClipping( previousClipping );				previousClipping.dispose( );				pt.dispose( );			}		}	}