include/svx/sdr/overlay/overlaymanager.hxx | 2 + include/svx/svdpntv.hxx | 1 svx/source/sdr/overlay/overlaymanager.cxx | 53 +++++++++++++++-------------- svx/source/svdraw/sdrpaintwindow.cxx | 29 +++++++++------ 4 files changed, 48 insertions(+), 37 deletions(-)
New commits: commit a193da0a46f9613a3eefe0e35c8fa000b2f19fd3 Author: Caolán McNamara <[email protected]> AuthorDate: Wed May 15 21:35:43 2019 +0100 Commit: Caolán McNamara <[email protected]> CommitDate: Thu May 16 09:55:12 2019 +0200 split methods up Change-Id: Ib6f27574b8a45b29d6887d268f2e291314c796bf Reviewed-on: https://gerrit.libreoffice.org/72382 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/include/svx/sdr/overlay/overlaymanager.hxx b/include/svx/sdr/overlay/overlaymanager.hxx index 58b6d620984e..ae49f2d59b75 100644 --- a/include/svx/sdr/overlay/overlaymanager.hxx +++ b/include/svx/sdr/overlay/overlaymanager.hxx @@ -88,6 +88,8 @@ namespace sdr // ViewTransformation and evtl. correct mfDiscreteOne double getDiscreteOne() const; + tools::Rectangle RangeToInvalidateRectangle(const basegfx::B2DRange& rRange) const; + OverlayManager(OutputDevice& rOutputDevice); virtual ~OverlayManager() override; diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx index 43bcd34e234f..a5eee136faec 100644 --- a/include/svx/svdpntv.hxx +++ b/include/svx/svdpntv.hxx @@ -230,6 +230,7 @@ protected: // Interface to SdrPaintWindow void DeletePaintWindow(SdrPaintWindow& rOld); void ConfigurationChanged( ::utl::ConfigurationBroadcaster*, ConfigurationHints ) override; + void InitOverlayManager(rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager) const; public: sal_uInt32 PaintWindowCount() const { return maPaintWindows.size(); } diff --git a/svx/source/sdr/overlay/overlaymanager.cxx b/svx/source/sdr/overlay/overlaymanager.cxx index d3b3ecb6b676..62d0e5d8d9a1 100644 --- a/svx/source/sdr/overlay/overlaymanager.cxx +++ b/svx/source/sdr/overlay/overlaymanager.cxx @@ -283,34 +283,37 @@ namespace sdr } } + tools::Rectangle OverlayManager::RangeToInvalidateRectangle(const basegfx::B2DRange& rRange) const + { + if (getDrawinglayerOpt().IsAntiAliasing()) + { + // assume AA needs one pixel more and invalidate one pixel more + const double fDiscreteOne(getDiscreteOne()); + const tools::Rectangle aInvalidateRectangle( + static_cast<sal_Int32>(floor(rRange.getMinX() - fDiscreteOne)), + static_cast<sal_Int32>(floor(rRange.getMinY() - fDiscreteOne)), + static_cast<sal_Int32>(ceil(rRange.getMaxX() + fDiscreteOne)), + static_cast<sal_Int32>(ceil(rRange.getMaxY() + fDiscreteOne))); + return aInvalidateRectangle; + } + else + { + // #i77674# transform to rectangle. Use floor/ceil to get all covered + // discrete pixels, see #i75163# and OverlayManagerBuffered::invalidateRange + const tools::Rectangle aInvalidateRectangle( + static_cast<sal_Int32>(floor(rRange.getMinX())), static_cast<sal_Int32>(floor(rRange.getMinY())), + static_cast<sal_Int32>(ceil(rRange.getMaxX())), static_cast<sal_Int32>(ceil(rRange.getMaxY()))); + return aInvalidateRectangle; + } + } + void OverlayManager::invalidateRange(const basegfx::B2DRange& rRange) { - if(OUTDEV_WINDOW == getOutputDevice().GetOutDevType()) + if (OUTDEV_WINDOW == getOutputDevice().GetOutDevType()) { - if(getDrawinglayerOpt().IsAntiAliasing()) - { - // assume AA needs one pixel more and invalidate one pixel more - const double fDiscreteOne(getDiscreteOne()); - const tools::Rectangle aInvalidateRectangle( - static_cast<sal_Int32>(floor(rRange.getMinX() - fDiscreteOne)), - static_cast<sal_Int32>(floor(rRange.getMinY() - fDiscreteOne)), - static_cast<sal_Int32>(ceil(rRange.getMaxX() + fDiscreteOne)), - static_cast<sal_Int32>(ceil(rRange.getMaxY() + fDiscreteOne))); - - // simply invalidate - static_cast<vcl::Window&>(getOutputDevice()).Invalidate(aInvalidateRectangle, InvalidateFlags::NoErase); - } - else - { - // #i77674# transform to rectangle. Use floor/ceil to get all covered - // discrete pixels, see #i75163# and OverlayManagerBuffered::invalidateRange - const tools::Rectangle aInvalidateRectangle( - static_cast<sal_Int32>(floor(rRange.getMinX())), static_cast<sal_Int32>(floor(rRange.getMinY())), - static_cast<sal_Int32>(ceil(rRange.getMaxX())), static_cast<sal_Int32>(ceil(rRange.getMaxY()))); - - // simply invalidate - static_cast<vcl::Window&>(getOutputDevice()).Invalidate(aInvalidateRectangle, InvalidateFlags::NoErase); - } + tools::Rectangle aInvalidateRectangle(RangeToInvalidateRectangle(rRange)); + // simply invalidate + static_cast<vcl::Window&>(getOutputDevice()).Invalidate(aInvalidateRectangle, InvalidateFlags::NoErase); } } diff --git a/svx/source/svdraw/sdrpaintwindow.cxx b/svx/source/svdraw/sdrpaintwindow.cxx index 060437fa77a1..91ca3860e7b0 100644 --- a/svx/source/svdraw/sdrpaintwindow.cxx +++ b/svx/source/svdraw/sdrpaintwindow.cxx @@ -168,6 +168,22 @@ void SdrPreRenderDevice::OutputPreRenderDevice(const vcl::Region& rExpandedRegio mpPreRenderDevice->EnableMapMode(bMapModeWasEnabledSource); } +void SdrPaintView::InitOverlayManager(rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager) const +{ + Color aColA(getOptionsDrawinglayer().GetStripeColorA()); + Color aColB(getOptionsDrawinglayer().GetStripeColorB()); + + if (Application::GetSettings().GetStyleSettings().GetHighContrastMode()) + { + aColA = aColB = Application::GetSettings().GetStyleSettings().GetHighlightColor(); + aColB.Invert(); + } + + xOverlayManager->setStripeColorA(aColA); + xOverlayManager->setStripeColorB(aColB); + xOverlayManager->setStripeLengthPixel(getOptionsDrawinglayer().GetStripeLength()); +} + rtl::Reference<sdr::overlay::OverlayManager> SdrPaintView::CreateOverlayManager(OutputDevice& rOutputDevice) const { rtl::Reference<sdr::overlay::OverlayManager> xOverlayManager; @@ -204,18 +220,7 @@ rtl::Reference<sdr::overlay::OverlayManager> SdrPaintView::CreateOverlayManager( rWindow.Invalidate(); } - Color aColA(getOptionsDrawinglayer().GetStripeColorA()); - Color aColB(getOptionsDrawinglayer().GetStripeColorB()); - - if(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) - { - aColA = aColB = Application::GetSettings().GetStyleSettings().GetHighlightColor(); - aColB.Invert(); - } - - xOverlayManager->setStripeColorA(aColA); - xOverlayManager->setStripeColorB(aColB); - xOverlayManager->setStripeLengthPixel(getOptionsDrawinglayer().GetStripeLength()); + InitOverlayManager(xOverlayManager); } return xOverlayManager; } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
