summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
Diffstat (limited to 'vcl')
-rw-r--r--vcl/inc/skia/gdiimpl.hxx2
-rw-r--r--vcl/inc/skia/x11/gdiimpl.hxx2
-rw-r--r--vcl/skia/gdiimpl.cxx21
-rw-r--r--vcl/skia/x11/gdiimpl.cxx6
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: */