From: Mohamad Al-Jaf mohamadaljaf@gmail.com
--- include/Makefile.in | 1 + .../windows.perception.spatial.surfaces.idl | 232 ++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 include/windows.perception.spatial.surfaces.idl
diff --git a/include/Makefile.in b/include/Makefile.in index d4b726d4bad..27360fa5f21 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -823,6 +823,7 @@ SOURCES = \ windows.media.speechrecognition.idl \ windows.media.speechsynthesis.idl \ windows.perception.spatial.idl \ + windows.perception.spatial.surfaces.idl \ windows.security.credentials.idl \ windows.security.cryptography.idl \ windows.storage.streams.idl \ diff --git a/include/windows.perception.spatial.surfaces.idl b/include/windows.perception.spatial.surfaces.idl new file mode 100644 index 00000000000..1e852c8a129 --- /dev/null +++ b/include/windows.perception.spatial.surfaces.idl @@ -0,0 +1,232 @@ +/* + * 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.graphics.directx.idl"; +import "windows.perception.spatial.idl"; +import "windows.storage.streams.idl"; + +namespace Windows.Perception.Spatial.Surfaces { + interface ISpatialSurfaceInfo; + interface ISpatialSurfaceMesh; + interface ISpatialSurfaceMeshBuffer; + interface ISpatialSurfaceMeshOptions; + interface ISpatialSurfaceMeshOptionsStatics; + interface ISpatialSurfaceObserver; + interface ISpatialSurfaceObserverStatics; + interface ISpatialSurfaceObserverStatics2; + + runtimeclass SpatialSurfaceInfo; + runtimeclass SpatialSurfaceMesh; + runtimeclass SpatialSurfaceMeshBuffer; + runtimeclass SpatialSurfaceMeshOptions; + runtimeclass SpatialSurfaceObserver; + + declare { + interface Windows.Foundation.Collections.IMapView<GUID, Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo *>; + interface Windows.Foundation.Collections.IKeyValuePair<GUID, Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo *>; + interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<GUID, Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo *> *>; + interface Windows.Foundation.Collections.IIterator<Windows.Foundation.Collections.IKeyValuePair<GUID, Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo *> *>; + interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh *>; + interface Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh *>; + interface Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.Surfaces.SpatialSurfaceObserver *, IInspectable *>; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo), + uuid(f8e9ebe7-39b7-3962-bb03-57f56e1fb0a1) + ] + interface ISpatialSurfaceInfo : IInspectable + { + [propget] HRESULT Id([out, retval] GUID *value); + [propget] HRESULT UpdateTime([out, retval] Windows.Foundation.DateTime *value); + HRESULT TryGetBounds( + [in] Windows.Perception.Spatial.SpatialCoordinateSystem *system, + [out, retval] Windows.Foundation.IReference<Windows.Perception.Spatial.SpatialBoundingOrientedBox> **value + ); + [overload("TryComputeLatestMeshAsync")] HRESULT TryComputeLatestMeshAsync( + [in] DOUBLE triangles, + [out, retval] Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh *> **value + ); + [overload("TryComputeLatestMeshAsync")] HRESULT TryComputeLatestMeshWithOptionsAsync( + [in] DOUBLE triangles, + [in] Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshOptions *options, + [out, retval] Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh *> **value + ); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceMesh), + uuid(108f57d9-df0d-3950-a0fd-f972c77c27b4) + ] + interface ISpatialSurfaceMesh : IInspectable + { + [propget] HRESULT SurfaceInfo([out, retval] Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo **value); + [propget] HRESULT CoordinateSystem([out, retval] Windows.Perception.Spatial.SpatialCoordinateSystem **value); + [propget] HRESULT TriangleIndices([out, retval] Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshBuffer **value); + [propget] HRESULT VertexPositions([out, retval] Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshBuffer **value); + [propget] HRESULT VertexPositionScale([out, retval] Windows.Foundation.Numerics.Vector3 *value); + [propget] HRESULT VertexNormals([out, retval] Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshBuffer **value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshBuffer), + uuid(93cf59e0-871f-33f8-98b2-03d101458f6f) + ] + interface ISpatialSurfaceMeshBuffer : IInspectable + { + [propget] HRESULT Format([out, retval] Windows.Graphics.DirectX.DirectXPixelFormat *value); + [propget] HRESULT Stride([out, retval] UINT32 *value); + [propget] HRESULT ElementCount([out, retval] UINT32 *value); + [propget] HRESULT Data([out, retval] Windows.Storage.Streams.IBuffer **value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshOptions), + uuid(d2759f89-3572-3d2d-a10d-5fee9394aa37) + ] + interface ISpatialSurfaceMeshOptions : IInspectable + { + [propget] HRESULT VertexPositionFormat([out, retval] Windows.Graphics.DirectX.DirectXPixelFormat *value); + [propput] HRESULT VertexPositionFormat([in] Windows.Graphics.DirectX.DirectXPixelFormat value); + [propget] HRESULT TriangleIndexFormat([out, retval] Windows.Graphics.DirectX.DirectXPixelFormat *value); + [propput] HRESULT TriangleIndexFormat([in] Windows.Graphics.DirectX.DirectXPixelFormat value); + [propget] HRESULT VertexNormalFormat([out, retval] Windows.Graphics.DirectX.DirectXPixelFormat *value); + [propput] HRESULT VertexNormalFormat([in] Windows.Graphics.DirectX.DirectXPixelFormat value); + [propget] HRESULT IncludeVertexNormals([out, retval] boolean *value); + [propput] HRESULT IncludeVertexNormals([in] boolean value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshOptions), + uuid(9b340abf-9781-4505-8935-013575caae5e) + ] + interface ISpatialSurfaceMeshOptionsStatics : IInspectable + { + [propget] HRESULT SupportedVertexPositionFormats([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.DirectX.DirectXPixelFormat> **value); + [propget] HRESULT SupportedTriangleIndexFormats([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.DirectX.DirectXPixelFormat> **value); + [propget] HRESULT SupportedVertexNormalFormats([out, retval] Windows.Foundation.Collections.IVectorView<Windows.Graphics.DirectX.DirectXPixelFormat> **value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceObserver), + uuid(10b69819-ddca-3483-ac3a-748fe8c86df5) + ] + interface ISpatialSurfaceObserver : IInspectable + { + HRESULT GetObservedSurfaces([out, retval] Windows.Foundation.Collections.IMapView<GUID, Windows.Perception.Spatial.Surfaces.SpatialSurfaceInfo *> **value); + HRESULT SetBoundingVolume([in] Windows.Perception.Spatial.SpatialBoundingVolume *bounds); + HRESULT SetBoundingVolumes([in] Windows.Foundation.Collections.IIterable<Windows.Perception.Spatial.SpatialBoundingVolume *> *bounds); + [eventadd] HRESULT ObservedSurfacesChanged( + [in] Windows.Foundation.TypedEventHandler<Windows.Perception.Spatial.Surfaces.SpatialSurfaceObserver *, IInspectable *> *handler, + [out, retval] EventRegistrationToken *token + ); + [eventremove] HRESULT ObservedSurfacesChanged([in] EventRegistrationToken token); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceObserver), + uuid(165951ed-2108-4168-9175-87e027bc9285) + ] + interface ISpatialSurfaceObserverStatics : IInspectable + { + HRESULT RequestAccessAsync([out, retval] Windows.Foundation.IAsyncOperation<Windows.Perception.Spatial.SpatialPerceptionAccessStatus> **result); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 4.0), + exclusiveto(Windows.Perception.Spatial.Surfaces.SpatialSurfaceObserver), + uuid(0f534261-c55d-4e6b-a895-a19de69a42e3) + ] + interface ISpatialSurfaceObserverStatics2 : IInspectable + requires Windows.Perception.Spatial.Surfaces.ISpatialSurfaceObserverStatics + { + HRESULT IsSupported([out, retval] boolean *value); + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass SpatialSurfaceInfo + { + [default] interface Windows.Perception.Spatial.Surfaces.ISpatialSurfaceInfo; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass SpatialSurfaceMesh + { + [default] interface Windows.Perception.Spatial.Surfaces.ISpatialSurfaceMesh; + } + + [ + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + threading(both) + ] + runtimeclass SpatialSurfaceMeshBuffer + { + [default] interface Windows.Perception.Spatial.Surfaces.ISpatialSurfaceMeshBuffer; + } + + [ + activatable(Windows.Foundation.UniversalApiContract, 2.0), + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + static(Windows.Perception.Spatial.Surfaces.ISpatialSurfaceMeshOptionsStatics, Windows.Foundation.UniversalApiContract, 2.0), + threading(both) + ] + runtimeclass SpatialSurfaceMeshOptions + { + [default] interface Windows.Perception.Spatial.Surfaces.ISpatialSurfaceMeshOptions; + } + + [ + activatable(Windows.Foundation.UniversalApiContract, 2.0), + contract(Windows.Foundation.UniversalApiContract, 2.0), + marshaling_behavior(agile), + static(Windows.Perception.Spatial.Surfaces.ISpatialSurfaceObserverStatics, Windows.Foundation.UniversalApiContract, 2.0), + static(Windows.Perception.Spatial.Surfaces.ISpatialSurfaceObserverStatics2, Windows.Foundation.UniversalApiContract, 4.0), + threading(both) + ] + runtimeclass SpatialSurfaceObserver + { + [default] interface Windows.Perception.Spatial.Surfaces.ISpatialSurfaceObserver; + } +}