summaryrefslogtreecommitdiff
path: root/vcl/source/bitmap/BitmapProcessor.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-02-07 09:49:10 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-02-07 10:08:30 +0100
commite5012e53b919ae4921d6d35660bde323a6f28417 (patch)
treed0ed24f56e29f5d027e21404696fca441cdd0fc5 /vcl/source/bitmap/BitmapProcessor.cxx
parentc99527385acf367c748b3dcf3e6a3bb8103f5eee (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.cxx10
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()]);