blob: 384a65292b0d2dd9270cb6d57edb5927c4041c3b [file] [log] [blame]
/*
* Copyright (C) 2020 Igalia S.L. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*/
// This represents the native resolution of the device, but may not reflect the viewport exposed to the page.
// https://immersive-web.github.io/webxr/#xrviewport
[
EnabledAtRuntime=WebXR,
Conditional=WEBXR,
] dictionary FakeXRDeviceResolution {
required long width;
required long height;
};
// A set of 4 angles which describe the view from a center point, units are degrees.
[
EnabledAtRuntime=WebXR,
Conditional=WEBXR,
] dictionary FakeXRFieldOfViewInit {
required float upDegrees;
required float downDegrees;
required float leftDegrees;
required float rightDegrees;
};
// https://immersive-web.github.io/webxr/#xrview
[
EnabledAtRuntime=WebXR,
Conditional=WEBXR,
] dictionary FakeXRViewInit {
required XREye eye;
// https://immersive-web.github.io/webxr/#view-projection-matrix
required sequence<float> projectionMatrix;
// https://immersive-web.github.io/webxr/#dom-xrwebgllayer-getviewport
required FakeXRDeviceResolution resolution;
// https://immersive-web.github.io/webxr/#view-offset
// This is the origin of the view in the viewer space. In other words, this is
// a transform from the view space to the viewer space.
required FakeXRRigidTransformInit viewOffset;
// This is an optional means of specifying a decomposed form of the projection
// matrix. If specified, the projectionMatrix should be ignored.
// Any test that wishes to test clip planes or similar features that would require
// decomposing/recomposing the projectionMatrix should use this instead of
// the projection matrix.
FakeXRFieldOfViewInit fieldOfView;
};