summaryrefslogtreecommitdiffstats
path: root/Samples/CommonSrc/Platform/Platform.h
diff options
context:
space:
mode:
Diffstat (limited to 'Samples/CommonSrc/Platform/Platform.h')
-rw-r--r--Samples/CommonSrc/Platform/Platform.h380
1 files changed, 190 insertions, 190 deletions
diff --git a/Samples/CommonSrc/Platform/Platform.h b/Samples/CommonSrc/Platform/Platform.h
index 8ef4593..201aad6 100644
--- a/Samples/CommonSrc/Platform/Platform.h
+++ b/Samples/CommonSrc/Platform/Platform.h
@@ -1,190 +1,190 @@
-/************************************************************************************
-
-Filename : Platform.h
-Content : Platform-independent app and rendering framework for Oculus samples
-Created : September 6, 2012
-Authors : Andrew Reisse
-
-Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-************************************************************************************/
-
-#ifndef OVR_Platform_h
-#define OVR_Platform_h
-
-#include "OVR.h"
-
-#include "Kernel/OVR_KeyCodes.h"
-
-namespace OVR { namespace Render {
- class RenderDevice;
- struct DisplayId;
- struct RendererParams;
-}}
-
-namespace OVR { namespace Platform {
-
-using Render::RenderDevice;
-
-class PlatformCore;
-class Application;
-class GamepadManager;
-
-// MouseMode configures mouse input behavior of the app. Three states are
-// currently supported:
-// Normal - Reports absolute coordinates with cursor shown.
-// Relative - Reports relative delta coordinates with cursor hidden
-// until 'Esc' key is pressed or window loses focus.
-// RelativeEscaped - Relative input is desired, but has been escaped until
-// mouse is clicked in the window, which will return the state
-// to relative. Absolute coordinates are reported.
-
-enum MouseMode
-{
- Mouse_Normal,
- Mouse_Relative, // Cursor hidden, mouse grab, OnMouseMove reports relative deltas.
- Mouse_RelativeEscaped, // Clicking in window will return to Relative state.
-};
-
-
-enum Modifiers
-{
- Mod_Shift = 0x001,
- Mod_Control = 0x002,
- Mod_Meta = 0x004,
- Mod_Alt = 0x008,
-
- // Set for input Mouse_Relative mode, indicating that x,y are relative deltas.
- Mod_MouseRelative = 0x100,
-};
-
-//-------------------------------------------------------------------------------------
-// ***** SetupGraphicsDeviceSet
-
-typedef RenderDevice* (*RenderDeviceCreateFunc)(const Render::RendererParams&, void*);
-
-// SetupGraphicsDeviceSet is a PlatformCore::SetupGraphics initialization helper class,
-// used to build up a list of RenderDevices that can be used for rendering.
-// Specifying a smaller set allows application to avoid linking unused graphics devices.
-struct SetupGraphicsDeviceSet
-{
- SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc)
- : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(0) { }
- SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc,
- const SetupGraphicsDeviceSet& next)
- : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(&next) { }
-
- // Selects graphics object based on type string; returns 'this' if not found.
- const SetupGraphicsDeviceSet* PickSetupDevice(const char* typeArg) const;
-
- const char* pTypeArg;
- RenderDeviceCreateFunc pCreateDevice;
-
-private:
- const SetupGraphicsDeviceSet* pNext;
-};
-
-//-------------------------------------------------------------------------------------
-// ***** PlatformCore
-
-// PlatformCore defines abstract system window/viewport setup functionality and
-// maintains a renderer. This class is separated from Application because it can have
-// derived platform-specific implementations.
-// Specific implementation classes are hidden within platform-specific versions
-// such as Win32::PlatformCore.
-
-class PlatformCore : public NewOverrideBase
-{
-protected:
- Application* pApp;
- Ptr<RenderDevice> pRender;
- Ptr<GamepadManager> pGamepadManager;
- UInt64 StartupTicks;
-
-public:
- PlatformCore(Application *app);
- virtual ~PlatformCore() { }
- Application* GetApp() { return pApp; }
- RenderDevice* GetRenderer() const { return pRender; }
- GamepadManager* GetGamepadManager() const { return pGamepadManager; }
-
- virtual bool SetupWindow(int w, int h) = 0;
- // Destroys window and also releases renderer.
- virtual void DestroyWindow() = 0;
- virtual void Exit(int exitcode) = 0;
-
- virtual void ShowWindow(bool visible) = 0;
-
- virtual bool SetFullscreen(const Render::RendererParams& rp, int fullscreen);
-
- // Search for a matching graphics renderer based on type argument and initializes it.
- virtual RenderDevice* SetupGraphics(const SetupGraphicsDeviceSet& setupGraphicsDesc,
- const char* gtype,
- const Render::RendererParams& rp) = 0;
-
- virtual void SetMouseMode(MouseMode mm) { OVR_UNUSED(mm); }
-
- virtual void GetWindowSize(int* w, int* h) const = 0;
-
- virtual void SetWindowTitle(const char*title) = 0;
- virtual void PlayMusicFile(const char *fileName) { OVR_UNUSED(fileName); }
- virtual int GetDisplayCount() { return 0; }
- virtual Render::DisplayId GetDisplay(int screen);
-
- // Get time since start of application in seconds.
- double GetAppTime() const;
-
- virtual String GetContentDirectory() const { return "."; }
-};
-
-//-------------------------------------------------------------------------------------
-// PlatformApp is a base application class from which end-user application
-// classes derive.
-
-class Application : public NewOverrideBase
-{
-protected:
- class PlatformCore* pPlatform;
-
-public:
- virtual ~Application() { }
-
- virtual int OnStartup(int argc, const char** argv) = 0;
- virtual void OnQuitRequest() { pPlatform->Exit(0); }
-
- virtual void OnIdle() {}
-
- virtual void OnKey(KeyCode key, int chr, bool down, int modifiers)
- { OVR_UNUSED4(key, chr, down, modifiers); }
- virtual void OnMouseMove(int x, int y, int modifiers)
- { OVR_UNUSED3(x, y, modifiers); }
-
- virtual void OnResize(int width, int height)
- { OVR_UNUSED2(width, height); }
-
- void SetPlatformCore(PlatformCore* p) { pPlatform = p; }
- PlatformCore* GetPlatformCore() const { return pPlatform; }
-
-
- // Static functions defined by OVR_PLATFORM_APP and used to initialize and
- // shut down the application class.
- static Application* CreateApplication();
- static void DestroyApplication(Application* app);
-};
-
-
-}}
-
-#endif
+/************************************************************************************
+
+Filename : Platform.h
+Content : Platform-independent app and rendering framework for Oculus samples
+Created : September 6, 2012
+Authors : Andrew Reisse
+
+Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+************************************************************************************/
+
+#ifndef OVR_Platform_h
+#define OVR_Platform_h
+
+#include "OVR.h"
+
+#include "Kernel/OVR_KeyCodes.h"
+
+namespace OVR { namespace Render {
+ class RenderDevice;
+ struct DisplayId;
+ struct RendererParams;
+}}
+
+namespace OVR { namespace Platform {
+
+using Render::RenderDevice;
+
+class PlatformCore;
+class Application;
+class GamepadManager;
+
+// MouseMode configures mouse input behavior of the app. Three states are
+// currently supported:
+// Normal - Reports absolute coordinates with cursor shown.
+// Relative - Reports relative delta coordinates with cursor hidden
+// until 'Esc' key is pressed or window loses focus.
+// RelativeEscaped - Relative input is desired, but has been escaped until
+// mouse is clicked in the window, which will return the state
+// to relative. Absolute coordinates are reported.
+
+enum MouseMode
+{
+ Mouse_Normal,
+ Mouse_Relative, // Cursor hidden, mouse grab, OnMouseMove reports relative deltas.
+ Mouse_RelativeEscaped, // Clicking in window will return to Relative state.
+};
+
+
+enum Modifiers
+{
+ Mod_Shift = 0x001,
+ Mod_Control = 0x002,
+ Mod_Meta = 0x004,
+ Mod_Alt = 0x008,
+
+ // Set for input Mouse_Relative mode, indicating that x,y are relative deltas.
+ Mod_MouseRelative = 0x100,
+};
+
+//-------------------------------------------------------------------------------------
+// ***** SetupGraphicsDeviceSet
+
+typedef RenderDevice* (*RenderDeviceCreateFunc)(const Render::RendererParams&, void*);
+
+// SetupGraphicsDeviceSet is a PlatformCore::SetupGraphics initialization helper class,
+// used to build up a list of RenderDevices that can be used for rendering.
+// Specifying a smaller set allows application to avoid linking unused graphics devices.
+struct SetupGraphicsDeviceSet
+{
+ SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc)
+ : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(0) { }
+ SetupGraphicsDeviceSet(const char* typeArg, RenderDeviceCreateFunc createFunc,
+ const SetupGraphicsDeviceSet& next)
+ : pTypeArg(typeArg), pCreateDevice(createFunc), pNext(&next) { }
+
+ // Selects graphics object based on type string; returns 'this' if not found.
+ const SetupGraphicsDeviceSet* PickSetupDevice(const char* typeArg) const;
+
+ const char* pTypeArg;
+ RenderDeviceCreateFunc pCreateDevice;
+
+private:
+ const SetupGraphicsDeviceSet* pNext;
+};
+
+//-------------------------------------------------------------------------------------
+// ***** PlatformCore
+
+// PlatformCore defines abstract system window/viewport setup functionality and
+// maintains a renderer. This class is separated from Application because it can have
+// derived platform-specific implementations.
+// Specific implementation classes are hidden within platform-specific versions
+// such as Win32::PlatformCore.
+
+class PlatformCore : public NewOverrideBase
+{
+protected:
+ Application* pApp;
+ Ptr<RenderDevice> pRender;
+ Ptr<GamepadManager> pGamepadManager;
+ UInt64 StartupTicks;
+
+public:
+ PlatformCore(Application *app);
+ virtual ~PlatformCore() { }
+ Application* GetApp() { return pApp; }
+ RenderDevice* GetRenderer() const { return pRender; }
+ GamepadManager* GetGamepadManager() const { return pGamepadManager; }
+
+ virtual bool SetupWindow(int w, int h) = 0;
+ // Destroys window and also releases renderer.
+ virtual void DestroyWindow() = 0;
+ virtual void Exit(int exitcode) = 0;
+
+ virtual void ShowWindow(bool visible) = 0;
+
+ virtual bool SetFullscreen(const Render::RendererParams& rp, int fullscreen);
+
+ // Search for a matching graphics renderer based on type argument and initializes it.
+ virtual RenderDevice* SetupGraphics(const SetupGraphicsDeviceSet& setupGraphicsDesc,
+ const char* gtype,
+ const Render::RendererParams& rp) = 0;
+
+ virtual void SetMouseMode(MouseMode mm) { OVR_UNUSED(mm); }
+
+ virtual void GetWindowSize(int* w, int* h) const = 0;
+
+ virtual void SetWindowTitle(const char*title) = 0;
+ virtual void PlayMusicFile(const char *fileName) { OVR_UNUSED(fileName); }
+ virtual int GetDisplayCount() { return 0; }
+ virtual Render::DisplayId GetDisplay(int screen);
+
+ // Get time since start of application in seconds.
+ double GetAppTime() const;
+
+ virtual String GetContentDirectory() const { return "."; }
+};
+
+//-------------------------------------------------------------------------------------
+// PlatformApp is a base application class from which end-user application
+// classes derive.
+
+class Application : public NewOverrideBase
+{
+protected:
+ class PlatformCore* pPlatform;
+
+public:
+ virtual ~Application() { }
+
+ virtual int OnStartup(int argc, const char** argv) = 0;
+ virtual void OnQuitRequest() { pPlatform->Exit(0); }
+
+ virtual void OnIdle() {}
+
+ virtual void OnKey(KeyCode key, int chr, bool down, int modifiers)
+ { OVR_UNUSED4(key, chr, down, modifiers); }
+ virtual void OnMouseMove(int x, int y, int modifiers)
+ { OVR_UNUSED3(x, y, modifiers); }
+
+ virtual void OnResize(int width, int height)
+ { OVR_UNUSED2(width, height); }
+
+ void SetPlatformCore(PlatformCore* p) { pPlatform = p; }
+ PlatformCore* GetPlatformCore() const { return pPlatform; }
+
+
+ // Static functions defined by OVR_PLATFORM_APP and used to initialize and
+ // shut down the application class.
+ static Application* CreateApplication();
+ static void DestroyApplication(Application* app);
+};
+
+
+}}
+
+#endif