diff --git a/include/Makefile.in b/include/Makefile.in index 19dacb850ed..42f5aa47dcb 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -821,6 +821,7 @@ SOURCES = \ windows.media.idl \ windows.media.speechrecognition.idl \ windows.media.speechsynthesis.idl \ + windows.perception.spatial.idl \ windows.security.credentials.idl \ windows.security.cryptography.idl \ windows.storage.streams.idl \ diff --git a/include/windows.perception.spatial.idl b/include/windows.perception.spatial.idl new file mode 100644 index 00000000000..d19330963f7 --- /dev/null +++ b/include/windows.perception.spatial.idl @@ -0,0 +1,180 @@ +/* + * Copyright (C) 2023 Mohamad Al-Jaf + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifdef __WIDL__ +#pragma winrt ns_prefix +#endif + +import "inspectable.idl"; +import "asyncinfo.idl"; +import "eventtoken.idl"; +import "windowscontracts.idl"; +import "windows.foundation.idl"; +import "windows.foundation.numerics.idl"; +/* import "windows.perception.idl"; */ +import "windows.storage.streams.idl"; +/* import "windows.system.remotesystems.idl"; */ + +namespace Windows.Perception.Spatial { + typedef enum SpatialPerceptionAccessStatus SpatialPerceptionAccessStatus; + typedef struct SpatialBoundingBox SpatialBoundingBox; + typedef struct SpatialBoundingFrustum SpatialBoundingFrustum; + typedef struct SpatialBoundingOrientedBox SpatialBoundingOrientedBox; + typedef struct SpatialBoundingSphere SpatialBoundingSphere; + + interface ISpatialBoundingVolume; + interface ISpatialBoundingVolumeStatics; + interface ISpatialCoordinateSystem; + + runtimeclass SpatialBoundingVolume; + runtimeclass SpatialCoordinateSystem; + + declare { + interface Windows.Foundation.Collections.IIterable; + interface Windows.Foundation.Collections.IIterator; + interface Windows.Foundation.AsyncOperationCompletedHandler; + interface Windows.Foundation.IAsyncOperation; + interface Windows.Foundation.IReference; + interface Windows.Foundation.IReference; + interface Windows.Foundation.IReference; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0) + ] + enum SpatialPerceptionAccessStatus + { + Unspecified = 0, + Allowed = 1, + DeniedByUser = 2, + DeniedBySystem = 3, + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0) + ] + struct SpatialBoundingBox + { + Windows.Foundation.Numerics.Vector3 Center; + Windows.Foundation.Numerics.Vector3 Extents; + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0) + ] + struct SpatialBoundingFrustum + { + Windows.Foundation.Numerics.Plane Near; + Windows.Foundation.Numerics.Plane Far; + Windows.Foundation.Numerics.Plane Right; + Windows.Foundation.Numerics.Plane Left; + Windows.Foundation.Numerics.Plane Top; + Windows.Foundation.Numerics.Plane Bottom; + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0) + ] + struct SpatialBoundingOrientedBox + { + Windows.Foundation.Numerics.Vector3 Center; + Windows.Foundation.Numerics.Vector3 Extents; + Windows.Foundation.Numerics.Quaternion Orientation; + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0) + ] + struct SpatialBoundingSphere + { + Windows.Foundation.Numerics.Vector3 Center; + FLOAT Radius; + }; + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.SpatialBoundingVolume), + uuid(fb2065da-68c3-33df-b7af-4c787207999c) + ] + interface ISpatialBoundingVolume : IInspectable + { + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.SpatialBoundingVolume), + uuid(05889117-b3e1-36d8-b017-566181a5b196) + ] + interface ISpatialBoundingVolumeStatics : IInspectable + { + HRESULT FromBox( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *system, + [in] Windows.Perception.Spatial.SpatialBoundingBox box, + [out, retval] Windows.Perception.Spatial.SpatialBoundingVolume **value + ); + HRESULT FromOrientedBox( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *system, + [in] Windows.Perception.Spatial.SpatialBoundingOrientedBox box, + [out, retval] Windows.Perception.Spatial.SpatialBoundingVolume **value + ); + HRESULT FromSphere( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *system, + [in] Windows.Perception.Spatial.SpatialBoundingSphere sphere, + [out, retval] Windows.Perception.Spatial.SpatialBoundingVolume **value + ); + HRESULT FromFrustum( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *system, + [in] Windows.Perception.Spatial.SpatialBoundingFrustum frustum, + [out, retval] Windows.Perception.Spatial.SpatialBoundingVolume **value + ); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.SpatialCoordinateSystem), + uuid(69ebca4b-60a3-3586-a653-59a7bd676d07) + ] + interface ISpatialCoordinateSystem : IInspectable + { + HRESULT TryGetTransformTo( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *target, + [out, retval] Windows.Foundation.IReference **value + ); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + static(Windows.Perception.Spatial.ISpatialBoundingVolumeStatics, Windows.Foundation.UniversalApiContract, 2.0), + threading(both) + ] + runtimeclass SpatialBoundingVolume + { + [default] interface Windows.Perception.Spatial.ISpatialBoundingVolume; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass SpatialCoordinateSystem + { + [default] interface Windows.Perception.Spatial.ISpatialCoordinateSystem; + } +}