vcl/headless/SvpGraphicsBackend.cxx |   84 ++++++++++++++++++++++++++++++++---
 vcl/headless/svpgdi.cxx             |   86 ------------------------------------
 vcl/inc/headless/svpgdi.hxx         |    9 ---
 3 files changed, 77 insertions(+), 102 deletions(-)

New commits:
commit 507ca0eb16707917eab3608674243ed0eeacda72
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu Dec 30 00:20:44 2021 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Wed Jan 5 04:36:27 2022 +0100

    vcl: move drawAlphaBitmap to SvpGraphicsBackend
    
    Change-Id: I182d775318a9b43a5955a5868e78a4b09c4a74c6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127981
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/vcl/headless/SvpGraphicsBackend.cxx 
b/vcl/headless/SvpGraphicsBackend.cxx
index c67f19d5665d..2ac40e8e7b20 100644
--- a/vcl/headless/SvpGraphicsBackend.cxx
+++ b/vcl/headless/SvpGraphicsBackend.cxx
@@ -394,7 +394,7 @@ void SvpGraphicsBackend::drawBitmap(const SalTwoRect& 
rPosAry, const SalBitmap&
         return;
     }
 
-#if 0 // LO code is not yet bitmap32-ready.                                    
                    \
+#if 0 // LO code is not yet bitmap32-ready.
     // if m_bSupportsBitmap32 becomes true for Svp revisit this
     m_rCairoCommon.copyWithOperator(rPosAry, source, CAIRO_OPERATOR_OVER, 
getAntiAlias());
 #else
@@ -636,13 +636,83 @@ bool SvpGraphicsBackend::drawAlphaBitmap(const 
SalTwoRect& rTR, const SalBitmap&
     return true;
 }
 
-bool SvpGraphicsBackend::drawTransformedBitmap(const basegfx::B2DPoint& 
/*rNull*/,
-                                               const basegfx::B2DPoint& /*rX*/,
-                                               const basegfx::B2DPoint& /*rY*/,
-                                               const SalBitmap& 
/*rSourceBitmap*/,
-                                               const SalBitmap* 
/*pAlphaBitmap*/, double /*fAlpha*/)
+bool SvpGraphicsBackend::drawTransformedBitmap(const basegfx::B2DPoint& rNull,
+                                               const basegfx::B2DPoint& rX,
+                                               const basegfx::B2DPoint& rY,
+                                               const SalBitmap& rSourceBitmap,
+                                               const SalBitmap* pAlphaBitmap, 
double fAlpha)
 {
-    return false;
+    if (pAlphaBitmap && pAlphaBitmap->GetBitCount() != 8 && 
pAlphaBitmap->GetBitCount() != 1)
+    {
+        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
alpha depth case: "
+                                << pAlphaBitmap->GetBitCount());
+        return false;
+    }
+
+    if (fAlpha != 1.0)
+        return false;
+
+    // MM02 try to access buffered BitmapHelper
+    std::shared_ptr<BitmapHelper> aSurface;
+    tryToUseSourceBuffer(rSourceBitmap, aSurface);
+    const tools::Long nDestWidth(basegfx::fround(basegfx::B2DVector(rX - 
rNull).getLength()));
+    const tools::Long nDestHeight(basegfx::fround(basegfx::B2DVector(rY - 
rNull).getLength()));
+    cairo_surface_t* source(aSurface->getSurface(nDestWidth, nDestHeight));
+
+    if (!source)
+    {
+        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
case");
+        return false;
+    }
+
+    // MM02 try to access buffered MaskHelper
+    std::shared_ptr<MaskHelper> aMask;
+    if (nullptr != pAlphaBitmap)
+    {
+        tryToUseMaskBuffer(*pAlphaBitmap, aMask);
+    }
+
+    // access cairo_surface_t from MaskHelper
+    cairo_surface_t* mask(nullptr);
+    if (aMask)
+    {
+        mask = aMask->getSurface(nDestWidth, nDestHeight);
+    }
+
+    if (nullptr != pAlphaBitmap && nullptr == mask)
+    {
+        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
case");
+        return false;
+    }
+
+    const Size aSize = rSourceBitmap.GetSize();
+    cairo_t* cr = m_rCairoCommon.getCairoContext(false, getAntiAlias());
+    m_rCairoCommon.clipRegion(cr);
+
+    // setup the image transformation
+    // using the rNull,rX,rY points as destinations for the 
(0,0),(0,Width),(Height,0) source points
+    const basegfx::B2DVector aXRel = rX - rNull;
+    const basegfx::B2DVector aYRel = rY - rNull;
+    cairo_matrix_t matrix;
+    cairo_matrix_init(&matrix, aXRel.getX() / aSize.Width(), aXRel.getY() / 
aSize.Width(),
+                      aYRel.getX() / aSize.Height(), aYRel.getY() / 
aSize.Height(), rNull.getX(),
+                      rNull.getY());
+
+    cairo_transform(cr, &matrix);
+
+    cairo_rectangle(cr, 0, 0, aSize.Width(), aSize.Height());
+    basegfx::B2DRange extents = getClippedFillDamage(cr);
+    cairo_clip(cr);
+
+    cairo_set_source_surface(cr, source, 0, 0);
+    if (mask)
+        cairo_mask_surface(cr, mask, 0, 0);
+    else
+        cairo_paint(cr);
+
+    m_rCairoCommon.releaseCairoContext(cr, false, extents);
+
+    return true;
 }
 
 bool SvpGraphicsBackend::hasFastDrawTransformedBitmap() const { return false; }
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 556f85f568e3..b9c4cabee2bc 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -57,92 +57,6 @@
 #   endif
 #endif
 
