pt.moveTo( (float) xe, (float) ye );
	protected void drawArc( GC _gc, Device _dv, ArcRenderEvent are,			double dTranslateX, double dTranslateY, double dScale )	{		if ( are.getInnerRadius( ) >= 0				&& ( are.getOuterRadius( ) > 0 && are.getInnerRadius( ) < are.getOuterRadius( ) )				|| ( are.getInnerRadius( ) > 0 && are.getOuterRadius( ) <= 0 ) )		{			Bounds bo = BoundsImpl.create( are.getTopLeft( ).getX( ),					are.getTopLeft( ).getY( ),					are.getWidth( ),					are.getHeight( ) );			Bounds rctOuter, rctInner;			if ( are.getOuterRadius( ) > 0 )			{				rctOuter = BoundsImpl.create( ( ( bo.getLeft( ) + dTranslateX + ( bo.getWidth( ) / 2d - are.getOuterRadius( ) ) ) * dScale ),						( ( bo.getTop( ) + dTranslateY + ( bo.getHeight( ) / 2d - are.getOuterRadius( ) ) ) * dScale ),						( 2 * are.getOuterRadius( ) * dScale ),						( 2 * are.getOuterRadius( ) * dScale ) );			}			else			{				rctOuter = BoundsImpl.create( ( ( bo.getLeft( ) + dTranslateX ) * dScale ),						( ( bo.getTop( ) + dTranslateY ) * dScale ),						( bo.getWidth( ) * dScale ),						( bo.getHeight( ) * dScale ) );			}			if ( are.getInnerRadius( ) > 0 )			{				rctInner = BoundsImpl.create( ( ( bo.getLeft( ) + dTranslateX + ( bo.getWidth( ) / 2d - are.getInnerRadius( ) ) ) * dScale ),						( ( bo.getTop( ) + dTranslateY + ( bo.getHeight( ) / 2d - are.getInnerRadius( ) ) ) * dScale ),						( 2 * are.getInnerRadius( ) * dScale ),						( 2 * are.getInnerRadius( ) * dScale ) );			}			else			{				rctInner = BoundsImpl.create( ( ( bo.getLeft( ) + dTranslateX + bo.getWidth( ) / 2d ) * dScale ),						( ( bo.getTop( ) + dTranslateY + bo.getHeight( ) / 2d ) * dScale ),						0,						0 );			}			double startAngle = Math.toRadians( -are.getStartAngle( ) );			double stopAngle = Math.toRadians( -are.getStartAngle( )					- are.getAngleExtent( ) );			double xsOuter = ( rctOuter.getLeft( ) + ( Math.cos( startAngle ) * 0.5 + 0.5 )					* rctOuter.getWidth( ) );			double ysOuter = ( rctOuter.getTop( ) + ( Math.sin( startAngle ) * 0.5 + 0.5 )					* rctOuter.getHeight( ) );			// double xeOuter = ( rctOuter.getLeft( ) + ( Math.cos( stopAngle )			// * 0.5 + 0.5 )			// * rctOuter.getWidth( ) );			// double yeOuter = ( rctOuter.getTop( ) + ( Math.sin( stopAngle ) *			// 0.5 + 0.5 )			// * rctOuter.getHeight( ) );			//			// double xsInner = ( rctInner.getLeft( ) + ( Math.cos( startAngle )			// * 0.5 + 0.5 )			// * rctInner.getWidth( ) );			// double ysInner = ( rctInner.getTop( ) + ( Math.sin( startAngle )			// * 0.5 + 0.5 )			// * rctInner.getHeight( ) );			double xeInner = ( rctInner.getLeft( ) + ( Math.cos( stopAngle ) * 0.5 + 0.5 )					* rctInner.getWidth( ) );			double yeInner = ( rctInner.getTop( ) + ( Math.sin( stopAngle ) * 0.5 + 0.5 )					* rctInner.getHeight( ) );			Path pt = new Path( _dv );			pt.addArc( (float) rctOuter.getLeft( ),					(float) rctOuter.getTop( ),					(float) rctOuter.getWidth( ),					(float) rctOuter.getHeight( ),					(float) are.getStartAngle( ),					(float) are.getAngleExtent( ) );			pt.lineTo( (float) xeInner, (float) yeInner );			pt.addArc( (float) rctInner.getLeft( ),					(float) rctInner.getTop( ),					(float) rctInner.getWidth( ),					(float) rctInner.getHeight( ),					(float) ( are.getStartAngle( ) + are.getAngleExtent( ) ),					(float) -are.getAngleExtent( ) );			pt.lineTo( (float) xsOuter, (float) ysOuter );			_gc.drawPath( pt );			pt.dispose( );		}		else		{			if ( are.getStyle( ) == ArcRenderEvent.OPEN )			{				_gc.drawArc( (int) ( ( are.getTopLeft( ).getX( ) + dTranslateX ) * dScale ),						(int) ( ( are.getTopLeft( ).getY( ) + dTranslateY ) * dScale ),						(int) ( are.getWidth( ) * dScale ),						(int) ( are.getHeight( ) * dScale ),						(int) are.getStartAngle( ),						(int) are.getAngleExtent( ) );			}			else			{				double xc = ( ( are.getTopLeft( ).getX( ) + dTranslateX + are.getWidth( ) / 2d ) * dScale );				double yc = ( ( are.getTopLeft( ).getY( ) + dTranslateY + are.getHeight( ) / 2d ) * dScale );				double xs = 0, ys = 0;// , xe = 0, ye = 0;				double angle = Math.toRadians( -are.getStartAngle( ) );				xs = ( ( are.getTopLeft( ).getX( ) + dTranslateX + ( Math.cos( angle ) * 0.5 + 0.5 )						* are.getWidth( ) ) * dScale );				ys = ( ( are.getTopLeft( ).getY( ) + dTranslateY + ( Math.sin( angle ) * 0.5 + 0.5 )						* are.getHeight( ) ) * dScale );				// angle = Math.toRadians( -are.getStartAngle( )				// - are.getAngleExtent( ) );				//				// xe = ( ( are.getTopLeft( ).getX( ) + dTranslateX + (				// Math.cos( angle ) * 0.5 + 0.5 )				// * are.getWidth( ) ) * dScale );				// ye = ( ( are.getTopLeft( ).getY( ) + dTranslateY + (				// Math.sin( angle ) * 0.5 + 0.5 )				// * are.getHeight( ) ) * dScale );				Path pt = new Path( _dv );				if ( are.getStyle( ) == ArcRenderEvent.CLOSED )				{					pt.addArc( (float) ( ( are.getTopLeft( ).getX( ) + dTranslateX ) * dScale ),							(float) ( ( are.getTopLeft( ).getY( ) + dTranslateY ) * dScale ),							(float) ( are.getWidth( ) * dScale ),							(float) ( are.getHeight( ) * dScale ),							(float) are.getStartAngle( ),							(float) are.getAngleExtent( ) );					pt.lineTo( (float) xs, (float) ys );					_gc.drawPath( pt );				}				else if ( are.getStyle( ) == ArcRenderEvent.SECTOR )				{					pt.addArc( (float) ( ( are.getTopLeft( ).getX( ) + dTranslateX ) * dScale ),							(float) ( ( are.getTopLeft( ).getY( ) + dTranslateY ) * dScale ),							(float) ( are.getWidth( ) * dScale ),							(float) ( are.getHeight( ) * dScale ),							(float) are.getStartAngle( ),							(float) are.getAngleExtent( ) );					pt.lineTo( (float) xc, (float) yc );					pt.lineTo( (float) xs, (float) ys );					_gc.drawPath( pt );				}				pt.dispose( );			}		}	}