diff options
author | Christopher Sherlock <chris.sherlock79@gmail.com> | 2024-12-23 03:00:36 +1100 |
---|---|---|
committer | Michael Weghorn <m.weghorn@posteo.de> | 2025-01-09 17:11:41 +0100 |
commit | 84db299b24992d1dfc2e6c99bad3a67e425c1cb5 (patch) | |
tree | 5fbbeaae55e6971015b088e8d9ee9563eb72171a | |
parent | 6e29421b78105e4833f9a315f24fabc62e11408d (diff) |
vcl: flatten BlendFrameCache.cxx
Change-Id: Iff5dc958c90afc82cd719176c1566413faea677e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179173
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
-rw-r--r-- | vcl/source/bitmap/BlendFrameCache.cxx | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/vcl/source/bitmap/BlendFrameCache.cxx b/vcl/source/bitmap/BlendFrameCache.cxx index 6a7d308e7666..f233591f0abe 100644 --- a/vcl/source/bitmap/BlendFrameCache.cxx +++ b/vcl/source/bitmap/BlendFrameCache.cxx @@ -49,88 +49,88 @@ BlendFrameCache::BlendFrameCache(Size const& rSize, sal_uInt8 nAlpha, Color cons BitmapScopedWriteAccess pContent(aContent); BitmapScopedWriteAccess pAlpha(aAlpha); - if (pContent && pAlpha) + if (!pContent || !pAlpha) + return; + + tools::Long x(0); + tools::Long y(0); + Scanline pScanContent = pContent->GetScanline(0); + Scanline pScanAlpha = pContent->GetScanline(0); + + // x == 0, y == 0, top-left corner + pContent->SetPixelOnData(pScanContent, 0, rColorTopLeft); + pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); + + // y == 0, top line left to right + for (x = 1; x < nW - 1; x++) { - tools::Long x(0); - tools::Long y(0); - Scanline pScanContent = pContent->GetScanline(0); - Scanline pScanAlpha = pContent->GetScanline(0); + Color aMix(rColorTopLeft); - // x == 0, y == 0, top-left corner - pContent->SetPixelOnData(pScanContent, 0, rColorTopLeft); - pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); + aMix.Merge(rColorTopRight, 255 - sal_uInt8((x * 255) / nW)); + pContent->SetPixelOnData(pScanContent, x, aMix); + pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); + } - // y == 0, top line left to right - for (x = 1; x < nW - 1; x++) - { - Color aMix(rColorTopLeft); + // x == nW - 1, y == 0, top-right corner + // #i123690# Caution! When nW is 1, x == nW is possible (!) + if (x < nW) + { + pContent->SetPixelOnData(pScanContent, x, rColorTopRight); + pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); + } - aMix.Merge(rColorTopRight, 255 - sal_uInt8((x * 255) / nW)); - pContent->SetPixelOnData(pScanContent, x, aMix); - pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); - } + // x == 0 and nW - 1, left and right line top-down + for (y = 1; y < nH - 1; y++) + { + pScanContent = pContent->GetScanline(y); + pScanAlpha = pContent->GetScanline(y); + Color aMixA(rColorTopLeft); + + aMixA.Merge(rColorBottomLeft, 255 - sal_uInt8((y * 255) / nH)); + pContent->SetPixelOnData(pScanContent, 0, aMixA); + pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); - // x == nW - 1, y == 0, top-right corner // #i123690# Caution! When nW is 1, x == nW is possible (!) if (x < nW) { - pContent->SetPixelOnData(pScanContent, x, rColorTopRight); + Color aMixB(rColorTopRight); + + aMixB.Merge(rColorBottomRight, 255 - sal_uInt8((y * 255) / nH)); + pContent->SetPixelOnData(pScanContent, x, aMixB); pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); } + } + + // #i123690# Caution! When nH is 1, y == nH is possible (!) + if (y < nH) + { + // x == 0, y == nH - 1, bottom-left corner + pContent->SetPixelOnData(pScanContent, 0, rColorBottomLeft); + pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); - // x == 0 and nW - 1, left and right line top-down - for (y = 1; y < nH - 1; y++) + // y == nH - 1, bottom line left to right + for (x = 1; x < nW - 1; x++) { - pScanContent = pContent->GetScanline(y); - pScanAlpha = pContent->GetScanline(y); - Color aMixA(rColorTopLeft); - - aMixA.Merge(rColorBottomLeft, 255 - sal_uInt8((y * 255) / nH)); - pContent->SetPixelOnData(pScanContent, 0, aMixA); - pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); - - // #i123690# Caution! When nW is 1, x == nW is possible (!) - if (x < nW) - { - Color aMixB(rColorTopRight); - - aMixB.Merge(rColorBottomRight, 255 - sal_uInt8((y * 255) / nH)); - pContent->SetPixelOnData(pScanContent, x, aMixB); - pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); - } + Color aMix(rColorBottomLeft); + + aMix.Merge(rColorBottomRight, 255 - sal_uInt8(((x - 0) * 255) / nW)); + pContent->SetPixelOnData(pScanContent, x, aMix); + pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); } - // #i123690# Caution! When nH is 1, y == nH is possible (!) - if (y < nH) + // x == nW - 1, y == nH - 1, bottom-right corner + // #i123690# Caution! When nW is 1, x == nW is possible (!) + if (x < nW) { - // x == 0, y == nH - 1, bottom-left corner - pContent->SetPixelOnData(pScanContent, 0, rColorBottomLeft); - pAlpha->SetPixelOnData(pScanAlpha, 0, BitmapColor(nAlpha)); - - // y == nH - 1, bottom line left to right - for (x = 1; x < nW - 1; x++) - { - Color aMix(rColorBottomLeft); - - aMix.Merge(rColorBottomRight, 255 - sal_uInt8(((x - 0) * 255) / nW)); - pContent->SetPixelOnData(pScanContent, x, aMix); - pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); - } - - // x == nW - 1, y == nH - 1, bottom-right corner - // #i123690# Caution! When nW is 1, x == nW is possible (!) - if (x < nW) - { - pContent->SetPixelOnData(pScanContent, x, rColorBottomRight); - pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); - } + pContent->SetPixelOnData(pScanContent, x, rColorBottomRight); + pAlpha->SetPixelOnData(pScanAlpha, x, BitmapColor(nAlpha)); } + } - pContent.reset(); - pAlpha.reset(); + pContent.reset(); + pAlpha.reset(); - m_aLastResult = BitmapEx(aContent, aAlpha); - } + m_aLastResult = BitmapEx(aContent, aAlpha); } /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ |