diff options
author | Cédric Bosdonnat <cedric.bosdonnat.ooo@free.fr> | 2012-09-03 16:52:47 +0200 |
---|---|---|
committer | Cédric Bosdonnat <cedric.bosdonnat.ooo@free.fr> | 2012-10-02 17:48:27 +0200 |
commit | a023fd1367931a15e650d3c9ecba9623636ed666 (patch) | |
tree | e973ab44f1987b42104adb69ebf73f165f77a75b | |
parent | a9ebdd0e3464feeea6c22ab5a84c32c1ec71e490 (diff) |
n#777699: Clip the objects to the pagewe are painting
Change-Id: I78ac7de5346a2adea9a2c6cf3cbb0321e05d79dc
-rw-r--r-- | svx/inc/svx/svdpagv.hxx | 3 | ||||
-rw-r--r-- | svx/source/svdraw/svdpagv.cxx | 7 | ||||
-rw-r--r-- | sw/source/core/layout/paintfrm.cxx | 4 | ||||
-rw-r--r-- | sw/source/core/view/vdraw.cxx | 4 |
4 files changed, 11 insertions, 7 deletions
diff --git a/svx/inc/svx/svdpagv.hxx b/svx/inc/svx/svdpagv.hxx index 90bd6951e875..039bd6c6c4f1 100644 --- a/svx/inc/svx/svdpagv.hxx +++ b/svx/inc/svx/svdpagv.hxx @@ -182,7 +182,8 @@ public: // write access to mpPreparedPageWindow void setPreparedPageWindow(SdrPageWindow* pKnownTarget); - void DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget = 0, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L) const; + void DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget = 0, sdr::contact::ViewObjectContactRedirector* pRedirector = 0L, + const Rectangle& rRect = Rectangle()) const; void DrawPageViewGrid(OutputDevice& rOut, const Rectangle& rRect, Color aColor = Color( COL_BLACK ) ); Rectangle GetPageRect() const; diff --git a/svx/source/svdraw/svdpagv.cxx b/svx/source/svdraw/svdpagv.cxx index 5efebdfc304c..9a3aaf16f7f5 100644 --- a/svx/source/svdraw/svdpagv.cxx +++ b/svx/source/svdraw/svdpagv.cxx @@ -346,7 +346,7 @@ void SdrPageView::setPreparedPageWindow(SdrPageWindow* pKnownTarget) mpPreparedPageWindow = pKnownTarget; } -void SdrPageView::DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget, sdr::contact::ViewObjectContactRedirector* pRedirector) const +void SdrPageView::DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget, sdr::contact::ViewObjectContactRedirector* pRedirector, const Rectangle& rRect) const { if(GetPage()) { @@ -374,7 +374,10 @@ void SdrPageView::DrawLayer(SdrLayerID nID, OutputDevice* pGivenTarget, sdr::con // Copy existing paint region to use the same as prepared in BeginDrawLayer SdrPaintWindow& rExistingPaintWindow = pPreparedTarget->GetPaintWindow(); const Region& rExistingRegion = rExistingPaintWindow.GetRedrawRegion(); - aTemporaryPaintWindow.SetRedrawRegion(rExistingRegion); + if ( rRect.IsEmpty() ) + aTemporaryPaintWindow.SetRedrawRegion(rExistingRegion); + else + aTemporaryPaintWindow.SetRedrawRegion(Region(rRect)); // patch the ExistingPageWindow pPreparedTarget->patchPaintWindow(aTemporaryPaintWindow); diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx index 39db5389a6b5..ddf071180211 100644 --- a/sw/source/core/layout/paintfrm.cxx +++ b/sw/source/core/layout/paintfrm.cxx @@ -3129,7 +3129,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const const IDocumentDrawModelAccess* pIDDMA = pSh->getIDocumentDrawModelAccess(); pSh->Imp()->PaintLayer( pIDDMA->GetHellId(), pPrintData, - aPaintRect, + pPage->Frm(), &aPageBackgrdColor, (pPage->IsRightToLeft() ? true : false), &aSwRedirector ); @@ -3176,7 +3176,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const // OD 09.12.2002 #103045# - add 4th parameter for horizontal text direction. pSh->Imp()->PaintLayer( pSh->GetDoc()->GetHeavenId(), pPrintData, - aPaintRect, + pPage->Frm(), &aPageBackgrdColor, (pPage->IsRightToLeft() ? true : false), &aSwRedirector ); diff --git a/sw/source/core/view/vdraw.cxx b/sw/source/core/view/vdraw.cxx index 8139e2ad775c..5174e1a5e1f0 100644 --- a/sw/source/core/view/vdraw.cxx +++ b/sw/source/core/view/vdraw.cxx @@ -166,7 +166,7 @@ void SwViewImp::UnlockPaint() // OD 25.06.2003 #108784# - correct type of 1st parameter void SwViewImp::PaintLayer( const SdrLayerID _nLayerID, SwPrintData const*const pPrintData, - const SwRect& , + const SwRect& aPaintRect, const Color* _pPageBackgrdColor, const bool _bIsPageRightToLeft, sdr::contact::ViewObjectContactRedirector* pRedirector ) const @@ -219,7 +219,7 @@ void SwViewImp::PaintLayer( const SdrLayerID _nLayerID, SdrView &rSdrView = const_cast< SdrView & >(GetPageView()->GetView()); rSdrView.setHideDraw( !pPrintData->IsPrintDraw() ); } - GetPageView()->DrawLayer( _nLayerID, pOutDev, pRedirector ); + GetPageView()->DrawLayer( _nLayerID, pOutDev, pRedirector, aPaintRect.SVRect() ); pOutDev->Pop(); // OD 29.08.2002 #102450# |