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>
diff --git a/vcl/source/outdev/gradient.cxx b/vcl/source/outdev/gradient.cxx
index fad0604..cfc3f4a 100644
--- a/vcl/source/outdev/gradient.cxx
+++ b/vcl/source/outdev/gradient.cxx
@@ -53,7 +53,7 @@
    if ( mbInitClipRegion )
        InitClipRegion();

    if ( mbOutputClipped )
    if (mbOutputClipped && !mpMetaFile)
        return;

    if ( rPolyPoly.Count() && rPolyPoly[ 0 ].GetSize() )
@@ -107,6 +107,12 @@
                if( mbInitClipRegion )
                    InitClipRegion();

                if (mbOutputClipped)
                {
                    Pop();
                    return;
                }

                // try to draw gradient natively
                bDrawn = mpGraphics->DrawGradient( aClixPolyPoly, aGradient );