include/vcl/outdev.hxx         |    1 +
 include/vcl/window.hxx         |    1 +
 vcl/source/outdev/text.cxx     |   10 +++++++---
 vcl/source/window/clipping.cxx |    8 ++++++++
 4 files changed, 17 insertions(+), 3 deletions(-)

New commits:
commit 557c6777ad33b54af28541a96bcf91596995b388
Author:     Chris Sherlock <chris.sherloc...@gmail.com>
AuthorDate: Sat May 16 19:58:18 2020 +1000
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Sun May 17 21:34:14 2020 +0200

    tdf#74702 vcl: extract GetOutputBoundsClipRegion()
    
    Change-Id: Icc1b53f068b94ff3b3f26b144f366344dcbff2ea
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94345
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

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();
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to