diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2020-05-16 19:58:18 +1000 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2020-05-17 21:34:14 +0200 |
commit | 557c6777ad33b54af28541a96bcf91596995b388 (patch) | |
tree | 881348ba8bfa3c75533606dd99957118fd84e523 | |
parent | 3913c7c18b9438e26f860a0079a6590418ced27b (diff) |
tdf#74702 vcl: extract GetOutputBoundsClipRegion()
Change-Id: Icc1b53f068b94ff3b3f26b144f366344dcbff2ea
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94345
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r-- | include/vcl/outdev.hxx | 1 | ||||
-rw-r--r-- | include/vcl/window.hxx | 1 | ||||
-rw-r--r-- | vcl/source/outdev/text.cxx | 10 | ||||
-rw-r--r-- | vcl/source/window/clipping.cxx | 8 |
4 files changed, 17 insertions, 3 deletions
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 744f0b0b1f54..f2e19567150e 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -674,6 +674,7 @@ public: void IntersectClipRegion( const vcl::Region& rRegion ); virtual vcl::Region GetActiveClipRegion() const; + virtual vcl::Region GetOutputBoundsClipRegion() const; protected: diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index 1e5487f3779e..4b1f1ad93b97 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -729,6 +729,7 @@ private: public: virtual vcl::Region GetActiveClipRegion() const override; + virtual vcl::Region GetOutputBoundsClipRegion() const override; protected: // Single argument ctors shall be explicit. diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index fa0c7b128dab..34db8e6299c1 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -779,6 +779,11 @@ void OutputDevice::SetTextAlign( TextAlign eAlign ) mpAlphaVDev->SetTextAlign( eAlign ); } +vcl::Region OutputDevice::GetOutputBoundsClipRegion() const +{ + return GetClipRegion(); +} + void OutputDevice::DrawText( const Point& rStartPt, const OUString& rStr, sal_Int32 nIndex, sal_Int32 nLen, MetricVector* pVector, OUString* pDisplayText, @@ -806,9 +811,8 @@ void OutputDevice::DrawText( const Point& rStartPt, const OUString& rStr, mpMetaFile->AddAction( new MetaTextAction( rStartPt, rStr, nIndex, nLen ) ); if( pVector ) { - vcl::Region aClip( GetClipRegion() ); - if( meOutDevType == OUTDEV_WINDOW ) - aClip.Intersect( tools::Rectangle( Point(), GetOutputSize() ) ); + vcl::Region aClip(GetOutputBoundsClipRegion()); + if (mpOutDevData->mpRecordLayout) { mpOutDevData->mpRecordLayout->m_aLineIndices.push_back( mpOutDevData->mpRecordLayout->m_aDisplayText.getLength() ); diff --git a/vcl/source/window/clipping.cxx b/vcl/source/window/clipping.cxx index 6889ee7c63e2..e2c3a37c8ccf 100644 --- a/vcl/source/window/clipping.cxx +++ b/vcl/source/window/clipping.cxx @@ -27,6 +27,14 @@ namespace vcl { +vcl::Region Window::GetOutputBoundsClipRegion() const +{ + vcl::Region aClip(GetClipRegion()); + aClip.Intersect(tools::Rectangle(Point(), GetOutputSize())); + + return aClip; +} + void Window::InitClipRegion() { DBG_TESTSOLARMUTEX(); |