[Libreoffice-commits] core.git: vcl/skia

Luboš Luňák (via logerrit) logerrit at kemper.freedesktop.org
Mon May 25 11:52:43 UTC 2020


 vcl/skia/gdiimpl.cxx |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

New commits:
commit a6f9edbd3bf74022083302c6d857b644d71d2b48
Author:     Luboš Luňák <l.lunak at collabora.com>
AuthorDate: Mon May 25 12:55:45 2020 +0200
Commit:     Luboš Luňák <l.lunak at collabora.com>
CommitDate: Mon May 25 13:52:08 2020 +0200

    high quality scale when drawing scaled Skia image (tdf#133339)
    
    Apparently even drawBitmap() may lead to image scaling.
    
    Change-Id: I8665dfc4d12768c3824bbc45aaa72277168acc8d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94781
    Tested-by: Jenkins
    Reviewed-by: Luboš Luňák <l.lunak at collabora.com>

diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx
index b280f732425f..a2ccb12d406d 100644
--- a/vcl/skia/gdiimpl.cxx
+++ b/vcl/skia/gdiimpl.cxx
@@ -978,6 +978,9 @@ void SkiaSalGraphicsImpl::copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcG
         sk_sp<SkImage> image = src->mSurface->makeImageSnapshot();
         SkPaint paint;
         paint.setBlendMode(SkBlendMode::kSrc); // copy as is, including alpha
+        if (rPosAry.mnSrcWidth != rPosAry.mnDestWidth
+            || rPosAry.mnSrcHeight != rPosAry.mnDestHeight)
+            paint.setFilterQuality(kHigh_SkFilterQuality);
         getDrawCanvas()->drawImageRect(image,
                                        SkIRect::MakeXYWH(rPosAry.mnSrcX, rPosAry.mnSrcY,
                                                          rPosAry.mnSrcWidth, rPosAry.mnSrcHeight),
@@ -1365,9 +1368,12 @@ void SkiaSalGraphicsImpl::drawImage(const SalTwoRect& rPosAry, const sk_sp<SkIma
 
     SkPaint aPaint;
     aPaint.setBlendMode(eBlendMode);
+    if (rPosAry.mnSrcWidth != rPosAry.mnDestWidth || rPosAry.mnSrcHeight != rPosAry.mnDestHeight)
+        aPaint.setFilterQuality(kHigh_SkFilterQuality);
 
     preDraw();
-    SAL_INFO("vcl.skia.trace", "drawimage(" << this << "): " << rPosAry << ":" << int(eBlendMode));
+    SAL_INFO("vcl.skia.trace",
+             "drawimage(" << this << "): " << rPosAry << ":" << SkBlendMode_Name(eBlendMode));
     getDrawCanvas()->drawImageRect(aImage, aSourceRect, aDestinationRect, &aPaint);
     addXorRegion(aDestinationRect);
     postDraw();


More information about the Libreoffice-commits mailing list