summaryrefslogtreecommitdiff
path: root/public/panorama/uitoplevelwindowoverlay.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/panorama/uitoplevelwindowoverlay.h')
-rw-r--r--public/panorama/uitoplevelwindowoverlay.h177
1 files changed, 177 insertions, 0 deletions
diff --git a/public/panorama/uitoplevelwindowoverlay.h b/public/panorama/uitoplevelwindowoverlay.h
new file mode 100644
index 0000000..7218615
--- /dev/null
+++ b/public/panorama/uitoplevelwindowoverlay.h
@@ -0,0 +1,177 @@
+//=========== 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