diff options
Diffstat (limited to 'vcl/win/gdi/salgdi2.cxx')
-rw-r--r-- | vcl/win/gdi/salgdi2.cxx | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/vcl/win/gdi/salgdi2.cxx b/vcl/win/gdi/salgdi2.cxx index b4aa68fa29cb..ba4afc157bc3 100644 --- a/vcl/win/gdi/salgdi2.cxx +++ b/vcl/win/gdi/salgdi2.cxx @@ -116,10 +116,14 @@ void convertToWinSalBitmap(SalBitmap& rSalBitmap, WinSalBitmap& rWinSalBitmap) rWinSalBitmap.Create(rSalBitmap.GetSize(), vcl::bitDepthToPixelFormat(rSalBitmap.GetBitCount()), aBitmapPalette); BitmapBuffer* pWrite = rWinSalBitmap.AcquireBuffer(BitmapAccessMode::Write); - // convert to bottom-up data - sal_uInt8* pSource = pRead->mpBits + pRead->mnScanlineSize * (pRead->mnHeight - 1); + sal_uInt8* pSource(pRead->mpBits); sal_uInt8* pDestination(pWrite->mpBits); - tools::Long readRowChange = -pRead->mnScanlineSize; + tools::Long readRowChange = pRead->mnScanlineSize; + if (pRead->meDirection == ScanlineDirection::TopDown) + { + pSource += pRead->mnScanlineSize * (pRead->mnHeight - 1); + readRowChange = -readRowChange; + } std::unique_ptr<ColorScanlineConverter> pConverter; |