vcl/headless/BitmapHelper.cxx | 62 ++++++++++++++++++++++++++++++++++++++ vcl/headless/CairoCommon.cxx | 28 ----------------- vcl/headless/svpgdi.cxx | 55 +-------------------------------- vcl/inc/headless/BitmapHelper.hxx | 28 +++++++++++++++++ vcl/inc/headless/CairoCommon.hxx | 2 - 5 files changed, 92 insertions(+), 83 deletions(-)
New commits: commit 5a7cdbfbd3cbf3ea92c38e78a3b159fdffed7740 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Wed Dec 29 15:38:28 2021 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Wed Jan 5 04:35:15 2022 +0100 vcl: move SystemDependentData classes to BitmapHelper SystemDependentData_BitmapHelper, SystemDependentData_MaskHelper to BitmapHelper.{hxx,cxx} files. Change-Id: I23f3b4badd8e262c442e5c6387876b078f22fd73 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127926 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/vcl/headless/BitmapHelper.cxx b/vcl/headless/BitmapHelper.cxx index 359db01bb45d..8d56631a4fee 100644 --- a/vcl/headless/BitmapHelper.cxx +++ b/vcl/headless/BitmapHelper.cxx @@ -121,4 +121,66 @@ MaskHelper::MaskHelper(const SalBitmap& rAlphaBitmap) pMaskBuf->mnScanlineSize)); } } + +namespace +{ +// check for env var that decides for using downscale pattern +const char* pDisableDownScale(getenv("SAL_DISABLE_CAIRO_DOWNSCALE")); +bool bDisableDownScale(nullptr != pDisableDownScale); + +sal_Int64 estimateUsageInBytesForSurfaceHelper(const SurfaceHelper* pHelper) +{ + sal_Int64 nRetval(0); + + if (nullptr != pHelper) + { + cairo_surface_t* pSurface(pHelper->getSurface()); + + if (pSurface) + { + const tools::Long nStride(cairo_image_surface_get_stride(pSurface)); + const tools::Long nHeight(cairo_image_surface_get_height(pSurface)); + + nRetval = nStride * nHeight; + + // if we do downscale, size will grow by 1/4 + 1/16 + 1/32 + ..., + // rough estimation just multiplies by 1.25, should be good enough + // for estimation of buffer survival time + if (!bDisableDownScale) + { + nRetval = (nRetval * 5) / 4; + } + } + } + + return nRetval; +} + +} // end anonymous namespace + +SystemDependentData_BitmapHelper::SystemDependentData_BitmapHelper( + basegfx::SystemDependentDataManager& rSystemDependentDataManager, + const std::shared_ptr<BitmapHelper>& rBitmapHelper) + : basegfx::SystemDependentData(rSystemDependentDataManager) + , maBitmapHelper(rBitmapHelper) +{ +} + +sal_Int64 SystemDependentData_BitmapHelper::estimateUsageInBytes() const +{ + return estimateUsageInBytesForSurfaceHelper(maBitmapHelper.get()); +} + +SystemDependentData_MaskHelper::SystemDependentData_MaskHelper( + basegfx::SystemDependentDataManager& rSystemDependentDataManager, + const std::shared_ptr<MaskHelper>& rMaskHelper) + : basegfx::SystemDependentData(rSystemDependentDataManager) + , maMaskHelper(rMaskHelper) +{ +} + +sal_Int64 SystemDependentData_MaskHelper::estimateUsageInBytes() const +{ + return estimateUsageInBytesForSurfaceHelper(maMaskHelper.get()); +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/headless/CairoCommon.cxx b/vcl/headless/CairoCommon.cxx index 6de48a501b98..94ca2c3158be 100644 --- a/vcl/headless/CairoCommon.cxx +++ b/vcl/headless/CairoCommon.cxx @@ -1180,34 +1180,6 @@ const char* pDisableDownScale(getenv("SAL_DISABLE_CAIRO_DOWNSCALE")); bool bDisableDownScale(nullptr != pDisableDownScale); } -sal_Int64 estimateUsageInBytesForSurfaceHelper(const SurfaceHelper* pHelper) -{ - sal_Int64 nRetval(0); - - if (nullptr != pHelper) - { - cairo_surface_t* pSurface(pHelper->getSurface()); - - if (pSurface) - { - const tools::Long nStride(cairo_image_surface_get_stride(pSurface)); - const tools::Long nHeight(cairo_image_surface_get_height(pSurface)); - - nRetval = nStride * nHeight; - - // if we do downscale, size will grow by 1/4 + 1/16 + 1/32 + ..., - // rough estimation just multiplies by 1.25, should be good enough - // for estimation of buffer survival time - if (!bDisableDownScale) - { - nRetval = (nRetval * 5) / 4; - } - } - } - - return nRetval; -} - cairo_surface_t* SurfaceHelper::implCreateOrReuseDownscale(unsigned long nTargetWidth, unsigned long nTargetHeight) { diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index 33e4e220cc69..3a321af10293 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -46,7 +46,6 @@ #include <basegfx/polygon/b2dpolygontools.hxx> #include <basegfx/matrix/b2dhommatrix.hxx> #include <basegfx/utils/canvastools.hxx> -#include <basegfx/utils/systemdependentdata.hxx> #include <basegfx/matrix/b2dhommatrixtools.hxx> #include <comphelper/lok.hxx> #include <unx/gendata.hxx> @@ -60,60 +59,12 @@ namespace { - class SystemDependentData_BitmapHelper : public basegfx::SystemDependentData - { - private: - std::shared_ptr<BitmapHelper> maBitmapHelper; - - public: - SystemDependentData_BitmapHelper( - basegfx::SystemDependentDataManager& rSystemDependentDataManager, - const std::shared_ptr<BitmapHelper>& rBitmapHelper) - : basegfx::SystemDependentData(rSystemDependentDataManager), - maBitmapHelper(rBitmapHelper) - { - } - - const std::shared_ptr<BitmapHelper>& getBitmapHelper() const { return maBitmapHelper; }; - virtual sal_Int64 estimateUsageInBytes() const override; - }; - - sal_Int64 SystemDependentData_BitmapHelper::estimateUsageInBytes() const - { - return estimateUsageInBytesForSurfaceHelper(maBitmapHelper.get()); - } - - class SystemDependentData_MaskHelper : public basegfx::SystemDependentData - { - private: - std::shared_ptr<MaskHelper> maMaskHelper; - - public: - SystemDependentData_MaskHelper( - basegfx::SystemDependentDataManager& rSystemDependentDataManager, - const std::shared_ptr<MaskHelper>& rMaskHelper) - : basegfx::SystemDependentData(rSystemDependentDataManager), - maMaskHelper(rMaskHelper) - { - } - - const std::shared_ptr<MaskHelper>& getMaskHelper() const { return maMaskHelper; }; - virtual sal_Int64 estimateUsageInBytes() const override; - }; - - sal_Int64 SystemDependentData_MaskHelper::estimateUsageInBytes() const - { - return estimateUsageInBytesForSurfaceHelper(maMaskHelper.get()); - } - // MM02 decide to use buffers or not const char* pDisableMM02Goodies(getenv("SAL_DISABLE_MM02_GOODIES")); bool bUseBuffer(nullptr == pDisableMM02Goodies); const tools::Long nMinimalSquareSizeToBuffer(64*64); - void tryToUseSourceBuffer( - const SalBitmap& rSourceBitmap, - std::shared_ptr<BitmapHelper>& rSurface) + void tryToUseSourceBuffer(const SalBitmap& rSourceBitmap, std::shared_ptr<BitmapHelper>& rSurface) { // MM02 try to access buffered BitmapHelper std::shared_ptr<SystemDependentData_BitmapHelper> pSystemDependentData_BitmapHelper; @@ -148,9 +99,7 @@ namespace } } - void tryToUseMaskBuffer( - const SalBitmap& rMaskBitmap, - std::shared_ptr<MaskHelper>& rMask) + void tryToUseMaskBuffer(const SalBitmap& rMaskBitmap, std::shared_ptr<MaskHelper>& rMask) { // MM02 try to access buffered MaskHelper std::shared_ptr<SystemDependentData_MaskHelper> pSystemDependentData_MaskHelper; diff --git a/vcl/inc/headless/BitmapHelper.hxx b/vcl/inc/headless/BitmapHelper.hxx index 3cb6a70393f2..da5e417a4e9f 100644 --- a/vcl/inc/headless/BitmapHelper.hxx +++ b/vcl/inc/headless/BitmapHelper.hxx @@ -21,6 +21,7 @@ #include <headless/CairoCommon.hxx> #include <headless/svpbmp.hxx> +#include <basegfx/utils/systemdependentdata.hxx> class BitmapHelper : public SurfaceHelper { @@ -45,4 +46,31 @@ public: explicit MaskHelper(const SalBitmap& rAlphaBitmap); }; +class SystemDependentData_BitmapHelper : public basegfx::SystemDependentData +{ +private: + std::shared_ptr<BitmapHelper> maBitmapHelper; + +public: + SystemDependentData_BitmapHelper( + basegfx::SystemDependentDataManager& rSystemDependentDataManager, + const std::shared_ptr<BitmapHelper>& rBitmapHelper); + + const std::shared_ptr<BitmapHelper>& getBitmapHelper() const { return maBitmapHelper; }; + virtual sal_Int64 estimateUsageInBytes() const override; +}; + +class SystemDependentData_MaskHelper : public basegfx::SystemDependentData +{ +private: + std::shared_ptr<MaskHelper> maMaskHelper; + +public: + SystemDependentData_MaskHelper(basegfx::SystemDependentDataManager& rSystemDependentDataManager, + const std::shared_ptr<MaskHelper>& rMaskHelper); + + const std::shared_ptr<MaskHelper>& getMaskHelper() const { return maMaskHelper; }; + virtual sal_Int64 estimateUsageInBytes() const override; +}; + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/inc/headless/CairoCommon.hxx b/vcl/inc/headless/CairoCommon.hxx index 8d5dd22b1a75..e8b1a4927e21 100644 --- a/vcl/inc/headless/CairoCommon.hxx +++ b/vcl/inc/headless/CairoCommon.hxx @@ -227,6 +227,4 @@ public: unsigned long nTargetHeight = 0) const; }; -VCL_DLLPUBLIC sal_Int64 estimateUsageInBytesForSurfaceHelper(const SurfaceHelper* pHelper); - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */