summaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/OVR_OSX_HMDDevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'LibOVR/Src/OVR_OSX_HMDDevice.h')
-rw-r--r--LibOVR/Src/OVR_OSX_HMDDevice.h296
1 files changed, 160 insertions, 136 deletions
diff --git a/LibOVR/Src/OVR_OSX_HMDDevice.h b/LibOVR/Src/OVR_OSX_HMDDevice.h
index 37c34ed..52b8471 100644
--- a/LibOVR/Src/OVR_OSX_HMDDevice.h
+++ b/LibOVR/Src/OVR_OSX_HMDDevice.h
@@ -1,136 +1,160 @@
-/************************************************************************************
-
-Filename : OVR_OSX_HMDDevice.h
-Content : OSX HMDDevice implementation
-Created : September 21, 2012
-Authors : Michael Antonov
-
-Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
-
-Use of this software is subject to the terms of the Oculus license
-agreement provided at the time of installation or download, or which
-otherwise accompanies this software in either electronic or hard copy form.
-
-*************************************************************************************/
-
-#ifndef OVR_OSX_HMDDevice_h
-#define OVR_OSX_HMDDevice_h
-
-#include "OVR_DeviceImpl.h"
-#include <Kernel/OVR_String.h>
-
-namespace OVR { namespace OSX {
-
-class HMDDevice;
-
-
-//-------------------------------------------------------------------------------------
-
-// HMDDeviceFactory enumerates attached Oculus HMD devices.
-//
-// This is currently done by matching monitor device strings.
-
-class HMDDeviceFactory : public DeviceFactory
-{
-public:
- static HMDDeviceFactory Instance;
-
- // Enumerates devices, creating and destroying relevant objects in manager.
- virtual void EnumerateDevices(EnumerateVisitor& visitor);
-
-protected:
- DeviceManager* getManager() const { return (DeviceManager*) pManager; }
-};
-
-
-class HMDDeviceCreateDesc : public DeviceCreateDesc
-{
- friend class HMDDevice;
-
-protected:
- enum
- {
- Contents_Screen = 1,
- Contents_Distortion = 2,
- Contents_7Inch = 4,
- };
-
-public:
-
- HMDDeviceCreateDesc(DeviceFactory* factory,
- UInt32 vendor, UInt32 product, const String& displayDeviceName, long dispId);
- HMDDeviceCreateDesc(const HMDDeviceCreateDesc& other);
-
- virtual DeviceCreateDesc* Clone() const
- {
- return new HMDDeviceCreateDesc(*this);
- }
-
- virtual DeviceBase* NewDeviceInstance();
-
- virtual MatchResult MatchDevice(const DeviceCreateDesc& other,
- DeviceCreateDesc**) const;
-
- virtual bool UpdateMatchedCandidate(const DeviceCreateDesc&, bool* newDeviceFlag = NULL);
-
- virtual bool GetDeviceInfo(DeviceInfo* info) const;
-
- void SetScreenParameters(int x, int y, unsigned hres, unsigned vres, float hsize, float vsize)
- {
- DesktopX = x;
- DesktopY = y;
- HResolution = hres;
- VResolution = vres;
- HScreenSize = hsize;
- VScreenSize = vsize;
- Contents |= Contents_Screen;
- }
-
- void SetDistortion(const float* dks)
- {
- for (int i = 0; i < 4; i++)
- DistortionK[i] = dks[i];
- Contents |= Contents_Distortion;
- }
-
- void Set7Inch() { Contents |= Contents_7Inch; }
-
- bool Is7Inch() const;
-
-protected:
- String DeviceId;
- String DisplayDeviceName;
- int DesktopX, DesktopY;
- unsigned Contents;
- unsigned HResolution, VResolution;
- float HScreenSize, VScreenSize;
- long DisplayId;
- float DistortionK[4];
-};
-
-
-//-------------------------------------------------------------------------------------
-
-// HMDDevice represents an Oculus HMD device unit. An instance of this class
-// is typically created from the DeviceManager.
-// After HMD device is created, we its sensor data can be obtained by
-// first creating a Sensor object and then wrappig it in SensorFusion.
-
-class HMDDevice : public DeviceImpl<OVR::HMDDevice>
-{
-public:
- HMDDevice(HMDDeviceCreateDesc* createDesc);
- ~HMDDevice();
-
- virtual bool Initialize(DeviceBase* parent);
- virtual void Shutdown();
-
- // Query associated sensor.
- virtual OVR::SensorDevice* GetSensor();
-};
-
-
-}} // namespace OVR::OSX
-
-#endif // OVR_OSX_HMDDevice_h
-
+/************************************************************************************
+
+Filename : OVR_OSX_HMDDevice.h
+Content : OSX HMDDevice implementation
+Created : September 21, 2012
+Authors : Michael Antonov
+
+Copyright : Copyright 2012 Oculus VR, Inc. All Rights reserved.
+
+Use of this software is subject to the terms of the Oculus license
+agreement provided at the time of installation or download, or which
+otherwise accompanies this software in either electronic or hard copy form.
+
+*************************************************************************************/
+
+#ifndef OVR_OSX_HMDDevice_h
+#define OVR_OSX_HMDDevice_h
+
+#include "OVR_DeviceImpl.h"
+#include <Kernel/OVR_String.h>
+#include "OVR_Profile.h"
+
+namespace OVR { namespace OSX {
+
+class HMDDevice;
+
+
+//-------------------------------------------------------------------------------------
+
+// HMDDeviceFactory enumerates attached Oculus HMD devices.
+//
+// This is currently done by matching monitor device strings.
+
+class HMDDeviceFactory : public DeviceFactory
+{
+public:
+ static HMDDeviceFactory Instance;
+
+ // Enumerates devices, creating and destroying relevant objects in manager.
+ virtual void EnumerateDevices(EnumerateVisitor& visitor);
+
+protected:
+ DeviceManager* getManager() const { return (DeviceManager*) pManager; }
+};
+
+
+class HMDDeviceCreateDesc : public DeviceCreateDesc
+{
+ friend class HMDDevice;
+
+protected:
+ enum
+ {
+ Contents_Screen = 1,
+ Contents_Distortion = 2,
+ Contents_7Inch = 4,
+ };
+
+public:
+
+ HMDDeviceCreateDesc(DeviceFactory* factory,
+ UInt32 vendor, UInt32 product, const String& displayDeviceName, long dispId);
+ HMDDeviceCreateDesc(const HMDDeviceCreateDesc& other);
+
+ virtual DeviceCreateDesc* Clone() const
+ {
+ return new HMDDeviceCreateDesc(*this);
+ }
+
+ virtual DeviceBase* NewDeviceInstance();
+
+ virtual MatchResult MatchDevice(const DeviceCreateDesc& other,
+ DeviceCreateDesc**) const;
+
+ virtual bool UpdateMatchedCandidate(const DeviceCreateDesc&, bool* newDeviceFlag = NULL);
+
+ virtual bool GetDeviceInfo(DeviceInfo* info) const;
+
+ // Requests the currently used default profile. This profile affects the
+ // settings reported by HMDInfo.
+ Profile* GetProfileAddRef() const;
+
+ ProfileType GetProfileType() const
+ {
+ return (HResolution >= 1920) ? Profile_RiftDKHD : Profile_RiftDK1;
+ }
+
+ void SetScreenParameters(int x, int y, unsigned hres, unsigned vres, float hsize, float vsize)
+ {
+ DesktopX = x;
+ DesktopY = y;
+ HResolution = hres;
+ VResolution = vres;
+ HScreenSize = hsize;
+ VScreenSize = vsize;
+ Contents |= Contents_Screen;
+ }
+
+ void SetDistortion(const float* dks)
+ {
+ for (int i = 0; i < 4; i++)
+ DistortionK[i] = dks[i];
+ Contents |= Contents_Distortion;
+ }
+
+ void Set7Inch() { Contents |= Contents_7Inch; }
+
+ bool Is7Inch() const;
+
+protected:
+ String DeviceId;
+ String DisplayDeviceName;
+ int DesktopX, DesktopY;
+ unsigned Contents;
+ unsigned HResolution, VResolution;
+ float HScreenSize, VScreenSize;
+ long DisplayId;
+ float DistortionK[4];
+};
+
+
+//-------------------------------------------------------------------------------------
+
+// HMDDevice represents an Oculus HMD device unit. An instance of this class
+// is typically created from the DeviceManager.
+// After HMD device is created, we its sensor data can be obtained by
+// first creating a Sensor object and then wrappig it in SensorFusion.
+
+class HMDDevice : public DeviceImpl<OVR::HMDDevice>
+{
+public:
+ HMDDevice(HMDDeviceCreateDesc* createDesc);
+ ~HMDDevice();
+
+ virtual bool Initialize(DeviceBase* parent);
+ virtual void Shutdown();
+
+
+ // Requests the currently used default profile. This profile affects the
+ // settings reported by HMDInfo.
+ virtual Profile* GetProfile() const;
+ virtual const char* GetProfileName() const;
+ virtual bool SetProfileName(const char* name);
+
+ // Query associated sensor.
+ virtual OVR::SensorDevice* GetSensor();
+
+protected:
+ HMDDeviceCreateDesc* getDesc() const { return (HMDDeviceCreateDesc*)pCreateDesc.GetPtr(); }
+
+ // User name for the profile used with this device.
+ String ProfileName;
+ mutable Ptr<Profile> pCachedProfile;
+};
+
+
+}} // namespace OVR::OSX
+
+#endif // OVR_OSX_HMDDevice_h
+