Fill flBackground = are.getBackground( );
Fill flBackground = validateMultipleFill( are.getBackground( ) );
	public void fillArea( AreaRenderEvent are ) throws ChartException	{		Fill flBackground = are.getBackground( );		if ( isFullTransparent( flBackground ) )		{			return;		}		// BUILD THE GENERAL PATH STRUCTURE		final Path gp = new Path( ( (SwtDisplayServer) _ids ).getDevice( ) );		PrimitiveRenderEvent pre;		for ( int i = 0; i < are.getElementCount( ); i++ )		{			pre = are.getElement( i );			if ( pre instanceof ArcRenderEvent )			{				final ArcRenderEvent acre = (ArcRenderEvent) pre;				gp.addArc( (float) acre.getTopLeft( ).getX( ),						(float) acre.getTopLeft( ).getY( ),						(float) acre.getWidth( ),						(float) acre.getHeight( ),						(float) acre.getStartAngle( ),						(float) acre.getAngleExtent( ) );			}			else if ( pre instanceof LineRenderEvent )			{				final LineRenderEvent lre = (LineRenderEvent) pre;				if ( i == 0 )				{					gp.moveTo( (float) lre.getStart( ).getX( ),							(float) lre.getStart( ).getY( ) );				}				gp.lineTo( (float) lre.getEnd( ).getX( ), (float) lre.getEnd( )						.getY( ) );			}		}		// DRAW THE PATH		Region previousClipping = new Region( );		_gc.getClipping( previousClipping );		// TODO intersect previous clipping with current path.		_gc.setClipping( gp );		try		{			if ( flBackground instanceof ColorDefinition )			{				final ColorDefinition cd = (ColorDefinition) flBackground;				// skip full transparency for optimization.				if ( !( cd.isSetTransparency( ) && cd.getTransparency( ) == 0 ) )				{					final Color cBG = (Color) _ids.getColor( cd );					final Color cPreviousBG = _gc.getBackground( );					_gc.setBackground( cBG );					R31Enhance.setAlpha( _gc, cd );					_gc.fillPath( gp );					cBG.dispose( );					_gc.setBackground( cPreviousBG );				}			}			else if ( flBackground instanceof Gradient					|| flBackground instanceof org.eclipse.birt.chart.model.attribute.Image )			{				RectangleRenderEvent rre = (RectangleRenderEvent) ( (EventObjectCache) this ).getEventObject( are.getSource( ),						RectangleRenderEvent.class );				rre.setBackground( are.getBackground( ) );				try				{					rre.setBounds( are.getBounds( ) );					rre.setOutline( are.getOutline( ) );					fillRectangle( rre );				}				catch ( ChartException ufex )				{					throw new ChartException( ChartDeviceSwtActivator.ID,							ChartException.RENDERING,							ufex );				}			}		}		finally		{			// Restore state			_gc.setClipping( previousClipping );			// Free resource			previousClipping.dispose( );			gp.dispose( );		}	}