You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
4.9 KiB
177 lines
4.9 KiB
//=========== Copyright Valve Corporation, All rights reserved. ===============// |
|
// |
|
// Purpose: |
|
//=============================================================================// |
|
|
|
#ifndef UITOPLEVELWINDOWOVERLAY_H |
|
#define UITOPLEVELWINDOWOVERLAY_H |
|
|
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
// bad reach |
|
#include "../../../panorama/input/controller.h" |
|
|
|
class CSharedMemStream; |
|
namespace IPC |
|
{ |
|
class IEvent; |
|
class ISharedMem; |
|
} |
|
|
|
namespace panorama |
|
{ |
|
class CTopLevelWindowOverlay; |
|
class COverlayInterface; |
|
|
|
|
|
class CTopLevelWindowOverlay : public CTopLevelWindow |
|
{ |
|
typedef CTopLevelWindow BaseClass; |
|
public: |
|
CTopLevelWindowOverlay( CUIEngine *pUIEngineParent ); |
|
virtual ~CTopLevelWindowOverlay(); |
|
|
|
// Access overlay window interface for this window, NULL on non Steam Overlay windows |
|
virtual IUIOverlayWindow *GetOverlayInterface(); |
|
|
|
// Initialize backing surface for window |
|
virtual bool BInitializeSurface( const char *pchWindowTitle, int nWidth, int nHeight, IUIEngine::ERenderTarget eRenderTarget, bool bFixedSurfaceSize, bool bEnforceWindowAspectRatio, bool bUseCustomMouseCursor, const char *pchTargetMonitor ); |
|
|
|
// Run any per window frame func logic |
|
virtual void RunPlatformFrame(); |
|
|
|
// Resize the window to specified dimensions |
|
virtual void OnWindowResize( uint32 nWidth, uint32 nHeight ); |
|
|
|
// Window position management |
|
virtual void SetWindowPosition( float x, float y ); |
|
virtual void GetWindowPosition( float &x, float &y ); |
|
virtual void GetWindowBounds( float &left, float &top, float &right, float &bottom ); |
|
virtual void GetClientDimensions( float &width, float &height ); |
|
virtual void Activate( bool bForceful ); |
|
virtual bool BHasFocus() { return m_bFocus; } |
|
virtual bool BIsFullscreen() { return m_bFullScreen; } |
|
virtual void* GetNativeWindowHandle() { return 0; } |
|
|
|
virtual bool BAllowInput( InputMessage_t &msg ); |
|
virtual bool BIsVisible() { return m_bVisible; } |
|
virtual void SetVisible( bool bVisible ) { AssertMsg( false, "SetVisible not implemented on CTopLevelWindowOverlay" ); } |
|
|
|
void SetInputEnabled( bool bEnabled ) { m_bInputEnabled = bEnabled; } |
|
|
|
// Clear color for the window, normally black, transparent for overlay |
|
virtual Color GetClearColor() { return Color( 0, 0, 0, 0 ); } |
|
|
|
// Necessary for generating mouse enter & leave events on windows |
|
bool IsMouseOver() { return m_bMouseOverWindow; } |
|
void OnMouseEnter(); |
|
void OnMouseLeave() { m_bMouseOverWindow = false; } |
|
|
|
void SetMouseCursor( EMouseCursors eCursor ); |
|
|
|
bool SetGameProcessInfo( AppId_t nAppId, bool bCanSharedSurfaces, int32 eTextureFormat ); |
|
void ProcessInputEvents(); |
|
|
|
bool BVisiblityChanged() const { return m_bVisibleThisFrame != m_bVisibleLastFrame; } |
|
|
|
void PushOverlayRenderCmdStream( CSharedMemStream *pRenderStream, unsigned long dwPID, float flOpacity, EOverlayWindowAlignment alignment ); |
|
|
|
void SetGameWindowSize( uint32 nWidth, uint32 nHeight ); |
|
void SetFixedSurfaceSize( uint32 unSurfaceWidth, uint32 unSurfaceHeight ); |
|
|
|
void OnMouseMove( float x, float y ); |
|
|
|
void SetFocus( bool bFocus ); |
|
|
|
void SetLetterboxColor( Color c ); |
|
|
|
#ifdef DBGFLAG_VALIDATE |
|
virtual void Validate( CValidator &validator, const tchar *pchName ); |
|
#endif |
|
protected: |
|
virtual void Shutdown(); |
|
|
|
private: |
|
|
|
COverlayInterface *m_pOverlayInterface; |
|
IUI3DSurface *m_p3DSurface; |
|
bool m_bMouseOverWindow; |
|
AppId_t m_nAppId; |
|
|
|
bool m_bInputEnabled; |
|
bool m_bFocus; |
|
bool m_bCanShareSurfaces; |
|
|
|
bool m_bVisibleThisFrame; |
|
bool m_bVisibleLastFrame; |
|
|
|
uint32 m_unGameWidth; |
|
uint32 m_unGameHeight; |
|
|
|
bool m_bFullScreen; |
|
|
|
bool m_bVisible; |
|
}; |
|
|
|
class COverlayInterface : public IUIOverlayWindow |
|
{ |
|
public: |
|
COverlayInterface( CTopLevelWindowOverlay *pWindow ) |
|
{ |
|
m_pWindow = pWindow; |
|
} |
|
|
|
virtual void PushOverlayRenderCmdStream( CSharedMemStream *pRenderStream, unsigned long dwPID, float flOpacity, EOverlayWindowAlignment alignment ) OVERRIDE |
|
{ |
|
return m_pWindow->PushOverlayRenderCmdStream( pRenderStream, dwPID, flOpacity, alignment ); |
|
} |
|
|
|
virtual void SetFocus( bool bFocus ) OVERRIDE |
|
{ |
|
return m_pWindow->SetFocus( bFocus ); |
|
} |
|
|
|
virtual bool SetGameProcessInfo( AppId_t nAppId, bool bCanSharedSurfaces, int32 eTextureFormat ) OVERRIDE |
|
{ |
|
return m_pWindow->SetGameProcessInfo( nAppId, bCanSharedSurfaces, eTextureFormat ); |
|
} |
|
|
|
virtual void SetInputEnabled( bool bEnabled ) OVERRIDE |
|
{ |
|
return m_pWindow->SetInputEnabled( bEnabled ); |
|
} |
|
|
|
virtual void SetGameWindowSize( uint32 nWidth, uint32 nHeight ) OVERRIDE |
|
{ |
|
return m_pWindow->SetGameWindowSize( nWidth, nHeight ); |
|
} |
|
|
|
virtual void SetFixedSurfaceSize( uint32 unSurfaceWidth, uint32 unSurfaceHeight ) OVERRIDE |
|
{ |
|
return m_pWindow->SetFixedSurfaceSize( unSurfaceWidth, unSurfaceHeight ); |
|
} |
|
|
|
virtual void OnMouseMove( float x, float y ) OVERRIDE |
|
{ |
|
return m_pWindow->OnMouseMove( x, y ); |
|
} |
|
|
|
virtual void OnMouseEnter() OVERRIDE |
|
{ |
|
return m_pWindow->OnMouseEnter(); |
|
} |
|
|
|
virtual void SetLetterboxColor( Color c ) OVERRIDE |
|
{ |
|
return m_pWindow->SetLetterboxColor( c ); |
|
} |
|
private: |
|
CTopLevelWindowOverlay *m_pWindow; |
|
}; |
|
|
|
|
|
} // namespace panorama |
|
|
|
#endif // UITOPLEVELWINDOWOVERLAY_H
|
|
|