summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2013-03-26 00:27:59 +0200
committerTor Lillqvist <tml@iki.fi>2013-03-26 19:06:00 +0200
commit708270b616b486869e896d2ace4bc9b4fdbefad3 (patch)
tree217eb5890d48a67cf1d60ab318a29a9dbf8cd8cd /vcl
parent40e67e2b5a2c0658633513c3c408cf6ef1441665 (diff)
Improve the blitting, use memcpy for each row
Change-Id: Idfc5efe8b2326748670fec82a7780f81b243dbc8
Diffstat (limited to 'vcl')
-rw-r--r--vcl/ios/iosinst.cxx16
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);
}
}