-bool SvpSalGraphics::drawTransformedBitmap(
-    const basegfx::B2DPoint& rNull,
-    const basegfx::B2DPoint& rX,
-    const basegfx::B2DPoint& rY,
-    const SalBitmap& rSourceBitmap,
-    const SalBitmap* pAlphaBitmap,
-    double fAlpha)
-{
-    if (pAlphaBitmap && pAlphaBitmap->GetBitCount() != 8 && 
pAlphaBitmap->GetBitCount() != 1)
-    {
-        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
alpha depth case: " << pAlphaBitmap->GetBitCount());
-        return false;
-    }
-
-    if( fAlpha != 1.0 )
-        return false;
-
-    // MM02 try to access buffered BitmapHelper
-    std::shared_ptr<BitmapHelper> aSurface;
-    tryToUseSourceBuffer(rSourceBitmap, aSurface);
-    const tools::Long nDestWidth(basegfx::fround(basegfx::B2DVector(rX - 
rNull).getLength()));
-    const tools::Long nDestHeight(basegfx::fround(basegfx::B2DVector(rY - 
rNull).getLength()));
-    cairo_surface_t* source(
-        aSurface->getSurface(
-            nDestWidth,
-            nDestHeight));
-
-    if(!source)
-    {
-        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
case");
-        return false;
-    }
-
-    // MM02 try to access buffered MaskHelper
-    std::shared_ptr<MaskHelper> aMask;
-    if(nullptr != pAlphaBitmap)
-    {
-        tryToUseMaskBuffer(*pAlphaBitmap, aMask);
-    }
-
-    // access cairo_surface_t from MaskHelper
-    cairo_surface_t* mask(nullptr);
-    if(aMask)
-    {
-        mask = aMask->getSurface(
-            nDestWidth,
-            nDestHeight);
-    }
-
-    if(nullptr != pAlphaBitmap && nullptr == mask)
-    {
-        SAL_WARN("vcl.gdi", "unsupported SvpSalGraphics::drawTransformedBitmap 
case");
-        return false;
-    }
-
-    const Size aSize = rSourceBitmap.GetSize();
-    cairo_t* cr = m_aCairoCommon.getCairoContext(false, getAntiAlias());
-    clipRegion(cr);
-
-    // setup the image transformation
-    // using the rNull,rX,rY points as destinations for the 
(0,0),(0,Width),(Height,0) source points
-    const basegfx::B2DVector aXRel = rX - rNull;
-    const basegfx::B2DVector aYRel = rY - rNull;
-    cairo_matrix_t matrix;
-    cairo_matrix_init(&matrix,
-                      aXRel.getX()/aSize.Width(), aXRel.getY()/aSize.Width(),
-                      aYRel.getX()/aSize.Height(), aYRel.getY()/aSize.Height(),
-                      rNull.getX(), rNull.getY());
-
-    cairo_transform(cr, &matrix);
-
-    cairo_rectangle(cr, 0, 0, aSize.Width(), aSize.Height());
-    basegfx::B2DRange extents = getClippedFillDamage(cr);
-    cairo_clip(cr);
-
-    cairo_set_source_surface(cr, source, 0, 0);
-    if (mask)
-        cairo_mask_surface(cr, mask, 0, 0);
-    else
-        cairo_paint(cr);
-
-    m_aCairoCommon.releaseCairoContext(cr, false, extents);
-
-    return true;
-}
-
 SvpSalGraphics::SvpSalGraphics()
     : m_aTextRenderImpl(*this)
     , m_pBackend(new SvpGraphicsBackend(m_aCairoCommon))
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index d2196c78a230..eb15f1563a62 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -58,15 +58,6 @@ protected:
     SvpCairoTextRender                  m_aTextRenderImpl;
     std::unique_ptr<SvpGraphicsBackend> m_pBackend;
 
-protected:
-    virtual bool drawTransformedBitmap(
-        const basegfx::B2DPoint& rNull,
-        const basegfx::B2DPoint& rX,
-        const basegfx::B2DPoint& rY,
-        const SalBitmap& rSourceBitmap,
-        const SalBitmap* pAlphaBitmap,
-        double fAlpha) override;
-
     cairo_t* createTmpCompatibleCairoContext() const;
 
 public:

Reply via email to