summaryrefslogtreecommitdiff
path: root/public/panorama/uitoplevelwindowopenvroverlay.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/panorama/uitoplevelwindowopenvroverlay.h')
-rw-r--r--public/panorama/uitoplevelwindowopenvroverlay.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/public/panorama/uitoplevelwindowopenvroverlay.h b/public/panorama/uitoplevelwindowopenvroverlay.h
new file mode 100644
index 0000000..a4cbe6f
--- /dev/null
+++ b/public/panorama/uitoplevelwindowopenvroverlay.h
@@ -0,0 +1,108 @@
+//=========== Copyright Valve Corporation, All rights reserved. ===============//
+//
+// Purpose:
+//=============================================================================//
+
+#ifndef UITOPLEVELWINDOWOPENVROVERLAY_H
+#define UITOPLEVELWINDOWOPENVROVERLAY_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <openvr.h>
+
+namespace panorama
+{
+class CTopLevelWindowOverlay;
+
+
+class CTopLevelWindowOpenVROverlay : public CTopLevelWindow
+{
+ typedef CTopLevelWindow BaseClass;
+public:
+ CTopLevelWindowOpenVROverlay( CUIEngine *pUIEngineParent );
+ virtual ~CTopLevelWindowOpenVROverlay();
+
+ // Initialize backing surface for window
+ virtual bool BInitializeSurface( int nWidth, int nHeight, vr::VROverlayHandle_t ulOverlayHandle );
+
+ // 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 );
+
+#ifdef DBGFLAG_VALIDATE
+ virtual void Validate( CValidator &validator, const tchar *pchName );
+#endif
+protected:
+ virtual void Shutdown();
+
+private:
+
+ IUI3DSurface *m_p3DSurface;
+ bool m_bMouseOverWindow;
+
+ 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;
+
+ vr::VROverlayHandle_t m_ulOverlayHandle;
+};
+
+
+
+} // namespace panorama
+
+#endif // UITOPLEVELWINDOWOPENVROVERLAY_H