summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/virdev.cxx
diff options
context:
space:
mode:
authorTor Lillqvist <tlillqvist@suse.com>2012-06-11 20:02:11 +0300
committerTor Lillqvist <tlillqvist@suse.com>2012-06-12 13:50:49 +0300
commit96c4aeedb04bfb1438b69875951fc132142cb0d3 (patch)
treee78113f60d5c449ea6084c556e653d71b23e7fa6 /vcl/source/gdi/virdev.cxx
parent56595dab6424db6d69f81bfa551118140c5b66ac (diff)
Implement XToolkit2::createScreenCompatibleDeviceUsingBuffer for Android
Change-Id: I8dd16850a35cd2de7260dcbe9a8aa7afae2294be
Diffstat (limited to 'vcl/source/gdi/virdev.cxx')
-rw-r--r--vcl/source/gdi/virdev.cxx27
1 files changed, 21 insertions, 6 deletions
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index cda84e464bcb..6c6281962e91 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -210,10 +210,10 @@ VirtualDevice::~VirtualDevice()
// -----------------------------------------------------------------------
-sal_Bool VirtualDevice::ImplSetOutputSizePixel( const Size& rNewSize, sal_Bool bErase )
+sal_Bool VirtualDevice::InnerImplSetOutputSizePixel( const Size& rNewSize, sal_Bool bErase, const basebmp::RawMemorySharedArray &pBuffer )
{
SAL_INFO( "vcl.gdi",
- "VirtualDevice::ImplSetOutputSizePixel( " << rNewSize.Width() << ", "
+ "VirtualDevice::InnerImplSetOutputSizePixel( " << rNewSize.Width() << ", "
<< rNewSize.Height() << ", " << bErase << " )" );
if ( !mpVirDev )
@@ -222,6 +222,8 @@ sal_Bool VirtualDevice::ImplSetOutputSizePixel( const Size& rNewSize, sal_Bool b
{
if ( bErase )
Erase();
+ // Yeah, so trying to re-use a VirtualDevice but this time using a
+ // pre-allocated buffer won't work. Big deal.
return sal_True;
}
@@ -236,7 +238,10 @@ sal_Bool VirtualDevice::ImplSetOutputSizePixel( const Size& rNewSize, sal_Bool b
if ( bErase )
{
- bRet = mpVirDev->SetSize( nNewWidth, nNewHeight );
+ if ( pBuffer )
+ bRet = mpVirDev->SetSizeUsingBuffer( nNewWidth, nNewHeight, pBuffer );
+ else
+ bRet = mpVirDev->SetSize( nNewWidth, nNewHeight );
if ( bRet )
{
@@ -323,9 +328,9 @@ void VirtualDevice::ImplFillOpaqueRectangle( const Rectangle& rRect )
// -----------------------------------------------------------------------
-sal_Bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, sal_Bool bErase )
+sal_Bool VirtualDevice::ImplSetOutputSizePixel( const Size& rNewSize, sal_Bool bErase, const basebmp::RawMemorySharedArray &pBuffer )
{
- if( ImplSetOutputSizePixel(rNewSize, bErase) )
+ if( InnerImplSetOutputSizePixel(rNewSize, bErase, pBuffer) )
{
if( mnAlphaDepth != -1 )
{
@@ -339,7 +344,7 @@ sal_Bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, sal_Bool bEras
if( !mpAlphaVDev )
{
mpAlphaVDev = new VirtualDevice( *this, mnAlphaDepth );
- mpAlphaVDev->ImplSetOutputSizePixel(rNewSize, bErase);
+ mpAlphaVDev->InnerImplSetOutputSizePixel(rNewSize, bErase, basebmp::RawMemorySharedArray() );
}
// TODO: copy full outdev state to new one, here. Also needed in outdev2.cxx:DrawOutDev
@@ -358,6 +363,16 @@ sal_Bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, sal_Bool bEras
return sal_False;
}
+sal_Bool VirtualDevice::SetOutputSizePixel( const Size& rNewSize, sal_Bool bErase )
+{
+ return ImplSetOutputSizePixel( rNewSize, bErase, basebmp::RawMemorySharedArray() );
+}
+
+sal_Bool VirtualDevice::SetOutputSizePixelAndBuffer( const Size& rNewSize, const basebmp::RawMemorySharedArray &pBuffer )
+{
+ return ImplSetOutputSizePixel( rNewSize, sal_True, pBuffer);
+}
+
// -----------------------------------------------------------------------
void VirtualDevice::SetReferenceDevice( RefDevMode i_eRefDevMode )