diff options
-rw-r--r-- | include/vcl/outdev.hxx | 2 | ||||
-rw-r--r-- | include/vcl/window.hxx | 4 | ||||
-rw-r--r-- | vcl/source/gdi/impanmvw.cxx | 23 | ||||
-rw-r--r-- | vcl/source/outdev/clipping.cxx | 6 | ||||
-rw-r--r-- | vcl/source/window/clipping.cxx | 11 |
5 files changed, 21 insertions, 25 deletions
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 0b92e735914f..b18150cefd38 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -624,6 +624,8 @@ public: void SetBackground(); void SetBackground( const Wallpaper& rBackground ); + virtual void SaveBackground(VirtualDevice& rSaveDevice, + const Point& rPos, const Size& rSize, const Size& rBackgroundSize) const; const Wallpaper& GetBackground() const { return maBackground; } bool IsBackground() const { return mbBackground; } diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index 47c140e475ae..c1ac276f6327 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -1184,8 +1184,8 @@ public: ScrollBar* pHScrl, ScrollBar* pVScrl ); - void SaveBackground( const Point& rPos, const Size& rSize, - VirtualDevice& rSaveDevice ) const; + void SaveBackground(VirtualDevice& rSaveDevice, + const Point& rPos, const Size& rSize, const Size&) const override; virtual const SystemEnvData* GetSystemData() const; css::uno::Any GetSystemDataAny() const; diff --git a/vcl/source/gdi/impanmvw.cxx b/vcl/source/gdi/impanmvw.cxx index d16048f176e5..0537c349e0f3 100644 --- a/vcl/source/gdi/impanmvw.cxx +++ b/vcl/source/gdi/impanmvw.cxx @@ -75,17 +75,7 @@ ImplAnimView::ImplAnimView( Animation* pParent, OutputDevice* pOut, // save background mpBackground->SetOutputSizePixel( maSzPix ); - - if( mpRenderContext->GetOutDevType() == OUTDEV_WINDOW ) - { - MapMode aTempMap( mpRenderContext->GetMapMode() ); - aTempMap.SetOrigin( Point() ); - mpBackground->SetMapMode( aTempMap ); - static_cast<vcl::Window*>( mpRenderContext.get() )->SaveBackground( maDispPt, maDispSz, *mpBackground ); - mpBackground->SetMapMode( MapMode() ); - } - else - mpBackground->DrawOutDev( Point(), maSzPix, maDispPt, maDispSz, *mpRenderContext ); + mpRenderContext->SaveBackground(*mpBackground, maDispPt, maDispSz, maSzPix); // Initialize drawing to actual position drawToPos( mpParent->ImplGetCurPos() ); @@ -317,16 +307,7 @@ void ImplAnimView::repaint() { const bool bOldPause = mbIsPaused; - if( mpRenderContext->GetOutDevType() == OUTDEV_WINDOW ) - { - MapMode aTempMap( mpRenderContext->GetMapMode() ); - aTempMap.SetOrigin( Point() ); - mpBackground->SetMapMode( aTempMap ); - static_cast<vcl::Window*>( mpRenderContext.get() )->SaveBackground( maDispPt, maDispSz, *mpBackground ); - mpBackground->SetMapMode( MapMode() ); - } - else - mpBackground->DrawOutDev( Point(), maSzPix, maDispPt, maDispSz, *mpRenderContext ); + mpRenderContext->SaveBackground(*mpBackground, maDispPt, maDispSz, maSzPix); mbIsPaused = false; drawToPos( mnActPos ); diff --git a/vcl/source/outdev/clipping.cxx b/vcl/source/outdev/clipping.cxx index 9dad2667bb66..4a2750f274ff 100644 --- a/vcl/source/outdev/clipping.cxx +++ b/vcl/source/outdev/clipping.cxx @@ -36,6 +36,12 @@ #include <numeric> +void OutputDevice::SaveBackground(VirtualDevice& rSaveDevice, + const Point& rPos, const Size& rSize, const Size& rBackgroundSize) const +{ + rSaveDevice.DrawOutDev(Point(), rBackgroundSize, rPos, rSize, *this); +} + vcl::Region OutputDevice::GetClipRegion() const { diff --git a/vcl/source/window/clipping.cxx b/vcl/source/window/clipping.cxx index 62d5d695a9a4..3b1b355b33d4 100644 --- a/vcl/source/window/clipping.cxx +++ b/vcl/source/window/clipping.cxx @@ -668,9 +668,12 @@ void Window::ImplCalcOverlapRegion( const tools::Rectangle& rSourceRect, vcl::Re } } -void Window::SaveBackground( const Point& rPos, const Size& rSize, - VirtualDevice& rSaveDevice ) const +void Window::SaveBackground(VirtualDevice& rSaveDevice, const Point& rPos, const Size& rSize, const Size&) const { + MapMode aTempMap(GetMapMode()); + aTempMap.SetOrigin(Point()); + rSaveDevice.SetMapMode(aTempMap); + if ( mpWindowImpl->mpPaintRegion ) { vcl::Region aClip( *mpWindowImpl->mpPaintRegion ); @@ -697,7 +700,11 @@ void Window::SaveBackground( const Point& rPos, const Size& rSize, } } else + { rSaveDevice.DrawOutDev( Point(), rSize, rPos, rSize, *this ); + } + + rSaveDevice.SetMapMode(MapMode()); } } /* namespace vcl */ |