diff options
author | Tor Lillqvist <tml@iki.fi> | 2013-03-26 00:27:59 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@iki.fi> | 2013-03-26 19:06:00 +0200 |
commit | 708270b616b486869e896d2ace4bc9b4fdbefad3 (patch) | |
tree | 217eb5890d48a67cf1d60ab318a29a9dbf8cd8cd /vcl/ios | |
parent | 40e67e2b5a2c0658633513c3c408cf6ef1441665 (diff) |
Improve the blitting, use memcpy for each row
Change-Id: Idfc5efe8b2326748670fec82a7780f81b243dbc8
Diffstat (limited to 'vcl/ios')
-rw-r--r-- | vcl/ios/iosinst.cxx | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/vcl/ios/iosinst.cxx b/vcl/ios/iosinst.cxx index 8e3137b24d4e..71dda58fcf7a 100644 --- a/vcl/ios/iosinst.cxx +++ b/vcl/ios/iosinst.cxx @@ -56,20 +56,20 @@ void IosSalInstance::BlitFrameToBuffer(char *pPixelBuffer, const sal_Int32 nStride = aDev->getScanlineStride(); const unsigned char *pSrc = aSrcData.get(); + if (aDev->getScanlineFormat() != basebmp::Format::THIRTYTWO_BIT_TC_MASK_RGBA) + { + SAL_INFO( "vcl.ios", "BlitFrameToBuffer: format is not 32bpp RGBA but " << aDev->getScanlineFormat() ); + return; + } + for (unsigned int y = 0; y < (unsigned int)aDevSize.getY(); y++) { - const unsigned char *sp( pSrc + nStride * y ); + const unsigned char *sp( pSrc + nStride * (aDevSize.getY() - 1 - y) ); unsigned char *dp( (unsigned char *)pPixelBuffer + nPBWidth * 4 * (y + nDestY) + nDestX * 4 ); - for (unsigned int x = 0; x < (unsigned int)aDevSize.getX(); x++) - { - dp[x*4 + 0] = sp[x*4 + 0]; // R - dp[x*4 + 1] = sp[x*4 + 1]; // G - dp[x*4 + 2] = sp[x*4 + 2]; // B - dp[x*4 + 3] = 255; // A - } + memcpy(dp, sp, aDevSize.getX()*4); } } |