summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2020-05-16 19:58:18 +1000
committerTomaž Vajngerl <quikee@gmail.com>2020-05-17 21:34:14 +0200
commit557c6777ad33b54af28541a96bcf91596995b388 (patch)
tree881348ba8bfa3c75533606dd99957118fd84e523
parent3913c7c18b9438e26f860a0079a6590418ced27b (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.hxx1
-rw-r--r--include/vcl/window.hxx1
-rw-r--r--vcl/source/outdev/text.cxx10
-rw-r--r--vcl/source/window/clipping.cxx8
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();