summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Marek Glogowski <glogow@fbihome.de>2019-06-03 22:52:05 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-06-25 17:19:01 +0200
commit961f487b0ad6160b45bd688078a09b40c9345444 (patch)
treea30302db2d179e303553ae2f0cda6e0c47fdb319
parentde572b2973ebddd8e368e8441bb2831be893cc44 (diff)
tdf#125670 just check gradient clipping on drawing
Otherwise the gradient won't be commited to the Metafile, as mbOutputClipped will be true, because the output device will have just one pixel size. Reviewed-on: https://gerrit.libreoffice.org/73423 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 710f3c63af2d8bee7d5e860614145799a3f0e491) tdf#125777 restore old RenderContext before return Related: tdf#125670 avoid possible performance issues for the general case but retain recording of gradient to metafile 6acf23675414983bd07639703f43aa934c0a48ed 5efde15f1c192b15fe647362803442ac947b63de Change-Id: Ia0c6569a28f2aa1a8f0e051b61d429e0ab23ef97 Reviewed-on: https://gerrit.libreoffice.org/74507 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> (cherry picked from commit 6047d537b5ea8f13f7e8d4739621c866af1d13fb) Reviewed-on: https://gerrit.libreoffice.org/74515 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 12cf9256fba688df367a2be7db17e0ed3d24c73c) Reviewed-on: https://gerrit.libreoffice.org/74683 Tested-by: Xisco Faulí <xiscofauli@libreoffice.org> Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
-rw-r--r--vcl/source/outdev/gradient.cxx8
1 files changed, 7 insertions, 1 deletions
diff --git a/vcl/source/outdev/gradient.cxx b/vcl/source/outdev/gradient.cxx
index aeace07e4710..2c6b884e6732 100644
--- a/vcl/source/outdev/gradient.cxx
+++ b/vcl/source/outdev/gradient.cxx
@@ -56,7 +56,7 @@ void OutputDevice::DrawGradient( const tools::PolyPolygon& rPolyPoly,
if ( mbInitClipRegion )
InitClipRegion();
- if ( mbOutputClipped )
+ if (mbOutputClipped && !mpMetaFile)
return;
if ( rPolyPoly.Count() && rPolyPoly[ 0 ].GetSize() )
@@ -110,6 +110,12 @@ void OutputDevice::DrawGradient( const tools::PolyPolygon& rPolyPoly,
if( mbInitClipRegion )
InitClipRegion();
+ if (mbOutputClipped)
+ {
+ Pop();
+ return;
+ }
+
// try to draw gradient natively
bDrawn = mpGraphics->DrawGradient( aClixPolyPoly, aGradient );