tdf#125062: distort hairline borders only if selection is used

Regression from 046df0a876b3d948bb1e14443c00c180bc8cccaa

Use the fix for tdf#105998 only when 'selection' option is checked
in the save dialog

Change-Id: I8c4127c780736408e905ead48e0d3ee6ae149197
Reviewed-on: https://gerrit.libreoffice.org/73391
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
Tested-by: Xisco Faulí <xiscofauli@libreoffice.org>
diff --git a/svx/source/unodraw/UnoGraphicExporter.cxx b/svx/source/unodraw/UnoGraphicExporter.cxx
index 78a5585..3b8b1d4 100644
--- a/svx/source/unodraw/UnoGraphicExporter.cxx
+++ b/svx/source/unodraw/UnoGraphicExporter.cxx
@@ -180,7 +180,7 @@

    /** creates a bitmap that is optionally transparent from a metafile
    */
    BitmapEx GetBitmapFromMetaFile( const GDIMetaFile& rMtf, const Size* pSize )
    BitmapEx GetBitmapFromMetaFile( const GDIMetaFile& rMtf,bool bIsSelection, const Size* pSize )
    {
        // use new primitive conversion tooling
        basegfx::B2DRange aRange(basegfx::B2DPoint(0.0, 0.0));
@@ -213,35 +213,39 @@

        if(!aRect.IsEmpty())
        {
            // tdf#105998 Correct the Metafile using information from it's real sizes measured
            // using rMtf.GetBoundRect above and a copy
            const Size aOnePixelInMtf(
                Application::GetDefaultDevice()->PixelToLogic(
                    Size(1, 1),
                    rMtf.GetPrefMapMode()));
            GDIMetaFile aMtf(rMtf);
            const Size aHalfPixelInMtf(
                (aOnePixelInMtf.getWidth() + 1) / 2,
                (aOnePixelInMtf.getHeight() + 1) / 2);
            const bool bHairlineBR(
                !aHairlineRect.IsEmpty() && (aRect.Right() == aHairlineRect.Right() || aRect.Bottom() == aHairlineRect.Bottom()));

            // Move the content to (0,0), usually TopLeft ist slightly
            // negative. For better visualization, add a half pixel, too
            aMtf.Move(
                aHalfPixelInMtf.getWidth() - aRect.Left(),
                aHalfPixelInMtf.getHeight() - aRect.Top());
            if (bIsSelection)
            {
                // tdf#105998 Correct the Metafile using information from it's real sizes measured
                // using rMtf.GetBoundRect above and a copy
                const Size aOnePixelInMtf(
                    Application::GetDefaultDevice()->PixelToLogic(
                        Size(1, 1),
                        rMtf.GetPrefMapMode()));
                const Size aHalfPixelInMtf(
                    (aOnePixelInMtf.getWidth() + 1) / 2,
                    (aOnePixelInMtf.getHeight() + 1) / 2);
                const bool bHairlineBR(
                    !aHairlineRect.IsEmpty() && (aRect.Right() == aHairlineRect.Right() || aRect.Bottom() == aHairlineRect.Bottom()));

            // Do not Scale, but set the PrefSize. Some levels deeper the
            // MetafilePrimitive will add a mapping to the decomposition
            // (and possibly a clipping) to map the graphic content to
            // a unit coordinate system.
            // Size is the measured size plus one pixel if needed (bHairlineBR)
            // and the moved half pixwel from above
            aMtf.SetPrefSize(
                Size(
                    aRect.getWidth() + (bHairlineBR ? aOnePixelInMtf.getWidth() : 0) + aHalfPixelInMtf.getWidth(),
                    aRect.getHeight() + (bHairlineBR ? aOnePixelInMtf.getHeight() : 0) + aHalfPixelInMtf.getHeight()));
                // Move the content to (0,0), usually TopLeft ist slightly
                // negative. For better visualization, add a half pixel, too
                aMtf.Move(
                    aHalfPixelInMtf.getWidth() - aRect.Left(),
                    aHalfPixelInMtf.getHeight() - aRect.Top());

                // Do not Scale, but set the PrefSize. Some levels deeper the
                // MetafilePrimitive will add a mapping to the decomposition
                // (and possibly a clipping) to map the graphic content to
                // a unit coordinate system.
                // Size is the measured size plus one pixel if needed (bHairlineBR)
                // and the moved half pixwel from above
                aMtf.SetPrefSize(
                    Size(
                        aRect.getWidth() + (bHairlineBR ? aOnePixelInMtf.getWidth() : 0) + aHalfPixelInMtf.getWidth(),
                        aRect.getHeight() + (bHairlineBR ? aOnePixelInMtf.getHeight() : 0) + aHalfPixelInMtf.getHeight()));
            }

            return convertMetafileToBitmapEx(aMtf, aRange, nMaximumQuadraticPixels);
        }
@@ -780,7 +784,7 @@
                if( rSettings.mbTranslucent )
                {
                    Size aOutSize;
                    aGraphic = GetBitmapFromMetaFile( aGraphic.GetGDIMetaFile(), CalcSize( rSettings.mnWidth, rSettings.mnHeight, aNewSize, aOutSize ) );
                    aGraphic = GetBitmapFromMetaFile( aGraphic.GetGDIMetaFile(), false, CalcSize( rSettings.mnWidth, rSettings.mnHeight, aNewSize, aOutSize ) );
                }
            }
        }
@@ -966,7 +970,7 @@
            if( !bVectorType )
            {
                Size aOutSize;
                aGraphic = GetBitmapFromMetaFile( aMtf, CalcSize( rSettings.mnWidth, rSettings.mnHeight, aBoundSize, aOutSize ) );
                aGraphic = GetBitmapFromMetaFile( aMtf, true, CalcSize( rSettings.mnWidth, rSettings.mnHeight, aBoundSize, aOutSize ) );
            }
            else
            {