Monado OpenXR Runtime
Loading...
Searching...
No Matches
XRTVROverlay.hpp
Go to the documentation of this file.
1// Copyright 2026, Beyley Cardellio
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Implementation of the latest IVROverlay_028 interface version.
6 *
7 * @author Beyley Cardellio <ep1cm1n10n123@gmail.com>
8 * @ingroup openvr_interfaces
9 */
10
11#pragma once
12
13#include "openvr_interfaces_unified.h"
14#include "openvr_forward_macros.h"
15
16#include "XRTVRClientCore.hpp"
17
18
19namespace xrt::state_trackers::openvr {
20
21using namespace vr;
22
23class XRTVROverlay_028 : public vr::IVROverlay_028
24{
25private:
27
28public:
30
31 virtual ~XRTVROverlay_028() = default;
32
33 FnTable_IVROverlay_028();
34
35 EVROverlayError
36 FindOverlay(const char *pchOverlayKey, VROverlayHandle_t *pOverlayHandle) override;
37
38 EVROverlayError
39 CreateOverlay(const char *pchOverlayKey,
40 const char *pchOverlayName,
41 VROverlayHandle_t *pOverlayHandle) override;
42
43 EVROverlayError
44 CreateSubviewOverlay(VROverlayHandle_t parentOverlayHandle,
45 const char *pchSubviewOverlayKey,
46 const char *pchSubviewOverlayName,
47 VROverlayHandle_t *pSubviewOverlayHandle) override;
48
49 EVROverlayError
50 DestroyOverlay(VROverlayHandle_t ulOverlayHandle) override;
51
52 uint32_t
53 GetOverlayKey(VROverlayHandle_t ulOverlayHandle,
54 char *pchValue,
55 uint32_t unBufferSize,
56 EVROverlayError *pError) override;
57
58 uint32_t
59 GetOverlayName(VROverlayHandle_t ulOverlayHandle,
60 char *pchValue,
61 uint32_t unBufferSize,
62 EVROverlayError *pError) override;
63
64 EVROverlayError
65 SetOverlayName(VROverlayHandle_t ulOverlayHandle, const char *pchName) override;
66
67 EVROverlayError
68 GetOverlayImageData(VROverlayHandle_t ulOverlayHandle,
69 void *pvBuffer,
70 uint32_t unBufferSize,
71 uint32_t *punWidth,
72 uint32_t *punHeight) override;
73
74 const char *
75 GetOverlayErrorNameFromEnum(EVROverlayError error) override;
76
77 EVROverlayError
78 SetOverlayRenderingPid(VROverlayHandle_t ulOverlayHandle, uint32_t unPID) override;
79
80 uint32_t
81 GetOverlayRenderingPid(VROverlayHandle_t ulOverlayHandle) override;
82
83 EVROverlayError
84 SetOverlayFlag(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled) override;
85
86 EVROverlayError
87 GetOverlayFlag(VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool *pbEnabled) override;
88
89 EVROverlayError
90 GetOverlayFlags(VROverlayHandle_t ulOverlayHandle, uint32_t *pFlags) override;
91
92 EVROverlayError
93 SetOverlayColor(VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue) override;
94
95 EVROverlayError
96 GetOverlayColor(VROverlayHandle_t ulOverlayHandle, float *pfRed, float *pfGreen, float *pfBlue) override;
97
98 EVROverlayError
99 SetOverlayAlpha(VROverlayHandle_t ulOverlayHandle, float fAlpha) override;
100
101 EVROverlayError
102 GetOverlayAlpha(VROverlayHandle_t ulOverlayHandle, float *pfAlpha) override;
103
104 EVROverlayError
105 SetOverlayTexelAspect(VROverlayHandle_t ulOverlayHandle, float fTexelAspect) override;
106
107 EVROverlayError
108 GetOverlayTexelAspect(VROverlayHandle_t ulOverlayHandle, float *pfTexelAspect) override;
109
110 EVROverlayError
111 SetOverlaySortOrder(VROverlayHandle_t ulOverlayHandle, uint32_t unSortOrder) override;
112
113 EVROverlayError
114 GetOverlaySortOrder(VROverlayHandle_t ulOverlayHandle, uint32_t *punSortOrder) override;
115
116 EVROverlayError
117 SetOverlayWidthInMeters(VROverlayHandle_t ulOverlayHandle, float fWidthInMeters) override;
118
119 EVROverlayError
120 GetOverlayWidthInMeters(VROverlayHandle_t ulOverlayHandle, float *pfWidthInMeters) override;
121
122 EVROverlayError
123 SetOverlayCurvature(VROverlayHandle_t ulOverlayHandle, float fCurvature) override;
124
125 EVROverlayError
126 GetOverlayCurvature(VROverlayHandle_t ulOverlayHandle, float *pfCurvature) override;
127
128 EVROverlayError
129 SetOverlayPreCurvePitch(VROverlayHandle_t ulOverlayHandle, float fRadians) override;
130
131 EVROverlayError
132 GetOverlayPreCurvePitch(VROverlayHandle_t ulOverlayHandle, float *pfRadians) override;
133
134 EVROverlayError
135 SetOverlayTextureColorSpace(VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace) override;
136
137 EVROverlayError
138 GetOverlayTextureColorSpace(VROverlayHandle_t ulOverlayHandle, EColorSpace *peTextureColorSpace) override;
139
140 EVROverlayError
141 SetOverlayTextureBounds(VROverlayHandle_t ulOverlayHandle,
142 const VRTextureBounds_t *pOverlayTextureBounds) override;
143
144 EVROverlayError
145 GetOverlayTextureBounds(VROverlayHandle_t ulOverlayHandle, VRTextureBounds_t *pOverlayTextureBounds) override;
146
147 EVROverlayError
148 GetOverlayTransformType(VROverlayHandle_t ulOverlayHandle, VROverlayTransformType *peTransformType) override;
149
150 EVROverlayError
151 SetOverlayTransformAbsolute(VROverlayHandle_t ulOverlayHandle,
152 ETrackingUniverseOrigin eTrackingOrigin,
153 const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform) override;
154
155 EVROverlayError
156 GetOverlayTransformAbsolute(VROverlayHandle_t ulOverlayHandle,
157 ETrackingUniverseOrigin *peTrackingOrigin,
158 HmdMatrix34_t *pmatTrackingOriginToOverlayTransform) override;
159
160 EVROverlayError
161 SetOverlayTransformTrackedDeviceRelative(VROverlayHandle_t ulOverlayHandle,
162 TrackedDeviceIndex_t unTrackedDevice,
163 const HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform) override;
164
165 EVROverlayError
166 GetOverlayTransformTrackedDeviceRelative(VROverlayHandle_t ulOverlayHandle,
167 TrackedDeviceIndex_t *punTrackedDevice,
168 HmdMatrix34_t *pmatTrackedDeviceToOverlayTransform) override;
169
170 EVROverlayError
171 SetOverlayTransformTrackedDeviceComponent(VROverlayHandle_t ulOverlayHandle,
172 TrackedDeviceIndex_t unDeviceIndex,
173 const char *pchComponentName) override;
174
175 EVROverlayError
176 GetOverlayTransformTrackedDeviceComponent(VROverlayHandle_t ulOverlayHandle,
177 TrackedDeviceIndex_t *punDeviceIndex,
178 char *pchComponentName,
179 uint32_t unComponentNameSize) override;
180
181 EVROverlayError
182 SetOverlayTransformCursor(VROverlayHandle_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot) override;
183
184 vr::EVROverlayError
185 GetOverlayTransformCursor(VROverlayHandle_t ulOverlayHandle, HmdVector2_t *pvHotspot) override;
186
187 vr::EVROverlayError
188 SetOverlayTransformProjection(VROverlayHandle_t ulOverlayHandle,
189 ETrackingUniverseOrigin eTrackingOrigin,
190 const HmdMatrix34_t *pmatTrackingOriginToOverlayTransform,
191 const VROverlayProjection_t *pProjection,
192 vr::EVREye eEye) override;
193
194 EVROverlayError
195 SetSubviewPosition(VROverlayHandle_t ulOverlayHandle, float fX, float fY) override;
196
197 EVROverlayError
198 ShowOverlay(VROverlayHandle_t ulOverlayHandle) override;
199
200 EVROverlayError
201 HideOverlay(VROverlayHandle_t ulOverlayHandle) override;
202
203 bool
204 IsOverlayVisible(VROverlayHandle_t ulOverlayHandle) override;
205
206 EVROverlayError
207 GetTransformForOverlayCoordinates(VROverlayHandle_t ulOverlayHandle,
208 ETrackingUniverseOrigin eTrackingOrigin,
209 HmdVector2_t coordinatesInOverlay,
210 HmdMatrix34_t *pmatTransform) override;
211
212 EVROverlayError
213 WaitFrameSync(uint32_t nTimeoutMs) override;
214
215 bool
216 PollNextOverlayEvent(VROverlayHandle_t ulOverlayHandle, VREvent_t *pEvent, uint32_t uncbVREvent) override;
217
218 EVROverlayError
219 GetOverlayInputMethod(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod *peInputMethod) override;
220
221 EVROverlayError
222 SetOverlayInputMethod(VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod) override;
223
224 EVROverlayError
225 GetOverlayMouseScale(VROverlayHandle_t ulOverlayHandle, HmdVector2_t *pvecMouseScale) override;
226
227 EVROverlayError
228 SetOverlayMouseScale(VROverlayHandle_t ulOverlayHandle, const HmdVector2_t *pvecMouseScale) override;
229
230 bool
231 ComputeOverlayIntersection(VROverlayHandle_t ulOverlayHandle,
232 const VROverlayIntersectionParams_t *pParams,
233 VROverlayIntersectionResults_t *pResults) override;
234
235 bool
236 IsHoverTargetOverlay(VROverlayHandle_t ulOverlayHandle) override;
237
238 EVROverlayError
239 SetOverlayIntersectionMask(VROverlayHandle_t ulOverlayHandle,
240 VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives,
241 uint32_t unNumMaskPrimitives,
242 uint32_t unPrimitiveSize) override;
243
244 EVROverlayError
245 TriggerLaserMouseHapticVibration(VROverlayHandle_t ulOverlayHandle,
246 float fDurationSeconds,
247 float fFrequency,
248 float fAmplitude) override;
249
250 EVROverlayError
251 SetOverlayCursor(VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulCursorHandle) override;
252
253 EVROverlayError
254 SetOverlayCursorPositionOverride(VROverlayHandle_t ulOverlayHandle, const HmdVector2_t *pvCursor) override;
255
256 EVROverlayError
257 ClearOverlayCursorPositionOverride(VROverlayHandle_t ulOverlayHandle) override;
258
259 EVROverlayError
260 SetOverlayTexture(VROverlayHandle_t ulOverlayHandle, const Texture_t *pTexture) override;
261
262 EVROverlayError
263 ClearOverlayTexture(VROverlayHandle_t ulOverlayHandle) override;
264
265 EVROverlayError
266 SetOverlayRaw(VROverlayHandle_t ulOverlayHandle,
267 void *pvBuffer,
268 uint32_t unWidth,
269 uint32_t unHeight,
270 uint32_t unBytesPerPixel) override;
271
272 EVROverlayError
273 SetOverlayFromFile(VROverlayHandle_t ulOverlayHandle, const char *pchFilePath) override;
274
275 EVROverlayError
276 GetOverlayTexture(VROverlayHandle_t ulOverlayHandle,
277 void **pNativeTextureHandle,
278 void *pNativeTextureRef,
279 uint32_t *pWidth,
280 uint32_t *pHeight,
281 uint32_t *pNativeFormat,
282 ETextureType *pAPIType,
283 EColorSpace *pColorSpace,
284 VRTextureBounds_t *pTextureBounds) override;
285
286 EVROverlayError
287 ReleaseNativeOverlayHandle(VROverlayHandle_t ulOverlayHandle, void *pNativeTextureHandle) override;
288
289 EVROverlayError
290 GetOverlayTextureSize(VROverlayHandle_t ulOverlayHandle, uint32_t *pWidth, uint32_t *pHeight) override;
291
292 EVROverlayError
293 CreateDashboardOverlay(const char *pchOverlayKey,
294 const char *pchOverlayFriendlyName,
295 VROverlayHandle_t *pMainHandle,
296 VROverlayHandle_t *pThumbnailHandle) override;
297
298 bool
299 IsDashboardVisible() override;
300
301 bool
302 IsActiveDashboardOverlay(VROverlayHandle_t ulOverlayHandle) override;
303
304 EVROverlayError
305 SetDashboardOverlaySceneProcess(VROverlayHandle_t ulOverlayHandle, uint32_t unProcessId) override;
306
307 EVROverlayError
308 GetDashboardOverlaySceneProcess(VROverlayHandle_t ulOverlayHandle, uint32_t *punProcessId) override;
309
310 void
311 ShowDashboard(const char *pchOverlayToShow) override;
312
313 vr::TrackedDeviceIndex_t
314 GetPrimaryDashboardDevice() override;
315
316 EVROverlayError
317 ShowKeyboard(EGamepadTextInputMode eInputMode,
318 EGamepadTextInputLineMode eLineInputMode,
319 uint32_t unFlags,
320 const char *pchDescription,
321 uint32_t unCharMax,
322 const char *pchExistingText,
323 uint64_t uUserValue) override;
324
325 EVROverlayError
326 ShowKeyboardForOverlay(VROverlayHandle_t ulOverlayHandle,
327 EGamepadTextInputMode eInputMode,
328 EGamepadTextInputLineMode eLineInputMode,
329 uint32_t unFlags,
330 const char *pchDescription,
331 uint32_t unCharMax,
332 const char *pchExistingText,
333 uint64_t uUserValue) override;
334
335 uint32_t
336 GetKeyboardText(char *pchText, uint32_t cchText) override;
337
338 void
339 HideKeyboard() override;
340
341 void
342 SetKeyboardTransformAbsolute(ETrackingUniverseOrigin eTrackingOrigin,
343 const HmdMatrix34_t *pmatTrackingOriginToKeyboardTransform) override;
344
345 void
346 SetKeyboardPositionForOverlay(VROverlayHandle_t ulOverlayHandle, HmdRect2_t avoidRect) override;
347
348 VRMessageOverlayResponse
349 ShowMessageOverlay(const char *pchText,
350 const char *pchCaption,
351 const char *pchButton0Text,
352 const char *pchButton1Text,
353 const char *pchButton2Text,
354 const char *pchButton3Text) override;
355
356 void
357 CloseMessageOverlay() override;
358};
359
360} // namespace xrt::state_trackers::openvr
Implementation of the latest IVRClientCore interface version.
Definition XRTVRClientCore.hpp:152
Definition XRTVROverlay.hpp:24
Definitions missing from C++ header, present in C.
Definition blockqueue.hpp:15