vcl/headless/CairoCommon.cxx | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-)
New commits: commit df2b2526826e44cb215752e4daab1c6cbdfb480b Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Feb 10 16:55:51 2025 +0200 Commit: Noel Grandin <noelgran...@gmail.com> CommitDate: Mon Feb 10 21:16:09 2025 +0100 optimise CairoCommon::drawMask Change-Id: I955718b491f72e4f92170d5894db8688949e06ac Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181360 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/vcl/headless/CairoCommon.cxx b/vcl/headless/CairoCommon.cxx index 0e94f51b861d..be25063a94e3 100644 --- a/vcl/headless/CairoCommon.cxx +++ b/vcl/headless/CairoCommon.cxx @@ -1814,26 +1814,15 @@ void CairoCommon::drawMask(const SalTwoRect& rTR, const SalBitmap& rSalBitmap, C } sal_Int32 nStride; unsigned char* mask_data = aSurface.getBits(nStride); -#if !ENABLE_WASM_STRIP_PREMULTIPLY - vcl::bitmap::lookup_table const& unpremultiply_table = vcl::bitmap::get_unpremultiply_table(); -#endif for (tools::Long y = rTR.mnSrcY; y < rTR.mnSrcY + rTR.mnSrcHeight; ++y) { unsigned char* row = mask_data + (nStride * y); unsigned char* data = row + (rTR.mnSrcX * 4); for (tools::Long x = rTR.mnSrcX; x < rTR.mnSrcX + rTR.mnSrcWidth; ++x) { - sal_uInt8 a = data[SVP_CAIRO_ALPHA]; -#if ENABLE_WASM_STRIP_PREMULTIPLY - sal_uInt8 b = vcl::bitmap::unpremultiply(data[SVP_CAIRO_BLUE], a); - sal_uInt8 g = vcl::bitmap::unpremultiply(data[SVP_CAIRO_GREEN], a); - sal_uInt8 r = vcl::bitmap::unpremultiply(data[SVP_CAIRO_RED], a); -#else - sal_uInt8 b = unpremultiply_table[a][data[SVP_CAIRO_BLUE]]; - sal_uInt8 g = unpremultiply_table[a][data[SVP_CAIRO_GREEN]]; - sal_uInt8 r = unpremultiply_table[a][data[SVP_CAIRO_RED]]; -#endif - if (r == 0 && g == 0 && b == 0) + // Don't need to unpremultiply the data here, because we are checking for zero, + // and that is the same multiplied or un-multiplied. + if (data[SVP_CAIRO_RED] == 0 && data[SVP_CAIRO_GREEN] == 0 && data[SVP_CAIRO_BLUE] == 0) { data[0] = nMaskColor.GetBlue(); data[1] = nMaskColor.GetGreen();