include/vcl/outdev.hxx | 2 ++ include/vcl/window.hxx | 4 ++-- vcl/source/gdi/impanmvw.cxx | 23 ++--------------------- vcl/source/outdev/clipping.cxx | 6 ++++++ vcl/source/window/clipping.cxx | 11 +++++++++-- 5 files changed, 21 insertions(+), 25 deletions(-)
New commits: commit 08995b6a764c9e387c94f6ce5faba2145b5512f9 Author: Chris Sherlock <chris.sherloc...@gmail.com> AuthorDate: Sat Jul 13 23:32:28 2019 +1000 Commit: Michael Meeks <michael.me...@collabora.com> CommitDate: Sat Jul 27 03:45:06 2019 +0200 tdf#74702: remove GetOutDevType() from ImplAnimView I have done a spot of refactoring - it turns out that the bits where we save and reset the map mode during background saves should probably be done in Window::SaveBackground(). As Window::SaveBackground() doesn't need the animation size (maSzPix) I have rarrange the parameter order so the Window function can ignore the parameter. OutputDevice::SaveBackground() has been introduced as a virtual function and now is overridden by Window for its own purposes - OutputDevice just does a DrawOutDev(...) operation on the background. Change-Id: Ifeffe9536c01d8e4737f6e39a4f3dd14ba418f4d Reviewed-on: https://gerrit.libreoffice.org/76399 Reviewed-by: Michael Meeks <michael.me...@collabora.com> Tested-by: Michael Meeks <michael.me...@collabora.com> 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 */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits