diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-02-07 09:49:10 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-02-07 10:08:30 +0100 |
commit | e5012e53b919ae4921d6d35660bde323a6f28417 (patch) | |
tree | d0ed24f56e29f5d027e21404696fca441cdd0fc5 /vcl/source/bitmap/BitmapProcessor.cxx | |
parent | c99527385acf367c748b3dcf3e6a3bb8103f5eee (diff) |
use scanline when reading pixel data
extracts code from the innermost part of fairly hot loops
And add a GetIndexFromData method to make the call sites a little easier
to read.
Change-Id: I4ce5c5a687ecdb6982562a0aafce8513d86f9107
Reviewed-on: https://gerrit.libreoffice.org/49337
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl/source/bitmap/BitmapProcessor.cxx')
-rw-r--r-- | vcl/source/bitmap/BitmapProcessor.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/vcl/source/bitmap/BitmapProcessor.cxx b/vcl/source/bitmap/BitmapProcessor.cxx index 470744fbab5c..378191ece8bd 100644 --- a/vcl/source/bitmap/BitmapProcessor.cxx +++ b/vcl/source/bitmap/BitmapProcessor.cxx @@ -28,11 +28,12 @@ BitmapEx BitmapProcessor::createLightImage(const BitmapEx& rBitmapEx) for (long nY = 0; nY < aSize.Height(); ++nY) { Scanline pScanline = pWrite->GetScanline( nY ); + Scanline pScanlineRead = pRead->GetScanline( nY ); for (long nX = 0; nX < aSize.Width(); ++nX) { BitmapColor aBmpColor = pRead->HasPalette() ? - pRead->GetPaletteColor(pRead->GetPixelIndex(nY, nX)) : - pRead->GetPixel(nY, nX); + pRead->GetPaletteColor(pRead->GetIndexFromData(pScanlineRead, nX)) : + pRead->GetPixelFromData(pScanlineRead, nX); basegfx::BColor aBColor(Color(aBmpColor.Invert().GetColor()).getBColor()); aBColor = basegfx::utils::rgb2hsl(aBColor); @@ -96,13 +97,14 @@ BitmapEx BitmapProcessor::createDisabledImage(const BitmapEx& rBitmapEx) { Scanline pScanAlpha = pGreyAlpha->GetScanline( nY ); Scanline pScanline = pGrey->GetScanline( nY ); + Scanline pScanReadAlpha = pReadAlpha->GetScanline( nY ); for (long nX = 0; nX < aSize.Width(); ++nX) { const sal_uInt8 nLum(pRead->GetLuminance(nY, nX)); BitmapColor aGreyValue(nLum, nLum, nLum); pGrey->SetPixelOnData(pScanline, nX, aGreyValue); - const BitmapColor aBitmapAlphaValue(pReadAlpha->GetPixel(nY, nX)); + const BitmapColor aBitmapAlphaValue(pReadAlpha->GetPixelFromData(pScanReadAlpha, nX)); aGreyAlphaValue.SetIndex(sal_uInt8(std::min(aBitmapAlphaValue.GetIndex() + 178ul, 255ul))); pGreyAlpha->SetPixelOnData(pScanAlpha, nX, aGreyAlphaValue); @@ -203,7 +205,7 @@ void BitmapProcessor::colorizeImage(BitmapEx const & rBitmapEx, Color aColor) Scanline pScanline = pWriteAccess->GetScanline( nY ); for (nX = 0; nX < nW; ++nX) { - aBitmapColor = pWriteAccess->GetPixel(nY, nX); + aBitmapColor = pWriteAccess->GetPixelFromData(pScanline, nX); aBitmapColor.SetRed(aMapR[aBitmapColor.GetRed()]); aBitmapColor.SetGreen(aMapG[aBitmapColor.GetGreen()]); aBitmapColor.SetBlue(aMapB[aBitmapColor.GetBlue()]); |