summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2019-11-21 12:17:13 +0100
committerLuboš Luňák <l.lunak@collabora.com>2019-11-26 13:24:58 +0100
commit73efffcd8c27810bfc0e117476e690556fd93298 (patch)
tree100d79dd19a27df782dd09e23f8be174457d2379
parent8c0baa00ebbe62bb7c31f966c62785c09a6c0c4a (diff)
revert BackendCapabilities::mbSupportsBitmap32 for Skia
It appears that there are still some paths that do not expect bitmaps to be truly 32bit, so better revert to the old safe (and poor, complicated and inefficient) way of pretty much ignoring the alpha channel in SkiaSalBitmap, and let BitmapEx handle it by using an extra alpha bitmap. Change-Id: I4318c05f4ceafc5de48e19eeae5efe2abed2ec69
-rw-r--r--vcl/inc/unx/salinst.h2
-rw-r--r--vcl/inc/win/salinst.h1
-rw-r--r--vcl/skia/salbmp.cxx10
-rw-r--r--vcl/unx/generic/app/salinst.cxx10
-rw-r--r--vcl/win/app/salinst.cxx10
5 files changed, 9 insertions, 24 deletions
diff --git a/vcl/inc/unx/salinst.h b/vcl/inc/unx/salinst.h
index a84c659917cd..1b4b6c1af6f8 100644
--- a/vcl/inc/unx/salinst.h
+++ b/vcl/inc/unx/salinst.h
@@ -81,8 +81,6 @@ public:
virtual void AfterAppInit() override;
- std::shared_ptr<vcl::BackendCapabilities> GetBackendCapabilities() override;
-
// dtrans implementation
virtual css::uno::Reference< css::uno::XInterface >
CreateClipboard( const css::uno::Sequence< css::uno::Any >& i_rArguments ) override;
diff --git a/vcl/inc/win/salinst.h b/vcl/inc/win/salinst.h
index c06e51c84050..bcd3540ad8a9 100644
--- a/vcl/inc/win/salinst.h
+++ b/vcl/inc/win/salinst.h
@@ -73,7 +73,6 @@ public:
virtual void AddToRecentDocumentList(const OUString& rFileUrl, const OUString& rMimeType, const OUString& rDocumentService) override;
virtual OUString getOSVersion() override;
- virtual std::shared_ptr<vcl::BackendCapabilities> GetBackendCapabilities() override;
static int WorkaroundExceptionHandlingInUSER32Lib(int nExcept, LPEXCEPTION_POINTERS pExceptionInfo);
};
diff --git a/vcl/skia/salbmp.cxx b/vcl/skia/salbmp.cxx
index 9910693d6336..fb0c3608028d 100644
--- a/vcl/skia/salbmp.cxx
+++ b/vcl/skia/salbmp.cxx
@@ -80,8 +80,16 @@ bool SkiaSalBitmap::Create(const Size& rSize, sal_uInt16 nBitCount, const Bitmap
}
if (colorType != kUnknown_SkColorType)
{
+ // TODO
+ // As long as vcl::BackendCapabilities::mbSupportsBitmap32 is not set, we must use
+ // unpremultiplied alpha. This is because without mbSupportsBitmap32 set VCL uses
+ // an extra bitmap for the alpha channel and then merges the channels together
+ // into colors. kPremul_SkAlphaType would provide better performance, but
+ // without mbSupportsBitmap32 BitmapReadAccess::ImplSetAccessPointers() would use
+ // functions that merely read RGB without A, so the premultiplied values would
+ // not be converted back to unpremultiplied values.
if (!mBitmap.tryAllocPixels(
- SkImageInfo::Make(rSize.Width(), rSize.Height(), colorType, kPremul_SkAlphaType)))
+ SkImageInfo::Make(rSize.Width(), rSize.Height(), colorType, kUnpremul_SkAlphaType)))
{
return false;
}
diff --git a/vcl/unx/generic/app/salinst.cxx b/vcl/unx/generic/app/salinst.cxx
index 3ec713ca0e72..3c39a1addbd9 100644
--- a/vcl/unx/generic/app/salinst.cxx
+++ b/vcl/unx/generic/app/salinst.cxx
@@ -220,14 +220,4 @@ std::unique_ptr<GenPspGraphics> X11SalInstance::CreatePrintGraphics()
return std::make_unique<GenPspGraphics>();
}
-std::shared_ptr<vcl::BackendCapabilities> X11SalInstance::GetBackendCapabilities()
-{
- auto pBackendCapabilities = SalInstance::GetBackendCapabilities();
-#if HAVE_FEATURE_SKIA
- if( SkiaHelper::isVCLSkiaEnabled())
- pBackendCapabilities->mbSupportsBitmap32 = true;
-#endif
- return pBackendCapabilities;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/win/app/salinst.cxx b/vcl/win/app/salinst.cxx
index 7c7bfc6e76e0..1915fb6f6b97 100644
--- a/vcl/win/app/salinst.cxx
+++ b/vcl/win/app/salinst.cxx
@@ -1067,14 +1067,4 @@ OUString WinSalInstance::getOSVersion()
return aVer.makeStringAndClear();
}
-std::shared_ptr<vcl::BackendCapabilities> WinSalInstance::GetBackendCapabilities()
-{
- auto pBackendCapabilities = SalInstance::GetBackendCapabilities();
-#if HAVE_FEATURE_SKIA
- if( SkiaHelper::isVCLSkiaEnabled())
- pBackendCapabilities->mbSupportsBitmap32 = true;
-#endif
- return pBackendCapabilities;
-}
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */