diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-04-10 00:33:28 +1000 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-04-10 01:11:38 +1000 |
commit | 480157e58fe4fe6694c0459d3f9f009d1c0902bf (patch) | |
tree | 292d450ad8dbc67b439e92f410595bc67bc6fca0 /vcl/source/gdi | |
parent | a420aa90a8ca2c2bf7cc10068d68ae82b946ac6c (diff) |
Remove unnecessary bound-box parameter from clipping functions
The bounding rectangle actually comes from the polygon. Therefore, it's
not needed. Removed from the following functions in OutputDevice, et al
+ ClipAndDrawGradient
+ XORClipAndDrawGradient
+ ClipAndDrawGradientMetafile
Change-Id: I4a87edcddb8895871982f0448854e1c0854124bc
Diffstat (limited to 'vcl/source/gdi')
-rw-r--r-- | vcl/source/gdi/outdev4.cxx | 32 | ||||
-rw-r--r-- | vcl/source/gdi/print.cxx | 10 |
2 files changed, 21 insertions, 21 deletions
diff --git a/vcl/source/gdi/outdev4.cxx b/vcl/source/gdi/outdev4.cxx index 0198b8435324..5b3032fb69ae 100644 --- a/vcl/source/gdi/outdev4.cxx +++ b/vcl/source/gdi/outdev4.cxx @@ -702,39 +702,40 @@ void OutputDevice::DrawGradient( const Rectangle& rRect, } } -void OutputDevice::ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ) +void OutputDevice::ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly ) { + const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); const bool bOldOutput = IsOutputEnabled(); EnableOutput( false ); Push( PUSH_RASTEROP ); SetRasterOp( ROP_XOR ); - DrawGradient( rBoundRect, rGradient ); + DrawGradient( aBoundRect, rGradient ); SetFillColor( COL_BLACK ); SetRasterOp( ROP_0 ); DrawPolyPolygon( rPolyPoly ); SetRasterOp( ROP_XOR ); - DrawGradient( rBoundRect, rGradient ); + DrawGradient( aBoundRect, rGradient ); Pop(); EnableOutput( bOldOutput ); } void OutputDevice::ClipAndDrawGradientToBounds ( Gradient &rGradient, const PolyPolygon &rPolyPoly ) { - const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); - if( ImplGetSVData()->maGDIData.mbNoXORClipping ) - ClipAndDrawGradient ( rGradient, rPolyPoly, aBoundRect ); + ClipAndDrawGradient ( rGradient, rPolyPoly ); else - XORClipAndDrawGradient ( rGradient, rPolyPoly, aBoundRect ); + XORClipAndDrawGradient ( rGradient, rPolyPoly ); } -void OutputDevice::ClipAndDrawGradient ( Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ) +void OutputDevice::ClipAndDrawGradient ( Gradient &rGradient, const PolyPolygon &rPolyPoly ) { + const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); + if( !Rectangle( PixelToLogic( Point() ), GetOutputSize() ).IsEmpty() ) { // convert rectangle to pixels - Rectangle aRect( ImplLogicToDevicePixel( rBoundRect ) ); + Rectangle aRect( ImplLogicToDevicePixel( aBoundRect ) ); aRect.Justify(); // do nothing if the rectangle is empty @@ -772,13 +773,14 @@ void OutputDevice::ClipAndDrawGradient ( Gradient &rGradient, const PolyPolygon } } -void OutputDevice::XORClipAndDrawGradient ( Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ) +void OutputDevice::XORClipAndDrawGradient ( Gradient &rGradient, const PolyPolygon &rPolyPoly ) { const PolyPolygon aPolyPoly( LogicToPixel( rPolyPoly ) ); + const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); Point aPoint; Rectangle aDstRect( aPoint, GetOutputSizePixel() ); - aDstRect.Intersection( rBoundRect ); + aDstRect.Intersection( aBoundRect ); ClipToPaintRegion( aDstRect ); @@ -810,12 +812,12 @@ void OutputDevice::XORClipAndDrawGradient ( Gradient &rGradient, const PolyPolyg pVDev->SetRasterOp( ROP_XOR ); aVDevMap.SetOrigin( Point( -aDstRect.Left(), -aDstRect.Top() ) ); pVDev->SetMapMode( aVDevMap ); - pVDev->DrawGradient( rBoundRect, rGradient ); + pVDev->DrawGradient( aBoundRect, rGradient ); pVDev->SetFillColor( COL_BLACK ); pVDev->SetRasterOp( ROP_0 ); pVDev->DrawPolyPolygon( aPolyPoly ); pVDev->SetRasterOp( ROP_XOR ); - pVDev->DrawGradient( rBoundRect, rGradient ); + pVDev->DrawGradient( aBoundRect, rGradient ); aVDevMap.SetOrigin( Point() ); pVDev->SetMapMode( aVDevMap ); DrawOutDev( aDstRect.TopLeft(), aDstSize, Point(), aDstSize, *pVDev ); @@ -853,12 +855,10 @@ void OutputDevice::DrawGradient( const PolyPolygon& rPolyPoly, if( mpMetaFile ) { - const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); - mpMetaFile->AddAction( new MetaCommentAction( "XGRAD_SEQ_BEGIN" ) ); mpMetaFile->AddAction( new MetaGradientExAction( rPolyPoly, rGradient ) ); - ClipAndDrawGradientMetafile ( rGradient, rPolyPoly, aBoundRect ); + ClipAndDrawGradientMetafile ( rGradient, rPolyPoly ); mpMetaFile->AddAction( new MetaCommentAction( "XGRAD_SEQ_END" ) ); } diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx index 774a82f6d129..cb8d90345dbb 100644 --- a/vcl/source/gdi/print.cxx +++ b/vcl/source/gdi/print.cxx @@ -1814,16 +1814,16 @@ bool Printer::UsePolyPolygonForComplexGradient() void Printer::ClipAndDrawGradientToBounds ( Gradient &rGradient, const PolyPolygon &rPolyPoly ) { - const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); - - ClipAndDrawGradient ( rGradient, rPolyPoly, aBoundRect ); + ClipAndDrawGradient ( rGradient, rPolyPoly ); } -void Printer::ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ) +void Printer::ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly ) { + const Rectangle aBoundRect( rPolyPoly.GetBoundRect() ); + Push( PUSH_CLIPREGION ); IntersectClipRegion(Region(rPolyPoly)); - DrawGradient( rBoundRect, rGradient ); + DrawGradient( aBoundRect, rGradient ); Pop(); } |