diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2021-07-09 14:08:39 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2021-07-26 01:53:09 +0200 |
commit | 2a151d1d5bc055d5e0011460b6ec42ea9f34f880 (patch) | |
tree | 03b60134c6ea51bff31229a4755f630c92caac79 /vcl | |
parent | 3f88c646a911e4b25f4866eda75ac38b978c4fd0 (diff) |
vcl: bitmap::CreateFromData add option to reverse alpha (0xff - a)
Change-Id: If69225f86afb315ad432789178188a66264ab3ac
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118669
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/bitmap/BitmapTools.cxx | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/vcl/source/bitmap/BitmapTools.cxx b/vcl/source/bitmap/BitmapTools.cxx index 92b3175143f2..eddef22cfb53 100644 --- a/vcl/source/bitmap/BitmapTools.cxx +++ b/vcl/source/bitmap/BitmapTools.cxx @@ -128,7 +128,9 @@ void loadFromSvg(SvStream& rStream, const OUString& sPath, BitmapEx& rBitmapEx, @param bReversColors In case the endianness of pData is wrong, you could reverse colors */ -BitmapEx CreateFromData( sal_uInt8 const *pData, sal_Int32 nWidth, sal_Int32 nHeight, sal_Int32 nStride, vcl::PixelFormat ePixelFormat, bool bReversColors ) +BitmapEx CreateFromData(sal_uInt8 const *pData, sal_Int32 nWidth, sal_Int32 nHeight, + sal_Int32 nStride, vcl::PixelFormat ePixelFormat, + bool bReversColors, bool bReverseAlpha) { auto nBitCount = sal_uInt16(ePixelFormat); @@ -184,7 +186,8 @@ BitmapEx CreateFromData( sal_uInt8 const *pData, sal_Int32 nWidth, sal_Int32 nHe Scanline pMaskScanLine = xMaskAcc->GetScanline(y); for (tools::Long x = 0; x < nWidth; ++x) { - xMaskAcc->SetPixelOnData(pMaskScanLine, x, BitmapColor(*p)); + const sal_uInt8 nValue = bReverseAlpha ? 0xff - *p : *p; + xMaskAcc->SetPixelOnData(pMaskScanLine, x, BitmapColor(nValue)); p += 4; } } |