/* * WebXR Device API */ /** * @type {XR} */ Navigator.prototype.xr; /** * @constructor */ function XRSessionInit() {}; /** * @type {Array} */ XRSessionInit.prototype.requiredFeatures; /** * @type {Array} */ XRSessionInit.prototype.optionalFeatures; /** * @constructor */ function XR() {} /** * @type {?function (Event)} */ XR.prototype.ondevicechanged; /** * @param {string} mode * * @return {!Promise} */ XR.prototype.isSessionSupported = function(mode) {}; /** * @param {string} mode * @param {XRSessionInit} options * * @return {!Promise} */ XR.prototype.requestSession = function(mode, options) {}; /** * @constructor */ function XRSession() {} /** * @type {XRRenderState} */ XRSession.prototype.renderState; /** * @type {Array} */ XRSession.prototype.inputSources; /** * @type {string} */ XRSession.prototype.visibilityState; /** * @type {?number} */ XRSession.prototype.frameRate; /** * @type {?Float32Array} */ XRSession.prototype.supportedFrameRates; /** * @type {Array} */ XRSession.prototype.enabledFeatures; /** * @type {?function (Event)} */ XRSession.prototype.onend; /** * @type {?function (XRInputSourcesChangeEvent)} */ XRSession.prototype.oninputsourceschange; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onselectstart; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onselect; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onselectend; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onsqueezestart; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onsqueeze; /** * @type {?function (XRInputSourceEvent)} */ XRSession.prototype.onsqueezeend; /** * @type {?function (Event)} */ XRSession.prototype.onvisibilitychange; /** * @param {XRRenderStateInit} state * @return {void} */ XRSession.prototype.updateRenderState = function (state) {}; /** * @param {XRFrameRequestCallback} callback * @return {number} */ XRSession.prototype.requestAnimationFrame = function (callback) {}; /** * @param {number} handle * @return {void} */ XRSession.prototype.cancelAnimationFrame = function (handle) {}; /** * @return {Promise} */ XRSession.prototype.end = function () {}; /** * @param {string} referenceSpaceType * @return {Promise} */ XRSession.prototype.requestReferenceSpace = function (referenceSpaceType) {}; /** * @param {number} rate * @return {Promise} */ XRSession.prototype.updateTargetFrameRate = function (rate) {}; /** * @typedef {function(number, XRFrame): undefined} */ var XRFrameRequestCallback; /** * @constructor */ function XRRenderStateInit() {} /** * @type {number} */ XRRenderStateInit.prototype.depthNear; /** * @type {number} */ XRRenderStateInit.prototype.depthFar; /** * @type {number} */ XRRenderStateInit.prototype.inlineVerticalFieldOfView; /** * @type {?XRWebGLLayer} */ XRRenderStateInit.prototype.baseLayer; /** * @constructor */ function XRRenderState() {}; /** * @type {number} */ XRRenderState.prototype.depthNear; /** * @type {number} */ XRRenderState.prototype.depthFar; /** * @type {?number} */ XRRenderState.prototype.inlineVerticalFieldOfView; /** * @type {?XRWebGLLayer} */ XRRenderState.prototype.baseLayer; /** * @constructor */ function XRFrame() {} /** * @type {XRSession} */ XRFrame.prototype.session; /** * @param {XRReferenceSpace} referenceSpace * @return {?XRViewerPose} */ XRFrame.prototype.getViewerPose = function (referenceSpace) {}; /** * @param {XRSpace} space * @param {XRSpace} baseSpace * @return {XRPose} */ XRFrame.prototype.getPose = function (space, baseSpace) {}; /** * @param {Array} spaces * @param {XRSpace} baseSpace * @param {Float32Array} transforms * @return {boolean} */ XRFrame.prototype.fillPoses = function (spaces, baseSpace, transforms) {}; /** * @param {Array} jointSpaces * @param {Float32Array} radii * @return {boolean} */ XRFrame.prototype.fillJointRadii = function (jointSpaces, radii) {}; /** * @constructor */ function XRReferenceSpace() {}; /** * @type {Array} */ XRReferenceSpace.prototype.boundsGeometry; /** * @param {XRRigidTransform} originOffset * @return {XRReferenceSpace} */ XRReferenceSpace.prototype.getOffsetReferenceSpace = function(originOffset) {}; /** * @type {?function (Event)} */ XRReferenceSpace.prototype.onreset; /** * @constructor */ function XRRigidTransform() {}; /** * @type {DOMPointReadOnly} */ XRRigidTransform.prototype.position; /** * @type {DOMPointReadOnly} */ XRRigidTransform.prototype.orientation; /** * @type {Float32Array} */ XRRigidTransform.prototype.matrix; /** * @type {XRRigidTransform} */ XRRigidTransform.prototype.inverse; /** * @constructor */ function XRView() {} /** * @type {string} */ XRView.prototype.eye; /** * @type {Float32Array} */ XRView.prototype.projectionMatrix; /** * @type {XRRigidTransform} */ XRView.prototype.transform; /** * @constructor */ function XRViewerPose() {} /** * @type {Array} */ XRViewerPose.prototype.views; /** * @constructor */ function XRViewport() {} /** * @type {number} */ XRViewport.prototype.x; /** * @type {number} */ XRViewport.prototype.y; /** * @type {number} */ XRViewport.prototype.width; /** * @type {number} */ XRViewport.prototype.height; /** * @constructor */ function XRWebGLLayerInit() {}; /** * @type {boolean} */ XRWebGLLayerInit.prototype.antialias; /** * @type {boolean} */ XRWebGLLayerInit.prototype.depth; /** * @type {boolean} */ XRWebGLLayerInit.prototype.stencil; /** * @type {boolean} */ XRWebGLLayerInit.prototype.alpha; /** * @type {boolean} */ XRWebGLLayerInit.prototype.ignoreDepthValues; /** * @type {boolean} */ XRWebGLLayerInit.prototype.ignoreDepthValues; /** * @type {number} */ XRWebGLLayerInit.prototype.framebufferScaleFactor; /** * @constructor * * @param {XRSession} session * @param {WebGLRenderContext|WebGL2RenderingContext} ctx * @param {?XRWebGLLayerInit} options */ function XRWebGLLayer(session, ctx, options) {} /** * @type {boolean} */ XRWebGLLayer.prototype.antialias; /** * @type {boolean} */ XRWebGLLayer.prototype.ignoreDepthValues; /** * @type {number} */ XRWebGLLayer.prototype.framebufferWidth; /** * @type {number} */ XRWebGLLayer.prototype.framebufferHeight; /** * @type {WebGLFramebuffer} */ XRWebGLLayer.prototype.framebuffer; /** * @param {XRView} view * @return {?XRViewport} */ XRWebGLLayer.prototype.getViewport = function(view) {}; /** * @param {XRSession} session * @return {number} */ XRWebGLLayer.prototype.getNativeFramebufferScaleFactor = function (session) {}; /** * @constructor */ function WebGLRenderingContextBase() {}; /** * @return {Promise} */ WebGLRenderingContextBase.prototype.makeXRCompatible = function () {}; /** * @constructor */ function XRInputSourcesChangeEvent() {}; /** * @type {Array} */ XRInputSourcesChangeEvent.prototype.added; /** * @type {Array} */ XRInputSourcesChangeEvent.prototype.removed; /** * @constructor */ function XRInputSourceEvent() {}; /** * @type {XRFrame} */ XRInputSourceEvent.prototype.frame; /** * @type {XRInputSource} */ XRInputSourceEvent.prototype.inputSource; /** * @constructor */ function XRInputSource() {}; /** * @type {Gamepad} */ XRInputSource.prototype.gamepad; /** * @type {XRSpace} */ XRInputSource.prototype.gripSpace; /** * @type {string} */ XRInputSource.prototype.handedness; /** * @type {string} */ XRInputSource.prototype.profiles; /** * @type {string} */ XRInputSource.prototype.targetRayMode; /** * @type {XRSpace} */ XRInputSource.prototype.targetRaySpace; /** * @type {?XRHand} */ XRInputSource.prototype.hand; /** * @constructor */ function XRHand() {}; /** * Note: In fact, XRHand acts like a Map, but I don't know * how to represent that here. So, we're just giving the one method we call. * * @return {Array} */ XRHand.prototype.values = function () {}; /** * @type {number} */ XRHand.prototype.size; /** * @param {string} key * @return {XRJointSpace} */ XRHand.prototype.get = function (key) {}; /** * @constructor */ function XRSpace() {}; /** * @constructor * @extends {XRSpace} */ function XRJointSpace() {}; /** * @type {string} */ XRJointSpace.prototype.jointName; /** * @constructor */ function XRPose() {}; /** * @type {XRRigidTransform} */ XRPose.prototype.transform; /** * @type {boolean} */ XRPose.prototype.emulatedPosition; /* * WebXR Layers API Level 1 */ /** * @constructor XRLayer */ function XRLayer() {} /** * @constructor XRLayerEventInit */ function XRLayerEventInit() {} /** * @type {XRLayer} */ XRLayerEventInit.prototype.layer; /** * @constructor XRLayerEvent * * @param {string} type * @param {XRLayerEventInit} init */ function XRLayerEvent(type, init) {}; /** * @type {XRLayer} */ XRLayerEvent.prototype.layer; /** * @constructor XRCompositionLayer * @extends {XRLayer} */ function XRCompositionLayer() {}; /** * @type {string} */ XRCompositionLayer.prototype.layout; /** * @type {boolean} */ XRCompositionLayer.prototype.blendTextureAberrationCorrection; /** * @type {?boolean} */ XRCompositionLayer.prototype.chromaticAberrationCorrection; /** * @type {boolean} */ XRCompositionLayer.prototype.forceMonoPresentation; /** * @type {number} */ XRCompositionLayer.prototype.opacity; /** * @type {number} */ XRCompositionLayer.prototype.mipLevels; /** * @type {boolean} */ XRCompositionLayer.prototype.needsRedraw; /** * @return {void} */ XRCompositionLayer.prototype.destroy = function () {}; /** * @constructor XRProjectionLayer * @extends {XRCompositionLayer} */ function XRProjectionLayer() {} /** * @type {number} */ XRProjectionLayer.prototype.textureWidth; /** * @type {number} */ XRProjectionLayer.prototype.textureHeight; /** * @type {number} */ XRProjectionLayer.prototype.textureArrayLength; /** * @type {boolean} */ XRProjectionLayer.prototype.ignoreDepthValues; /** * @type {?number} */ XRProjectionLayer.prototype.fixedFoveation; /** * @type {XRRigidTransform} */ XRProjectionLayer.prototype.deltaPose; /** * @constructor XRQuadLayer * @extends {XRCompositionLayer} */ function XRQuadLayer() {} /** * @type {XRSpace} */ XRQuadLayer.prototype.space; /** * @type {XRRigidTransform} */ XRQuadLayer.prototype.transform; /** * @type {number} */ XRQuadLayer.prototype.width; /** * @type {number} */ XRQuadLayer.prototype.height; /** * @type {?function (XRLayerEvent)} */ XRQuadLayer.prototype.onredraw; /** * @constructor XRCylinderLayer * @extends {XRCompositionLayer} */ function XRCylinderLayer() {} /** * @type {XRSpace} */ XRCylinderLayer.prototype.space; /** * @type {XRRigidTransform} */ XRCylinderLayer.prototype.transform; /** * @type {number} */ XRCylinderLayer.prototype.radius; /** * @type {number} */ XRCylinderLayer.prototype.centralAngle; /** * @type {number} */ XRCylinderLayer.prototype.aspectRatio; /** * @type {?function (XRLayerEvent)} */ XRCylinderLayer.prototype.onredraw; /** * @constructor XREquirectLayer * @extends {XRCompositionLayer} */ function XREquirectLayer() {} /** * @type {XRSpace} */ XREquirectLayer.prototype.space; /** * @type {XRRigidTransform} */ XREquirectLayer.prototype.transform; /** * @type {number} */ XREquirectLayer.prototype.radius; /** * @type {number} */ XREquirectLayer.prototype.centralHorizontalAngle; /** * @type {number} */ XREquirectLayer.prototype.upperVerticalAngle; /** * @type {number} */ XREquirectLayer.prototype.lowerVerticalAngle; /** * @type {?function (XRLayerEvent)} */ XREquirectLayer.prototype.onredraw; /** * @constructor XRCubeLayer * @extends {XRCompositionLayer} */ function XRCubeLayer() {} /** * @type {XRSpace} */ XRCubeLayer.prototype.space; /** * @type {DOMPointReadOnly} */ XRCubeLayer.prototype.orientation; /** * @type {?function (XRLayerEvent)} */ XRCubeLayer.prototype.onredraw; /** * @constructor XRSubImage */ function XRSubImage() {} /** * @type {XRViewport} */ XRSubImage.prototype.viewport; /** * @constructor XRWebGLSubImage * @extends {XRSubImage} */ function XRWebGLSubImage () {} /** * @type {WebGLTexture} */ XRWebGLSubImage.prototype.colorTexture; /** * @type {?WebGLTexture} */ XRWebGLSubImage.prototype.depthStencilTexture; /** * @type {?WebGLTexture} */ XRWebGLSubImage.prototype.motionVectorTexture; /** * @type {?number} */ XRWebGLSubImage.prototype.imageIndex; /** * @type {number} */ XRWebGLSubImage.prototype.colorTextureWidth; /** * @type {number} */ XRWebGLSubImage.prototype.colorTextureHeight; /** * @type {?number} */ XRWebGLSubImage.prototype.depthStencilTextureWidth; /** * @type {?number} */ XRWebGLSubImage.prototype.depthStencilTextureHeight; /** * @type {?number} */ XRWebGLSubImage.prototype.motionVectorTextureWidth; /** * @type {?number} */ XRWebGLSubImage.prototype.motionVectorTextureHeight; /** * @constructor XRProjectionLayerInit */ function XRProjectionLayerInit() {} /** * @type {string} */ XRProjectionLayerInit.prototype.textureType; /** * @type {number} */ XRProjectionLayerInit.prototype.colorFormat; /** * @type {number} */ XRProjectionLayerInit.prototype.depthFormat; /** * @type {number} */ XRProjectionLayerInit.prototype.scaleFactor; /** * @constructor XRLayerInit */ function XRLayerInit() {} /** * @type {XRSpace} */ XRLayerInit.prototype.space; /** * @type {number} */ XRLayerInit.prototype.colorFormat; /** * @type {number} */ XRLayerInit.prototype.depthFormat; /** * @type {number} */ XRLayerInit.prototype.mipLevels; /** * @type {number} */ XRLayerInit.prototype.viewPixelWidth; /** * @type {number} */ XRLayerInit.prototype.viewPixelHeight; /** * @type {string} */ XRLayerInit.prototype.layout; /** * @type {boolean} */ XRLayerInit.prototype.isStatic; /** * @constructor XRQuadLayerInit * @extends {XRLayerInit} */ function XRQuadLayerInit() {} /** * @type {string} */ XRQuadLayerInit.prototype.textureType; /** * @type {?XRRigidTransform} */ XRQuadLayerInit.prototype.transform; /** * @type {number} */ XRQuadLayerInit.prototype.width; /** * @type {number} */ XRQuadLayerInit.prototype.height; /** * @constructor XRCylinderLayerInit * @extends {XRLayerInit} */ function XRCylinderLayerInit() {} /** * @type {string} */ XRCylinderLayerInit.prototype.textureType; /** * @type {?XRRigidTransform} */ XRCylinderLayerInit.prototype.transform; /** * @type {number} */ XRCylinderLayerInit.prototype.radius; /** * @type {number} */ XRCylinderLayerInit.prototype.centralAngle; /** * @type {number} */ XRCylinderLayerInit.prototype.aspectRatio; /** * @constructor XREquirectLayerInit * @extends {XRLayerInit} */ function XREquirectLayerInit() {} /** * @type {string} */ XREquirectLayerInit.prototype.textureType; /** * @type {?XRRigidTransform} */ XREquirectLayerInit.prototype.transform; /** * @type {number} */ XREquirectLayerInit.prototype.radius; /** * @type {number} */ XREquirectLayerInit.prototype.centralHorizontalAngle; /** * @type {number} */ XREquirectLayerInit.prototype.upperVerticalAngle; /** * @type {number} */ XREquirectLayerInit.prototype.lowerVerticalAngle; /** * @constructor XRCubeLayerInit * @extends {XRLayerInit} */ function XRCubeLayerInit() {} /** * @type {DOMPointReadOnly} */ XRCubeLayerInit.prototype.orientation; /** * @constructor XRWebGLBinding * * @param {XRSession} session * @param {WebGLRenderContext|WebGL2RenderingContext} context */ function XRWebGLBinding(session, context) {} /** * @type {number} */ XRWebGLBinding.prototype.nativeProjectionScaleFactor; /** * @type {number} */ XRWebGLBinding.prototype.usesDepthValues; /** * @param {XRProjectionLayerInit} init * @return {XRProjectionLayer} */ XRWebGLBinding.prototype.createProjectionLayer = function (init) {}; /** * @param {XRQuadLayerInit} init * @return {XRQuadLayer} */ XRWebGLBinding.prototype.createQuadLayer = function (init) {}; /** * @param {XRCylinderLayerInit} init * @return {XRCylinderLayer} */ XRWebGLBinding.prototype.createCylinderLayer = function (init) {}; /** * @param {XREquirectLayerInit} init * @return {XREquirectLayer} */ XRWebGLBinding.prototype.createEquirectLayer = function (init) {}; /** * @param {XRCubeLayerInit} init * @return {XRCubeLayer} */ XRWebGLBinding.prototype.createCubeLayer = function (init) {}; /** * @param {XRCompositionLayer} layer * @param {XRFrame} frame * @param {string} eye * @return {XRWebGLSubImage} */ XRWebGLBinding.prototype.getSubImage = function (layer, frame, eye) {}; /** * @param {XRProjectionLayer} layer * @param {XRView} view * @return {XRWebGLSubImage} */ XRWebGLBinding.prototype.getViewSubImage = function (layer, view) {}; /** * @constructor XRMediaLayerInit */ function XRMediaLayerInit() {} /** * @type {XRSpace} */ XRMediaLayerInit.prototype.space; /** * @type {string} */ XRMediaLayerInit.prototype.layout; /** * @type {boolean} */ XRMediaLayerInit.prototype.invertStereo; /** * @constructor XRMediaQuadLayerInit * @extends {XRMediaLayerInit} */ function XRMediaQuadLayerInit() {} /** * @type {XRRigidTransform} */ XRMediaQuadLayerInit.prototype.transform; /** * @type {number} */ XRMediaQuadLayerInit.prototype.width; /** * @type {number} */ XRMediaQuadLayerInit.prototype.height; /** * @constructor XRMediaCylinderLayerInit * @extends {XRMediaLayerInit} */ function XRMediaCylinderLayerInit() {} /** * @type {XRRigidTransform} */ XRMediaCylinderLayerInit.prototype.transform; /** * @type {number} */ XRMediaCylinderLayerInit.prototype.radius; /** * @type {number} */ XRMediaCylinderLayerInit.prototype.centralAngle; /** * @type {?number} */ XRMediaCylinderLayerInit.prototype.aspectRatio; /** * @constructor XRMediaEquirectLayerInit * @extends {XRMediaLayerInit} */ function XRMediaEquirectLayerInit() {} /** * @type {XRRigidTransform} */ XRMediaEquirectLayerInit.prototype.transform; /** * @type {number} */ XRMediaEquirectLayerInit.prototype.radius; /** * @type {number} */ XRMediaEquirectLayerInit.prototype.centralHorizontalAngle; /** * @type {number} */ XRMediaEquirectLayerInit.prototype.upperVerticalAngle; /** * @type {number} */ XRMediaEquirectLayerInit.prototype.lowerVerticalAngle; /** * @constructor XRMediaBinding * * @param {XRSession} session */ function XRMediaBinding(session) {} /** * @param {HTMLVideoElement} video * @param {XRMediaQuadLayerInit} init * @return {XRQuadLayer} */ XRMediaBinding.prototype.createQuadLayer = function(video, init) {}; /** * @param {HTMLVideoElement} video * @param {XRMediaCylinderLayerInit} init * @return {XRCylinderLayer} */ XRMediaBinding.prototype.createCylinderLayer = function(video, init) {}; /** * @param {HTMLVideoElement} video * @param {XRMediaEquirectLayerInit} init * @return {XREquirectLayer} */ XRMediaBinding.prototype.createEquirectLayer = function(video, init) {}; /** * @type {Array} */ XRRenderState.prototype.layers;