vcl/win/gdi/gdiimpl.cxx | 55 ++++++++++++++++++++++++------------------------ 1 file changed, 28 insertions(+), 27 deletions(-)
New commits: commit af4fab260b4e5e6cd073d449081dd057b9715881 Author: Dmitriy Shilin <ds...@fastmail.com> AuthorDate: Fri Dec 7 10:45:14 2018 +0300 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Fri Dec 7 11:23:18 2018 +0100 tdf#39593 vcl: reduce copy-paste in ImplCalcOutSideRgn Change-Id: I13e13e5e17815bbffef6132ed28fadd3fb12f99b Reviewed-on: https://gerrit.libreoffice.org/64750 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/vcl/win/gdi/gdiimpl.cxx b/vcl/win/gdi/gdiimpl.cxx index fbb36b16ffe2..b2879686d9a7 100644 --- a/vcl/win/gdi/gdiimpl.cxx +++ b/vcl/win/gdi/gdiimpl.cxx @@ -344,47 +344,48 @@ void WinSalGraphicsImpl::copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcG } } -static void ImplCalcOutSideRgn( const RECT& rSrcRect, +namespace +{ + +void MakeInvisibleArea(const RECT& rSrcRect, + int nLeft, int nTop, int nRight, int nBottom, + HRGN& rhInvalidateRgn) +{ + if (!rhInvalidateRgn) + { + rhInvalidateRgn = CreateRectRgnIndirect(&rSrcRect); + } + + HRGN hTempRgn = CreateRectRgn(nLeft, nTop, nRight, nBottom); + CombineRgn(rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF); + DeleteRegion(hTempRgn); +} + +void ImplCalcOutSideRgn( const RECT& rSrcRect, int nLeft, int nTop, int nRight, int nBottom, HRGN& rhInvalidateRgn ) { - HRGN hTempRgn; - // calculate area outside the visible region - if ( rSrcRect.left < nLeft ) + if (rSrcRect.left < nLeft) { - if ( !rhInvalidateRgn ) - rhInvalidateRgn = CreateRectRgnIndirect( &rSrcRect ); - hTempRgn = CreateRectRgn( -31999, 0, nLeft, 31999 ); - CombineRgn( rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF ); - DeleteRegion( hTempRgn ); + MakeInvisibleArea(rSrcRect, -31999, 0, nLeft, 31999, rhInvalidateRgn); } - if ( rSrcRect.top < nTop ) + if (rSrcRect.top < nTop) { - if ( !rhInvalidateRgn ) - rhInvalidateRgn = CreateRectRgnIndirect( &rSrcRect ); - hTempRgn = CreateRectRgn( 0, -31999, 31999, nTop ); - CombineRgn( rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF ); - DeleteRegion( hTempRgn ); + MakeInvisibleArea(rSrcRect, 0, -31999, 31999, nTop, rhInvalidateRgn); } - if ( rSrcRect.right > nRight ) + if (rSrcRect.right > nRight) { - if ( !rhInvalidateRgn ) - rhInvalidateRgn = CreateRectRgnIndirect( &rSrcRect ); - hTempRgn = CreateRectRgn( nRight, 0, 31999, 31999 ); - CombineRgn( rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF ); - DeleteRegion( hTempRgn ); + MakeInvisibleArea(rSrcRect, nRight, 0, 31999, 31999, rhInvalidateRgn); } - if ( rSrcRect.bottom > nBottom ) + if (rSrcRect.bottom > nBottom) { - if ( !rhInvalidateRgn ) - rhInvalidateRgn = CreateRectRgnIndirect( &rSrcRect ); - hTempRgn = CreateRectRgn( 0, nBottom, 31999, 31999 ); - CombineRgn( rhInvalidateRgn, rhInvalidateRgn, hTempRgn, RGN_DIFF ); - DeleteRegion( hTempRgn ); + MakeInvisibleArea(rSrcRect, 0, nBottom, 31999, 31999, rhInvalidateRgn); } } +} // namespace + void WinSalGraphicsImpl::copyArea( long nDestX, long nDestY, long nSrcX, long nSrcY, long nSrcWidth, long nSrcHeight, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits