summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-03-09 14:18:35 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-03-09 16:19:55 +0000
commit25a5458e751f34063686c4fecd7b8bfc8a78302d (patch)
tree88d81ed9a3b75a335f5c38f43eca2b8201b563cf /include
parent82e92bb15d26fff2d07736e2a6193cac1915b44d (diff)
just calculate the scanline positions
rather than generating a big offset table to dramatically reduce the amount of memory loading graphics takes Change-Id: I8a4b1dc5cbcb686d6b8570f2eeef61ee0fe25515 Reviewed-on: https://gerrit.libreoffice.org/35005 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/vcl/bitmapaccess.hxx23
1 files changed, 9 insertions, 14 deletions
diff --git a/include/vcl/bitmapaccess.hxx b/include/vcl/bitmapaccess.hxx
index 5bab9a3bac76..50eb37c2d336 100644
--- a/include/vcl/bitmapaccess.hxx
+++ b/include/vcl/bitmapaccess.hxx
@@ -115,7 +115,6 @@ protected:
FncSetPixel mFncSetPixel;
SAL_DLLPRIVATE void ImplInitScanBuffer( Bitmap& rBitmap );
- SAL_DLLPRIVATE void ImplClearScanBuffer();
SAL_DLLPRIVATE bool ImplSetAccessPointers( ScanlineFormat nFormat );
public:
@@ -303,13 +302,11 @@ inline const BitmapColor& BitmapInfoAccess::GetPaletteColor( sal_uInt16 nColor )
return mpBuffer->maPalette[nColor];
}
-
inline const BitmapColor& BitmapInfoAccess::GetBestPaletteColor(const BitmapColor& rBitmapColor) const
{
return GetPaletteColor(GetBestPaletteIndex(rBitmapColor));
}
-
inline ColorMask& BitmapInfoAccess::GetColorMask() const
{
assert(mpBuffer && "Access is not valid!");
@@ -317,7 +314,6 @@ inline ColorMask& BitmapInfoAccess::GetColorMask() const
return mpBuffer->maColorMask;
}
-
inline Scanline BitmapReadAccess::GetBuffer() const
{
assert(mpBuffer && "Access is not valid!");
@@ -325,32 +321,32 @@ inline Scanline BitmapReadAccess::GetBuffer() const
return mpBuffer ? mpBuffer->mpBits : nullptr;
}
-
inline Scanline BitmapReadAccess::GetScanline(long nY) const
{
- assert(mpBuffer && mpScanBuf && "Access is not valid!");
+ assert(mpBuffer && "Access is not valid!");
assert(nY < mpBuffer->mnHeight && "y-coordinate out of range!");
- return mpScanBuf[nY];
+ if (mpBuffer->mnFormat & ScanlineFormat::TopDown)
+ {
+ return mpBuffer->mpBits + (nY * mpBuffer->mnScanlineSize);
+ }
+ return mpBuffer->mpBits + ((mpBuffer->mnHeight - 1 - nY) * mpBuffer->mnScanlineSize);
}
-
inline BitmapColor BitmapReadAccess::GetPixel(long nY, long nX) const
{
- assert(mpBuffer && mpScanBuf && "Access is not valid!");
+ assert(mpBuffer && "Access is not valid!");
assert(nX < mpBuffer->mnWidth && "x-coordinate out of range!");
assert(nY < mpBuffer->mnHeight && "y-coordinate out of range!");
- return mFncGetPixel(mpScanBuf[nY], nX, maColorMask );
+ return mFncGetPixel(GetScanline(nY), nX, maColorMask );
}
-
inline sal_uInt8 BitmapReadAccess::GetPixelIndex(long nY, long nX) const
{
return GetPixel(nY, nX).GetBlueOrIndex();
}
-
inline BitmapColor BitmapReadAccess::GetPixelFromData(const sal_uInt8* pData, long nX) const
{
assert(pData && "Access is not valid!");
@@ -358,7 +354,6 @@ inline BitmapColor BitmapReadAccess::GetPixelFromData(const sal_uInt8* pData, lo
return mFncGetPixel( pData, nX, maColorMask );
}
-
inline void BitmapReadAccess::SetPixelOnData(sal_uInt8* pData, long nX, const BitmapColor& rBitmapColor)
{
assert(pData && "Access is not valid!");
@@ -413,7 +408,7 @@ inline void BitmapWriteAccess::SetPixel(long nY, long nX, const BitmapColor& rBi
assert(nX < mpBuffer->mnWidth && "x-coordinate out of range!");
assert(nY < mpBuffer->mnHeight && "y-coordinate out of range!");
- mFncSetPixel(mpScanBuf[nY], nX, rBitmapColor, maColorMask);
+ mFncSetPixel(GetScanline(nY), nX, rBitmapColor, maColorMask);
}