/* * Copyright 2023 Fabian Maurer * * 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 #ifndef DO_NO_IMPORTS import "inspectable.idl"; import "asyncinfo.idl"; import "eventtoken.idl"; import "windowscontracts.idl"; import "windows.foundation.idl"; #endif namespace Windows.Devices.Geolocation { typedef enum PositionAccuracy PositionAccuracy; typedef enum PositionStatus PositionStatus; interface IGeolocator; interface IGeoposition; interface IGeocoordinate; interface IPositionChangedEventArgs; interface IStatusChangedEventArgs; interface ICivicAddress; runtimeclass Geolocator; runtimeclass Geoposition; runtimeclass Geocoordinate; runtimeclass PositionChangedEventArgs; runtimeclass StatusChangedEventArgs; runtimeclass CivicAddress; declare { interface Windows.Foundation.AsyncOperationCompletedHandler; interface Windows.Foundation.IAsyncOperation; interface Windows.Foundation.TypedEventHandler; interface Windows.Foundation.TypedEventHandler; } [contract(Windows.Foundation.UniversalApiContract, 1.0)] enum PositionAccuracy { Default = 0, High = 1, }; [contract(Windows.Foundation.UniversalApiContract, 1.0)] enum PositionStatus { Ready = 0, Initializing = 1, NoData = 2, Disabled = 3, NotInitialized = 4, NotAvailable = 5, }; /* Interfaces */ [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.Geolocator), uuid(a9c3bf62-4524-4989-8aa9-de019d2e551f) ] interface IGeolocator : IInspectable { [propget] HRESULT DesiredAccuracy([out, retval] Windows.Devices.Geolocation.PositionAccuracy *value); [propput] HRESULT DesiredAccuracy([in] Windows.Devices.Geolocation.PositionAccuracy value); [propget] HRESULT MovementThreshold([out, retval] DOUBLE *value); [propput] HRESULT MovementThreshold([in] DOUBLE value); [propget] HRESULT ReportInterval([out, retval] UINT32 *value); [propput] HRESULT ReportInterval([in] UINT32 value); [propget] HRESULT LocationStatus([out, retval] Windows.Devices.Geolocation.PositionStatus *value); [overload("GetGeopositionAsync")] HRESULT GetGeopositionAsync([out, retval] Windows.Foundation.IAsyncOperation **value); [overload("GetGeopositionAsync")] HRESULT GetGeopositionAsyncWithAgeAndTimeout([in] Windows.Foundation.TimeSpan maximum_age, [in] Windows.Foundation.TimeSpan timeout, [out, retval] Windows.Foundation.IAsyncOperation **value); [eventadd] HRESULT PositionChanged([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT PositionChanged([in] EventRegistrationToken token); [eventadd] HRESULT StatusChanged([in] Windows.Foundation.TypedEventHandler *handler, [out, retval] EventRegistrationToken *token); [eventremove] HRESULT StatusChanged([in] EventRegistrationToken token); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.Geoposition), uuid(c18d0454-7d41-4ff7-a957-9dffb4ef7f5b) ] interface IGeoposition : IInspectable { [propget] HRESULT Coordinate([out, retval] Windows.Devices.Geolocation.Geocoordinate **value); [propget] HRESULT CivicAddress([out, retval] Windows.Devices.Geolocation.CivicAddress **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.Geocoordinate), uuid(ee21a3aa-976a-ac70-803d-083ea55bcbc4) ] interface IGeocoordinate : IInspectable { [deprecated("Use Point.Position.Latitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Latitude([out, retval] DOUBLE *value); [deprecated("Use Point.Position.Longitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Longitude([out, retval] DOUBLE *value); [deprecated("Use Point.Position.Altitude", deprecate, Windows.Foundation.UniversalApiContract, 1.0)] [propget] HRESULT Altitude([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT Accuracy([out, retval] DOUBLE *value); [propget] HRESULT AltitudeAccuracy([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT Heading([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT Speed([out, retval] Windows.Foundation.IReference **value); [propget] HRESULT Timestamp([out, retval] Windows.Foundation.DateTime *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.PositionChangedEventArgs), uuid(37859ce5-9d1e-46c5-bf3b-6ad8cac1a093) ] interface IPositionChangedEventArgs : IInspectable { [propget] HRESULT Position([out, retval] Windows.Devices.Geolocation.Geoposition **value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.StatusChangedEventArgs), uuid(3453d2da-8c93-4111-a205-9aecfc9be5c0) ] interface IStatusChangedEventArgs : IInspectable { [propget] HRESULT Status([out, retval] Windows.Devices.Geolocation.PositionStatus *value); } [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Devices.Geolocation.CivicAddress), uuid(a8567a1a-64f4-4d48-bcea-f6b008eca34c) ] interface ICivicAddress : IInspectable { [propget] HRESULT Country([out, retval] HSTRING *value); [propget] HRESULT State([out, retval] HSTRING *value); [propget] HRESULT City([out, retval] HSTRING *value); [propget] HRESULT PostalCode([out, retval] HSTRING *value); [propget] HRESULT Timestamp([out, retval] Windows.Foundation.DateTime *value); } /* Runtime Classes */ [ activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), threading(both) ] runtimeclass Geolocator { [default] interface Windows.Devices.Geolocation.IGeolocator; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile) ] runtimeclass Geoposition { [default] interface Windows.Devices.Geolocation.IGeoposition; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile) ] runtimeclass Geocoordinate { [default] interface Windows.Devices.Geolocation.IGeocoordinate; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile) ] runtimeclass PositionChangedEventArgs { [default] interface Windows.Devices.Geolocation.IPositionChangedEventArgs; } [ marshaling_behavior(agile) ] runtimeclass StatusChangedEventArgs { [default] interface Windows.Devices.Geolocation.IStatusChangedEventArgs; } [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile) ] runtimeclass CivicAddress { [default] interface Windows.Devices.Geolocation.ICivicAddress; } }