tdf#138936 gradient missing under RTL from writer comment margins

Change-Id: I57533f033f9528b7c89162967b392eb5abb4d76a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107702
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/vcl/inc/salgdi.hxx b/vcl/inc/salgdi.hxx
index 6ed3601..4ebdcb2 100644
--- a/vcl/inc/salgdi.hxx
+++ b/vcl/inc/salgdi.hxx
@@ -275,7 +275,8 @@ public:

    bool                        DrawGradient(
                                    const tools::PolyPolygon& rPolyPoly,
                                    const Gradient& rGradient );
                                    const Gradient& rGradient,
                                    const OutputDevice* pOutDev);

    bool DrawGradient(basegfx::B2DPolyPolygon const & rPolyPolygon,
                      SalGradient const & rGradient);
diff --git a/vcl/source/gdi/salgdilayout.cxx b/vcl/source/gdi/salgdilayout.cxx
index 5638cb9..452b5b6 100644
--- a/vcl/source/gdi/salgdilayout.cxx
+++ b/vcl/source/gdi/salgdilayout.cxx
@@ -600,8 +600,14 @@ bool SalGraphics::DrawPolyLine(
        bPixelSnapHairline);
}

bool SalGraphics::DrawGradient( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient )
bool SalGraphics::DrawGradient(const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient, const OutputDevice* pOutDev)
{
    if( (m_nLayout & SalLayoutFlags::BiDiRtl) || (pOutDev && pOutDev->IsRTLEnabled()) )
    {
        tools::PolyPolygon aFinal(mirror(rPolyPoly.getB2DPolyPolygon(), pOutDev));
        return drawGradient(aFinal, rGradient);
    }

    return drawGradient( rPolyPoly, rGradient );
}

diff --git a/vcl/source/outdev/gradient.cxx b/vcl/source/outdev/gradient.cxx
index f37bad8..0312369 100644
--- a/vcl/source/outdev/gradient.cxx
+++ b/vcl/source/outdev/gradient.cxx
@@ -107,7 +107,7 @@ void OutputDevice::DrawGradient( const tools::PolyPolygon& rPolyPoly,

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

                if (!bDrawn && !mbOutputClipped)
                {