diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/skia/gdiimpl.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/skia/x11/gdiimpl.hxx | 2 | ||||
-rw-r--r-- | vcl/skia/gdiimpl.cxx | 21 | ||||
-rw-r--r-- | vcl/skia/x11/gdiimpl.cxx | 6 |
4 files changed, 23 insertions, 8 deletions
diff --git a/vcl/inc/skia/gdiimpl.hxx b/vcl/inc/skia/gdiimpl.hxx index 0b08c3c81c5f..33cb2e6078cf 100644 --- a/vcl/inc/skia/gdiimpl.hxx +++ b/vcl/inc/skia/gdiimpl.hxx @@ -114,6 +114,8 @@ public: virtual void copyArea(long nDestX, long nDestY, long nSrcX, long nSrcY, long nSrcWidth, long nSrcHeight, bool bWindowInvalidate) override; + virtual void copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics) override; + virtual bool blendBitmap(const SalTwoRect&, const SalBitmap& rBitmap) override; virtual bool blendAlphaBitmap(const SalTwoRect&, const SalBitmap& rSrcBitmap, diff --git a/vcl/inc/skia/x11/gdiimpl.hxx b/vcl/inc/skia/x11/gdiimpl.hxx index 7be2329902d9..d75ecb49e173 100644 --- a/vcl/inc/skia/x11/gdiimpl.hxx +++ b/vcl/inc/skia/x11/gdiimpl.hxx @@ -26,8 +26,6 @@ public: virtual ~X11SkiaSalGraphicsImpl() override; public: - virtual void copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics) override; - virtual void Init() override; }; diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index 7141eab1cba5..ba764cbdd0b9 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -19,6 +19,7 @@ #include <skia/gdiimpl.hxx> +#include <salgdi.hxx> #include <skia/salbmp.hxx> #include <SkCanvas.h> @@ -226,6 +227,26 @@ void SkiaSalGraphicsImpl::copyArea(long nDestX, long nDestY, long nSrcX, long nS mSurface->getCanvas()->drawImage(image, nDestX, nDestY); } +void SkiaSalGraphicsImpl::copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics) +{ + SkiaSalGraphicsImpl* src; + if (pSrcGraphics) + { + assert(dynamic_cast<SkiaSalGraphicsImpl*>(pSrcGraphics->GetImpl())); + src = static_cast<SkiaSalGraphicsImpl*>(pSrcGraphics->GetImpl()); + } + else + src = this; + sk_sp<SkImage> image = src->mSurface->makeImageSnapshot( + SkIRect::MakeXYWH(rPosAry.mnSrcX, rPosAry.mnSrcY, rPosAry.mnSrcWidth, rPosAry.mnSrcHeight)); + // TODO makeNonTextureImage() ? + mSurface->getCanvas()->drawImageRect(image, + SkRect::MakeXYWH(rPosAry.mnDestX, rPosAry.mnDestY, + rPosAry.mnDestWidth, + rPosAry.mnDestHeight), + nullptr); +} + bool SkiaSalGraphicsImpl::blendBitmap(const SalTwoRect&, const SalBitmap& rBitmap) { (void)rBitmap; diff --git a/vcl/skia/x11/gdiimpl.cxx b/vcl/skia/x11/gdiimpl.cxx index e175f558372f..760ae1abf810 100644 --- a/vcl/skia/x11/gdiimpl.cxx +++ b/vcl/skia/x11/gdiimpl.cxx @@ -24,10 +24,4 @@ void X11SkiaSalGraphicsImpl::Init() SkiaSalGraphicsImpl::Init(); } -void X11SkiaSalGraphicsImpl::copyBits(const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics) -{ - (void)rPosAry; - (void)pSrcGraphics; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |