| /* | 
 |  * 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.system.idl"; | 
 | import "windows.ui.idl"; | 
 | /* import "windows.ui.composition.idl"; */ | 
 | /* import "windows.ui.input.idl"; */ | 
 | /* import "windows.ui.input.inking.idl"; */ | 
 | /* import "windows.ui.input.inking.core.idl"; */ | 
 | /* import "windows.ui.popups.idl"; */ | 
 |  | 
 | namespace Windows.UI.Core { | 
 |     typedef enum CoreDispatcherPriority CoreDispatcherPriority; | 
 |     typedef enum CoreProcessEventsOption CoreProcessEventsOption; | 
 |  | 
 |     interface ICoreAcceleratorKeys; | 
 |     interface ICoreDispatcher; | 
 |     interface ICoreDispatcher2; | 
 |     interface ICoreDispatcherWithTaskPriority; | 
 |     interface IIdleDispatchedHandlerArgs; | 
 |  | 
 |     runtimeclass AcceleratorKeyEventArgs; | 
 |     runtimeclass CoreDispatcher; | 
 |     runtimeclass IdleDispatchedHandlerArgs; | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0) | 
 |     ] | 
 |     enum CoreDispatcherPriority | 
 |     { | 
 |         [contract(Windows.Foundation.UniversalApiContract, 1.0)] | 
 |         Idle   = -2, | 
 |         Low    = -1, | 
 |         Normal =  0, | 
 |         High   =  1, | 
 |     }; | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0) | 
 |     ] | 
 |     enum CoreProcessEventsOption | 
 |     { | 
 |         ProcessOneAndAllPending = 0, | 
 |         ProcessOneIfPresent     = 1, | 
 |         ProcessUntilQuit        = 2, | 
 |         ProcessAllIfPresent     = 3, | 
 |     }; | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         uuid(d1f276c4-98d8-4636-bf49-eb79507548e9) | 
 |     ] | 
 |     delegate HRESULT DispatchedHandler(); | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         uuid(a42b0c24-7f21-4abc-99c1-8f01007f0880) | 
 |     ] | 
 |     delegate HRESULT IdleDispatchedHandler([in] Windows.UI.Core.IdleDispatchedHandlerArgs *e); | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         exclusiveto(Windows.UI.Core.CoreDispatcher), | 
 |         uuid(60db2fa8-b705-4fde-a7d6-ebbb1891d39e) | 
 |     ] | 
 |     interface ICoreDispatcher : IInspectable | 
 |         requires Windows.UI.Core.ICoreAcceleratorKeys | 
 |     { | 
 |         [propget] HRESULT HasThreadAccess([out, retval] boolean *value); | 
 |         HRESULT ProcessEvents([in] Windows.UI.Core.CoreProcessEventsOption options); | 
 |         HRESULT RunAsync([in] Windows.UI.Core.CoreDispatcherPriority priority, [in] Windows.UI.Core.DispatchedHandler *callback, | 
 |                          [out, retval] Windows.Foundation.IAsyncAction **action); | 
 |         HRESULT RunIdleAsync([in] Windows.UI.Core.IdleDispatchedHandler *callback, [out, retval] Windows.Foundation.IAsyncAction **action); | 
 |     } | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         exclusiveto(Windows.UI.Core.IdleDispatchedHandlerArgs), | 
 |         uuid(98bb6a24-dc1c-43cb-b4ed-d1c0eb2391f3) | 
 |     ] | 
 |     interface IIdleDispatchedHandlerArgs : IInspectable | 
 |     { | 
 |         [propget] HRESULT IsDispatcherIdle([out, retval] boolean *value); | 
 |     } | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         marshaling_behavior(agile) | 
 |     ] | 
 |     runtimeclass CoreDispatcher | 
 |     { | 
 |         [default] interface Windows.UI.Core.ICoreDispatcher; | 
 |         interface Windows.UI.Core.ICoreAcceleratorKeys; | 
 |         [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.UI.Core.ICoreDispatcherWithTaskPriority; | 
 |         [contract(Windows.Foundation.UniversalApiContract, 1.0)] interface Windows.UI.Core.ICoreDispatcher2; | 
 |     } | 
 |  | 
 |     [ | 
 |         contract(Windows.Foundation.UniversalApiContract, 1.0), | 
 |         marshaling_behavior(standard) | 
 |     ] | 
 |     runtimeclass IdleDispatchedHandlerArgs | 
 |     { | 
 |         [default] interface Windows.UI.Core.IIdleDispatchedHandlerArgs; | 
 |     } | 
 | } |