include/vcl/outdev.hxx | 6 +++--- include/vcl/print.hxx | 2 +- vcl/source/gdi/outdev4.cxx | 32 ++++++++++++++++---------------- vcl/source/gdi/print.cxx | 10 +++++----- 4 files changed, 25 insertions(+), 25 deletions(-)
New commits: commit 480157e58fe4fe6694c0459d3f9f009d1c0902bf Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Thu Apr 10 00:33:28 2014 +1000 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 diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 94805c7..3c10cbd 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -842,10 +842,10 @@ protected: void DrawInvisiblePolygon( const PolyPolygon& rPolyPoly ); virtual void ClipAndDrawGradientToBounds( Gradient &rGradient, const PolyPolygon &rPolyPoly ); - void ClipAndDrawGradient( Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ); - void XORClipAndDrawGradient( Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ); + void ClipAndDrawGradient( Gradient &rGradient, const PolyPolygon &rPolyPoly ); + void XORClipAndDrawGradient( Gradient &rGradient, const PolyPolygon &rPolyPoly ); - virtual void ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ); + virtual void ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly ); private: typedef void ( OutputDevice::* FontUpdateHandler_t )( bool ); diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx index 723d734..1f9b6fd 100644 --- a/include/vcl/print.hxx +++ b/include/vcl/print.hxx @@ -275,7 +275,7 @@ public: protected: long ImplGetGradientStepCount( long nMinRect ) SAL_OVERRIDE; virtual void ClipAndDrawGradientToBounds( Gradient &rGradient, const PolyPolygon &rPolyPoly ) SAL_OVERRIDE; - virtual void ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly, const Rectangle &rBoundRect ) SAL_OVERRIDE; + virtual void ClipAndDrawGradientMetafile ( const Gradient &rGradient, const PolyPolygon &rPolyPoly ) SAL_OVERRIDE; virtual bool UsePolyPolygonForComplexGradient() SAL_OVERRIDE; void ScaleBitmap ( Bitmap&, SalTwoRect& ) SAL_OVERRIDE { }; diff --git a/vcl/source/gdi/outdev4.cxx b/vcl/source/gdi/outdev4.cxx index 0198b84..5b3032f 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 774a82f..cb8d903 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(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits