/* * 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; interface Windows.Foundation.Collections.IKeyValuePair; interface Windows.Foundation.Collections.IIterable *>; interface Windows.Foundation.Collections.IIterator *>; interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.TypedEventHandler; } [ 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 **value ); [overload("TryComputeLatestMeshAsync")] HRESULT TryComputeLatestMeshAsync( [in] DOUBLE triangles, [out, retval] Windows.Foundation.IAsyncOperation **value ); [overload("TryComputeLatestMeshAsync")] HRESULT TryComputeLatestMeshWithOptionsAsync( [in] DOUBLE triangles, [in] Windows.Perception.Spatial.Surfaces.SpatialSurfaceMeshOptions *options, [out, retval] Windows.Foundation.IAsyncOperation **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 **value); [propget] HRESULT SupportedTriangleIndexFormats([out, retval] Windows.Foundation.Collections.IVectorView **value); [propget] HRESULT SupportedVertexNormalFormats([out, retval] Windows.Foundation.Collections.IVectorView **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 **value); HRESULT SetBoundingVolume([in] Windows.Perception.Spatial.SpatialBoundingVolume *bounds); HRESULT SetBoundingVolumes([in] Windows.Foundation.Collections.IIterable *bounds); [eventadd] HRESULT ObservedSurfacesChanged( [in] Windows.Foundation.TypedEventHandler *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 **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; } }