Kaydet (Commit) 45306431 authored tarafından Michael Meeks's avatar Michael Meeks

tdf#89482 - return size of system virtual device resource at construction.

Change-Id: I832a5626b52935180f24857e56297840667eec2a
Reviewed-on: https://gerrit.libreoffice.org/14678Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
üst c1b9402d
...@@ -224,7 +224,7 @@ void SvpSalInstance::DestroyObject( SalObject* pObject ) ...@@ -224,7 +224,7 @@ void SvpSalInstance::DestroyObject( SalObject* pObject )
#ifndef IOS #ifndef IOS
SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics */, SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics */,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData* /* pData */ ) const SystemGraphicsData* /* pData */ )
{ {
......
...@@ -124,7 +124,7 @@ public: ...@@ -124,7 +124,7 @@ public:
// nBitCount: 0 == Default(=as window) / 1 == Mono // nBitCount: 0 == Default(=as window) / 1 == Mono
// pData allows for using a system dependent graphics or device context // pData allows for using a system dependent graphics or device context
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE; sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE;
// Printer // Printer
......
...@@ -31,7 +31,7 @@ class X11OpenGLSalVirtualDevice : public SalVirtualDevice ...@@ -31,7 +31,7 @@ class X11OpenGLSalVirtualDevice : public SalVirtualDevice
public: public:
X11OpenGLSalVirtualDevice( SalGraphics *pGraphics, X11OpenGLSalVirtualDevice( SalGraphics *pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData *pData ); const SystemGraphicsData *pData );
virtual ~X11OpenGLSalVirtualDevice(); virtual ~X11OpenGLSalVirtualDevice();
......
...@@ -89,8 +89,9 @@ public: ...@@ -89,8 +89,9 @@ public:
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE; virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE;
virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE; virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE;
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData ) SAL_OVERRIDE; sal_uInt16 nBitCount,
const SystemGraphicsData *pData ) SAL_OVERRIDE;
virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo, virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
ImplJobSetup* pSetupData ) SAL_OVERRIDE; ImplJobSetup* pSetupData ) SAL_OVERRIDE;
virtual void DestroyInfoPrinter( SalInfoPrinter* pPrinter ) SAL_OVERRIDE; virtual void DestroyInfoPrinter( SalInfoPrinter* pPrinter ) SAL_OVERRIDE;
......
...@@ -55,7 +55,7 @@ private: ...@@ -55,7 +55,7 @@ private:
void Destroy(); void Destroy();
public: public:
AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData ); AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData );
virtual ~AquaSalVirtualDevice(); virtual ~AquaSalVirtualDevice();
virtual SalGraphics* AcquireGraphics() SAL_OVERRIDE; virtual SalGraphics* AcquireGraphics() SAL_OVERRIDE;
......
...@@ -83,10 +83,12 @@ public: ...@@ -83,10 +83,12 @@ public:
// VirtualDevice // VirtualDevice
// nDX and nDY in pixels // nDX and nDY in pixels
// nBitCount: 0 == default(=as window) / 1 == mono // nBitCount: 0 == default(=as window) / 1 == mono
// pData allows for using a system dependent graphics or device context // pData allows for using a system dependent graphics or device context,
// if a system context is passed in nDX and nDY are updated to reflect
// its size; otherwise these remain unchanged.
virtual SalVirtualDevice* virtual SalVirtualDevice*
CreateVirtualDevice( SalGraphics* pGraphics, CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &rDX, long &rDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) = 0; sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) = 0;
// Printer // Printer
......
...@@ -75,7 +75,7 @@ public: ...@@ -75,7 +75,7 @@ public:
virtual SalTimer* CreateSalTimer() SAL_OVERRIDE; virtual SalTimer* CreateSalTimer() SAL_OVERRIDE;
virtual void AddToRecentDocumentList(const OUString& rFileUrl, const OUString& rMimeType, const OUString& rDocumentService) SAL_OVERRIDE; virtual void AddToRecentDocumentList(const OUString& rFileUrl, const OUString& rMimeType, const OUString& rDocumentService) SAL_OVERRIDE;
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics*, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics*,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData* ) SAL_OVERRIDE; const SystemGraphicsData* ) SAL_OVERRIDE;
virtual SalBitmap* CreateSalBitmap() SAL_OVERRIDE; virtual SalBitmap* CreateSalBitmap() SAL_OVERRIDE;
......
...@@ -54,7 +54,7 @@ public: ...@@ -54,7 +54,7 @@ public:
virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE; virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE;
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE; sal_uInt16 nBitCount, const SystemGraphicsData *pData = NULL ) SAL_OVERRIDE;
virtual void PostPrintersChanged() SAL_OVERRIDE; virtual void PostPrintersChanged() SAL_OVERRIDE;
virtual GenPspGraphics *CreatePrintGraphics() SAL_OVERRIDE; virtual GenPspGraphics *CreatePrintGraphics() SAL_OVERRIDE;
......
...@@ -45,7 +45,7 @@ class X11SalVirtualDevice : public SalVirtualDevice ...@@ -45,7 +45,7 @@ class X11SalVirtualDevice : public SalVirtualDevice
public: public:
X11SalVirtualDevice( SalGraphics *pGraphics, X11SalVirtualDevice( SalGraphics *pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData *pData ); const SystemGraphicsData *pData );
virtual ~X11SalVirtualDevice(); virtual ~X11SalVirtualDevice();
......
...@@ -42,7 +42,7 @@ public: ...@@ -42,7 +42,7 @@ public:
virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE; virtual SalObject* CreateObject( SalFrame* pParent, SystemWindowData* pWindowData, bool bShow = true ) SAL_OVERRIDE;
virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE; virtual void DestroyObject( SalObject* pObject ) SAL_OVERRIDE;
virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics, virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData ) SAL_OVERRIDE; sal_uInt16 nBitCount, const SystemGraphicsData *pData ) SAL_OVERRIDE;
virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo, virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
ImplJobSetup* pSetupData ) SAL_OVERRIDE; ImplJobSetup* pSetupData ) SAL_OVERRIDE;
......
...@@ -34,7 +34,7 @@ void X11SalGraphics::Init( X11OpenGLSalVirtualDevice *pDevice ) ...@@ -34,7 +34,7 @@ void X11SalGraphics::Init( X11OpenGLSalVirtualDevice *pDevice )
} }
X11OpenGLSalVirtualDevice::X11OpenGLSalVirtualDevice( SalGraphics* pGraphics, X11OpenGLSalVirtualDevice::X11OpenGLSalVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData *pData ) : const SystemGraphicsData *pData ) :
mbGraphics( false ), mbGraphics( false ),
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
#include "quartz/utils.h" #include "quartz/utils.h"
SalVirtualDevice* AquaSalInstance::CreateVirtualDevice( SalGraphics* pGraphics, SalVirtualDevice* AquaSalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData ) long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData )
{ {
// #i92075# can be called first in a thread // #i92075# can be called first in a thread
SalData::ensureThreadAutoreleasePool(); SalData::ensureThreadAutoreleasePool();
...@@ -54,7 +54,7 @@ SalVirtualDevice* AquaSalInstance::CreateVirtualDevice( SalGraphics* pGraphics, ...@@ -54,7 +54,7 @@ SalVirtualDevice* AquaSalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
#endif #endif
} }
AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX, long nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData ) AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long &nDX, long &nDY, sal_uInt16 nBitCount, const SystemGraphicsData *pData )
: mbGraphicsUsed( false ) : mbGraphicsUsed( false )
, mxBitmapContext( NULL ) , mxBitmapContext( NULL )
, mnBitmapDepth( 0 ) , mnBitmapDepth( 0 )
...@@ -65,7 +65,6 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX, ...@@ -65,7 +65,6 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX,
{ {
// Create virtual device based on existing SystemGraphicsData // Create virtual device based on existing SystemGraphicsData
// We ignore nDx and nDY, as the desired size comes from the SystemGraphicsData. // We ignore nDx and nDY, as the desired size comes from the SystemGraphicsData.
// WTF does the above mean, SystemGraphicsData has no size field(s).
mbForeignContext = true; // the mxContext is from pData (what "mxContext"? there is no such field anywhere in vcl;) mbForeignContext = true; // the mxContext is from pData (what "mxContext"? there is no such field anywhere in vcl;)
mpGraphics = new AquaSalGraphics( /*pGraphic*/ ); mpGraphics = new AquaSalGraphics( /*pGraphic*/ );
if (nDX == 0) if (nDX == 0)
...@@ -73,6 +72,18 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX, ...@@ -73,6 +72,18 @@ AquaSalVirtualDevice::AquaSalVirtualDevice( AquaSalGraphics* pGraphic, long nDX,
if (nDY == 0) if (nDY == 0)
nDY = 1; nDY = 1;
mxLayer = CGLayerCreateWithContext( pData->rCGContext, CGSizeMake( nDX, nDY), NULL ); mxLayer = CGLayerCreateWithContext( pData->rCGContext, CGSizeMake( nDX, nDY), NULL );
// Interogate the context as to its real size
if (mxLayer)
{
const CGSize aSize = CGLayerGetSize( mxLayer );
nDX = static_cast<long>(aSize.width);
nDY = static_cast<long>(aSize.height);
}
else
{
nDX = 0;
nDY = 0;
}
CG_TRACE( "CGLayerCreateWithContext(" << pData->rCGContext << "," << CGSizeMake( nDX, nDY) << ",NULL) = " << mxLayer ); CG_TRACE( "CGLayerCreateWithContext(" << pData->rCGContext << "," << CGSizeMake( nDX, nDY) << ",NULL) = " << mxLayer );
mpGraphics->SetVirDevGraphics( mxLayer, pData->rCGContext ); mpGraphics->SetVirDevGraphics( mxLayer, pData->rCGContext );
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
#include <opengl/x11/salvd.hxx> #include <opengl/x11/salvd.hxx>
SalVirtualDevice* X11SalInstance::CreateVirtualDevice( SalGraphics* pGraphics, SalVirtualDevice* X11SalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, const SystemGraphicsData *pData ) sal_uInt16 nBitCount, const SystemGraphicsData *pData )
{ {
if (OpenGLHelper::isVCLOpenGLEnabled()) if (OpenGLHelper::isVCLOpenGLEnabled())
...@@ -82,7 +82,7 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap, ...@@ -82,7 +82,7 @@ void X11SalGraphics::Init( X11SalVirtualDevice *pDevice, SalColormap* pColormap,
} }
X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics, X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData *pData ) : const SystemGraphicsData *pData ) :
m_nXScreen( 0 ), m_nXScreen( 0 ),
...@@ -115,6 +115,8 @@ X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics, ...@@ -115,6 +115,8 @@ X11SalVirtualDevice::X11SalVirtualDevice( SalGraphics* pGraphics,
} }
nDX_ = (long)w; nDX_ = (long)w;
nDY_ = (long)h; nDY_ = (long)h;
nDX = nDX_;
nDY = nDY_;
m_nXScreen = SalX11Screen( nScreen ); m_nXScreen = SalX11Screen( nScreen );
hDrawable_ = pData->hDrawable; hDrawable_ = pData->hDrawable;
bExternPixmap_ = true; bExternPixmap_ = true;
......
...@@ -309,7 +309,7 @@ void GtkYieldMutex::ThreadsLeave() ...@@ -309,7 +309,7 @@ void GtkYieldMutex::ThreadsLeave()
} }
SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG, SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData *pGd ) const SystemGraphicsData *pGd )
{ {
......
...@@ -67,7 +67,7 @@ HBITMAP WinSalVirtualDevice::ImplCreateVirDevBitmap(HDC hDC, long nDX, long nDY, ...@@ -67,7 +67,7 @@ HBITMAP WinSalVirtualDevice::ImplCreateVirDevBitmap(HDC hDC, long nDX, long nDY,
} }
SalVirtualDevice* WinSalInstance::CreateVirtualDevice( SalGraphics* pSGraphics, SalVirtualDevice* WinSalInstance::CreateVirtualDevice( SalGraphics* pSGraphics,
long nDX, long nDY, long &nDX, long &nDY,
sal_uInt16 nBitCount, sal_uInt16 nBitCount,
const SystemGraphicsData* pData ) const SystemGraphicsData* pData )
{ {
...@@ -82,10 +82,20 @@ SalVirtualDevice* WinSalInstance::CreateVirtualDevice( SalGraphics* pSGraphics, ...@@ -82,10 +82,20 @@ SalVirtualDevice* WinSalInstance::CreateVirtualDevice( SalGraphics* pSGraphics,
hDC = pData->hDC; hDC = pData->hDC;
hBmp = NULL; hBmp = NULL;
bOk = (hDC != NULL); bOk = (hDC != NULL);
if (bOk)
{
nDX = GetDeviceCaps( hDC, HORZRES );
nDY = GetDeviceCaps( hDC, VERTRES );
}
else
{
nDX = 0;
nDY = 0;
}
} }
else else
{ {
hDC = CreateCompatibleDC( pGraphics->getHDC() ); hDC = CreateCompatibleDC( pGraphics->getHDC() );
if( !hDC ) if( !hDC )
ImplWriteLastError( GetLastError(), "CreateCompatibleDC in CreateVirtualDevice" ); ImplWriteLastError( GetLastError(), "CreateCompatibleDC in CreateVirtualDevice" );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment