--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2018 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-WinRT                                                               --
--                                                                            --
-- This program 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 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program 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 program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with Windows.Foundation;
with Windows.Foundation.Collections;
limited with Windows.Graphics.Imaging;
limited with Windows.UI;
--------------------------------------------------------------------------------
package Windows.Devices.Lights.Effects is

   pragma preelaborate;
   
   ------------------------------------------------------------------------
   -- Enums
   ------------------------------------------------------------------------
   
   type LampArrayEffectCompletionBehavior is (
      ClearState,
      KeepState
   );
   for LampArrayEffectCompletionBehavior use (
      ClearState => 0,
      KeepState => 1
   );
   for LampArrayEffectCompletionBehavior'Size use 32;
   
   type LampArrayEffectCompletionBehavior_Ptr is access LampArrayEffectCompletionBehavior;
   
   type LampArrayEffectStartMode is (
      Sequential,
      Simultaneous
   );
   for LampArrayEffectStartMode use (
      Sequential => 0,
      Simultaneous => 1
   );
   for LampArrayEffectStartMode'Size use 32;
   
   type LampArrayEffectStartMode_Ptr is access LampArrayEffectStartMode;
   
   type LampArrayRepetitionMode is (
      Occurrences,
      Forever
   );
   for LampArrayRepetitionMode use (
      Occurrences => 0,
      Forever => 1
   );
   for LampArrayRepetitionMode'Size use 32;
   
   type LampArrayRepetitionMode_Ptr is access LampArrayRepetitionMode;
   
   ------------------------------------------------------------------------
   -- Forward Declaration - Delegates/Events
   ------------------------------------------------------------------------
   
   type TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested_Interface;
   type TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested is access all TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested_Interface'Class;
   type TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested_Ptr is access all TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested;
   type TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested_Interface;
   type TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested is access all TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested_Interface'Class;
   type TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested_Ptr is access all TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested;
   
   ------------------------------------------------------------------------
   -- Forward Declaration - Interfaces
   ------------------------------------------------------------------------
   
   type IIterable_ILampArrayEffect_Interface;
   type IIterable_ILampArrayEffect is access all IIterable_ILampArrayEffect_Interface'Class;
   type IIterable_ILampArrayEffect_Ptr is access all IIterable_ILampArrayEffect;
   type IIterable_ILampArrayEffectPlaylist_Interface;
   type IIterable_ILampArrayEffectPlaylist is access all IIterable_ILampArrayEffectPlaylist_Interface'Class;
   type IIterable_ILampArrayEffectPlaylist_Ptr is access all IIterable_ILampArrayEffectPlaylist;
   type IIterator_ILampArrayEffectPlaylist_Interface;
   type IIterator_ILampArrayEffectPlaylist is access all IIterator_ILampArrayEffectPlaylist_Interface'Class;
   type IIterator_ILampArrayEffectPlaylist_Ptr is access all IIterator_ILampArrayEffectPlaylist;
   type ILampArrayBitmapEffect_Interface;
   type ILampArrayBitmapEffect is access all ILampArrayBitmapEffect_Interface'Class;
   type ILampArrayBitmapEffect_Ptr is access all ILampArrayBitmapEffect;
   type ILampArrayBitmapEffectFactory_Interface;
   type ILampArrayBitmapEffectFactory is access all ILampArrayBitmapEffectFactory_Interface'Class;
   type ILampArrayBitmapEffectFactory_Ptr is access all ILampArrayBitmapEffectFactory;
   type ILampArrayBitmapRequestedEventArgs_Interface;
   type ILampArrayBitmapRequestedEventArgs is access all ILampArrayBitmapRequestedEventArgs_Interface'Class;
   type ILampArrayBitmapRequestedEventArgs_Ptr is access all ILampArrayBitmapRequestedEventArgs;
   type ILampArrayBlinkEffect_Interface;
   type ILampArrayBlinkEffect is access all ILampArrayBlinkEffect_Interface'Class;
   type ILampArrayBlinkEffect_Ptr is access all ILampArrayBlinkEffect;
   type ILampArrayBlinkEffectFactory_Interface;
   type ILampArrayBlinkEffectFactory is access all ILampArrayBlinkEffectFactory_Interface'Class;
   type ILampArrayBlinkEffectFactory_Ptr is access all ILampArrayBlinkEffectFactory;
   type ILampArrayColorRampEffect_Interface;
   type ILampArrayColorRampEffect is access all ILampArrayColorRampEffect_Interface'Class;
   type ILampArrayColorRampEffect_Ptr is access all ILampArrayColorRampEffect;
   type ILampArrayColorRampEffectFactory_Interface;
   type ILampArrayColorRampEffectFactory is access all ILampArrayColorRampEffectFactory_Interface'Class;
   type ILampArrayColorRampEffectFactory_Ptr is access all ILampArrayColorRampEffectFactory;
   type ILampArrayCustomEffect_Interface;
   type ILampArrayCustomEffect is access all ILampArrayCustomEffect_Interface'Class;
   type ILampArrayCustomEffect_Ptr is access all ILampArrayCustomEffect;
   type ILampArrayCustomEffectFactory_Interface;
   type ILampArrayCustomEffectFactory is access all ILampArrayCustomEffectFactory_Interface'Class;
   type ILampArrayCustomEffectFactory_Ptr is access all ILampArrayCustomEffectFactory;
   type ILampArrayEffect_Interface;
   type ILampArrayEffect is access all ILampArrayEffect_Interface'Class;
   type ILampArrayEffect_Ptr is access all ILampArrayEffect;
   type ILampArrayEffectPlaylist_Interface;
   type ILampArrayEffectPlaylist is access all ILampArrayEffectPlaylist_Interface'Class;
   type ILampArrayEffectPlaylist_Ptr is access all ILampArrayEffectPlaylist;
   type ILampArrayEffectPlaylistStatics_Interface;
   type ILampArrayEffectPlaylistStatics is access all ILampArrayEffectPlaylistStatics_Interface'Class;
   type ILampArrayEffectPlaylistStatics_Ptr is access all ILampArrayEffectPlaylistStatics;
   type ILampArraySolidEffect_Interface;
   type ILampArraySolidEffect is access all ILampArraySolidEffect_Interface'Class;
   type ILampArraySolidEffect_Ptr is access all ILampArraySolidEffect;
   type ILampArraySolidEffectFactory_Interface;
   type ILampArraySolidEffectFactory is access all ILampArraySolidEffectFactory_Interface'Class;
   type ILampArraySolidEffectFactory_Ptr is access all ILampArraySolidEffectFactory;
   type ILampArrayUpdateRequestedEventArgs_Interface;
   type ILampArrayUpdateRequestedEventArgs is access all ILampArrayUpdateRequestedEventArgs_Interface'Class;
   type ILampArrayUpdateRequestedEventArgs_Ptr is access all ILampArrayUpdateRequestedEventArgs;
   type IVectorView_ILampArrayEffect_Interface;
   type IVectorView_ILampArrayEffect is access all IVectorView_ILampArrayEffect_Interface'Class;
   type IVectorView_ILampArrayEffect_Ptr is access all IVectorView_ILampArrayEffect;
   
   ------------------------------------------------------------------------
   -- Interfaces
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   
   IID_IIterable_ILampArrayEffect : aliased constant Windows.IID := (0, 0, 0, (0, 0, 0, 0, 0, 0, 0, 0 ));
   
   type IIterable_ILampArrayEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function First
   (
      This       : access IIterable_ILampArrayEffect_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterable_ILampArrayEffectPlaylist : aliased constant Windows.IID := (588557530, 50655, 20561, (151, 125, 148, 215, 157, 19, 18, 251 ));
   
   type IIterable_ILampArrayEffectPlaylist_Interface is interface and Windows.IInspectable_Interface;
   
   function First
   (
      This       : access IIterable_ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.IIterator_ILampArrayEffectPlaylist
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IIterator_ILampArrayEffectPlaylist : aliased constant Windows.IID := (715832258, 19480, 23836, (158, 9, 193, 36, 158, 180, 104, 23 ));
   
   type IIterator_ILampArrayEffectPlaylist_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Current
   (
      This       : access IIterator_ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayEffectPlaylist
   )
   return Windows.HRESULT is abstract;
   
   function get_HasCurrent
   (
      This       : access IIterator_ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function MoveNext
   (
      This       : access IIterator_ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IIterator_ILampArrayEffectPlaylist_Interface
      ; items : Windows.Devices.Lights.Effects.ILampArrayEffectPlaylist_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayBitmapEffect : aliased constant Windows.IID := (842588261, 55415, 17959, (137, 229, 42, 136, 247, 5, 47, 166 ));
   
   type ILampArrayBitmapEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Duration
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_Duration
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_StartDelay
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_StartDelay
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_UpdateInterval
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_UpdateInterval
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_SuggestedBitmapSize
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; RetVal : access Windows.Foundation.Size
   )
   return Windows.HRESULT is abstract;
   
   function add_BitmapRequested
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; handler : TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_BitmapRequested
   (
      This       : access ILampArrayBitmapEffect_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayBitmapEffectFactory : aliased constant Windows.IID := (325091472, 58166, 19599, (144, 83, 169, 36, 7, 202, 123, 29 ));
   
   type ILampArrayBitmapEffectFactory_Interface is interface and Windows.IInspectable_Interface;
   
   function CreateInstance
   (
      This       : access ILampArrayBitmapEffectFactory_Interface
      ; lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayBitmapEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayBitmapRequestedEventArgs : aliased constant Windows.IID := (3367284638, 65123, 19793, (186, 189, 97, 157, 239, 180, 84, 186 ));
   
   type ILampArrayBitmapRequestedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   function get_SinceStarted
   (
      This       : access ILampArrayBitmapRequestedEventArgs_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function UpdateBitmap
   (
      This       : access ILampArrayBitmapRequestedEventArgs_Interface
      ; bitmap : Windows.Graphics.Imaging.ISoftwareBitmap
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayBlinkEffect : aliased constant Windows.IID := (3955176950, 12229, 19379, (179, 195, 98, 33, 167, 104, 13, 19 ));
   
   type ILampArrayBlinkEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Color
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function put_Color
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function get_AttackDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_AttackDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_SustainDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_SustainDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_DecayDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_DecayDuration
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_RepetitionDelay
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_RepetitionDelay
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_StartDelay
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_StartDelay
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_Occurrences
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function put_Occurrences
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_RepetitionMode
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.LampArrayRepetitionMode
   )
   return Windows.HRESULT is abstract;
   
   function put_RepetitionMode
   (
      This       : access ILampArrayBlinkEffect_Interface
      ; value : Windows.Devices.Lights.Effects.LampArrayRepetitionMode
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayBlinkEffectFactory : aliased constant Windows.IID := (2275351959, 40784, 18866, (165, 111, 1, 58, 160, 141, 85, 224 ));
   
   type ILampArrayBlinkEffectFactory_Interface is interface and Windows.IInspectable_Interface;
   
   function CreateInstance
   (
      This       : access ILampArrayBlinkEffectFactory_Interface
      ; lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayBlinkEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayColorRampEffect : aliased constant Windows.IID := (721437751, 16551, 17198, (160, 185, 13, 87, 12, 33, 83, 255 ));
   
   type ILampArrayColorRampEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Color
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; RetVal : access Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function put_Color
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; value : Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function get_RampDuration
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_RampDuration
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_StartDelay
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_StartDelay
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_CompletionBehavior
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior
   )
   return Windows.HRESULT is abstract;
   
   function put_CompletionBehavior
   (
      This       : access ILampArrayColorRampEffect_Interface
      ; value : Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayColorRampEffectFactory : aliased constant Windows.IID := (1376506163, 3188, 19957, (190, 167, 72, 153, 224, 38, 107, 15 ));
   
   type ILampArrayColorRampEffectFactory_Interface is interface and Windows.IInspectable_Interface;
   
   function CreateInstance
   (
      This       : access ILampArrayColorRampEffectFactory_Interface
      ; lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayColorRampEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayCustomEffect : aliased constant Windows.IID := (3965161840, 15412, 18550, (129, 139, 87, 101, 247, 139, 14, 228 ));
   
   type ILampArrayCustomEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Duration
   (
      This       : access ILampArrayCustomEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_Duration
   (
      This       : access ILampArrayCustomEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_UpdateInterval
   (
      This       : access ILampArrayCustomEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_UpdateInterval
   (
      This       : access ILampArrayCustomEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function add_UpdateRequested
   (
      This       : access ILampArrayCustomEffect_Interface
      ; handler : TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested
      ; RetVal : access Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   function remove_UpdateRequested
   (
      This       : access ILampArrayCustomEffect_Interface
      ; token : Windows.Foundation.EventRegistrationToken
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayCustomEffectFactory : aliased constant Windows.IID := (1756657485, 25573, 19184, (165, 139, 62, 83, 91, 148, 232, 201 ));
   
   type ILampArrayCustomEffectFactory_Interface is interface and Windows.IInspectable_Interface;
   
   function CreateInstance
   (
      This       : access ILampArrayCustomEffectFactory_Interface
      ; lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayCustomEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayEffect : aliased constant Windows.IID := (299128208, 22523, 17734, (177, 206, 134, 49, 7, 247, 64, 223 ));
   
   type ILampArrayEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_ZIndex
   (
      This       : access ILampArrayEffect_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function put_ZIndex
   (
      This       : access ILampArrayEffect_Interface
      ; value : Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayEffectPlaylist : aliased constant Windows.IID := (2112195582, 28513, 16643, (152, 199, 214, 99, 47, 123, 145, 105 ));
   
   type ILampArrayEffectPlaylist_Interface is interface and Windows.IInspectable_Interface;
   
   function Append
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; effect : Windows.Devices.Lights.Effects.ILampArrayEffect
   )
   return Windows.HRESULT is abstract;
   
   function OverrideZIndex
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; zIndex : Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function Start
   (
      This       : access ILampArrayEffectPlaylist_Interface
   )
   return Windows.HRESULT is abstract;
   
   function Stop
   (
      This       : access ILampArrayEffectPlaylist_Interface
   )
   return Windows.HRESULT is abstract;
   
   function Pause
   (
      This       : access ILampArrayEffectPlaylist_Interface
   )
   return Windows.HRESULT is abstract;
   
   function get_EffectStartMode
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.LampArrayEffectStartMode
   )
   return Windows.HRESULT is abstract;
   
   function put_EffectStartMode
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; value : Windows.Devices.Lights.Effects.LampArrayEffectStartMode
   )
   return Windows.HRESULT is abstract;
   
   function get_Occurrences
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function put_Occurrences
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; value : Windows.Int32
   )
   return Windows.HRESULT is abstract;
   
   function get_RepetitionMode
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.LampArrayRepetitionMode
   )
   return Windows.HRESULT is abstract;
   
   function put_RepetitionMode
   (
      This       : access ILampArrayEffectPlaylist_Interface
      ; value : Windows.Devices.Lights.Effects.LampArrayRepetitionMode
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayEffectPlaylistStatics : aliased constant Windows.IID := (4212466524, 59957, 19583, (160, 22, 243, 191, 198, 166, 196, 125 ));
   
   type ILampArrayEffectPlaylistStatics_Interface is interface and Windows.IInspectable_Interface;
   
   function StartAll
   (
      This       : access ILampArrayEffectPlaylistStatics_Interface
      ; value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   return Windows.HRESULT is abstract;
   
   function StopAll
   (
      This       : access ILampArrayEffectPlaylistStatics_Interface
      ; value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   return Windows.HRESULT is abstract;
   
   function PauseAll
   (
      This       : access ILampArrayEffectPlaylistStatics_Interface
      ; value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArraySolidEffect : aliased constant Windows.IID := (1142915603, 17356, 19251, (128, 235, 198, 221, 222, 125, 200, 237 ));
   
   type ILampArraySolidEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function get_Color
   (
      This       : access ILampArraySolidEffect_Interface
      ; RetVal : access Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function put_Color
   (
      This       : access ILampArraySolidEffect_Interface
      ; value : Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function get_Duration
   (
      This       : access ILampArraySolidEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_Duration
   (
      This       : access ILampArraySolidEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_StartDelay
   (
      This       : access ILampArraySolidEffect_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function put_StartDelay
   (
      This       : access ILampArraySolidEffect_Interface
      ; value : Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function get_CompletionBehavior
   (
      This       : access ILampArraySolidEffect_Interface
      ; RetVal : access Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior
   )
   return Windows.HRESULT is abstract;
   
   function put_CompletionBehavior
   (
      This       : access ILampArraySolidEffect_Interface
      ; value : Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArraySolidEffectFactory : aliased constant Windows.IID := (4167213868, 21878, 17217, (150, 27, 174, 225, 241, 60, 249, 221 ));
   
   type ILampArraySolidEffectFactory_Interface is interface and Windows.IInspectable_Interface;
   
   function CreateInstance
   (
      This       : access ILampArraySolidEffectFactory_Interface
      ; lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArraySolidEffect
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_ILampArrayUpdateRequestedEventArgs : aliased constant Windows.IID := (1935019370, 22378, 18607, (133, 57, 103, 255, 160, 171, 53, 22 ));
   
   type ILampArrayUpdateRequestedEventArgs_Interface is interface and Windows.IInspectable_Interface;
   
   function get_SinceStarted
   (
      This       : access ILampArrayUpdateRequestedEventArgs_Interface
      ; RetVal : access Windows.Foundation.TimeSpan
   )
   return Windows.HRESULT is abstract;
   
   function SetColor
   (
      This       : access ILampArrayUpdateRequestedEventArgs_Interface
      ; desiredColor : Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function SetColorForIndex
   (
      This       : access ILampArrayUpdateRequestedEventArgs_Interface
      ; lampIndex : Windows.Int32
      ; desiredColor : Windows.UI.Color
   )
   return Windows.HRESULT is abstract;
   
   function SetSingleColorForIndices
   (
      This       : access ILampArrayUpdateRequestedEventArgs_Interface
      ; desiredColor : Windows.UI.Color
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.HRESULT is abstract;
   
   function SetColorsForIndices
   (
      This       : access ILampArrayUpdateRequestedEventArgs_Interface
      ; desiredColors : Windows.UI.Color_Ptr
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   
   IID_IVectorView_ILampArrayEffect : aliased constant Windows.IID := (0, 0, 0, (0, 0, 0, 0, 0, 0, 0, 0 ));
   
   type IVectorView_ILampArrayEffect_Interface is interface and Windows.IInspectable_Interface;
   
   function GetAt
   (
      This       : access IVectorView_ILampArrayEffect_Interface
      ; index : Windows.UInt32
      ; RetVal : access Windows.Devices.Lights.Effects.ILampArrayEffect
   )
   return Windows.HRESULT is abstract;
   
   function get_Size
   (
      This       : access IVectorView_ILampArrayEffect_Interface
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   function IndexOf
   (
      This       : access IVectorView_ILampArrayEffect_Interface
      ; value : Windows.Devices.Lights.Effects.ILampArrayEffect
      ; index : access Windows.UInt32
      ; RetVal : access Windows.Boolean
   )
   return Windows.HRESULT is abstract;
   
   function GetMany
   (
      This       : access IVectorView_ILampArrayEffect_Interface
      ; startIndex : Windows.UInt32
      ; items : Windows.Devices.Lights.Effects.ILampArrayEffect_Ptr
      ; RetVal : access Windows.UInt32
   )
   return Windows.HRESULT is abstract;
   
   ------------------------------------------------------------------------
   -- Delegates/Events
   ------------------------------------------------------------------------
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested : aliased constant Windows.IID := (615874955, 17550, 21498, (171, 76, 102, 48, 8, 197, 212, 207 ));
   
   type TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested_Interface(Callback : access procedure (sender : Windows.Devices.Lights.Effects.ILampArrayBitmapEffect ; args : Windows.Devices.Lights.Effects.ILampArrayBitmapRequestedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_ILampArrayBitmapEffect_add_BitmapRequested_Interface
      ; sender : Windows.Devices.Lights.Effects.ILampArrayBitmapEffect
      ; args : Windows.Devices.Lights.Effects.ILampArrayBitmapRequestedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   
   IID_TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested : aliased constant Windows.IID := (2106699630, 47684, 23055, (188, 100, 57, 1, 253, 51, 102, 28 ));
   
   type TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested_Interface(Callback : access procedure (sender : Windows.Devices.Lights.Effects.ILampArrayCustomEffect ; args : Windows.Devices.Lights.Effects.ILampArrayUpdateRequestedEventArgs)) is new Windows.IMulticastDelegate_Interface(IID_TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested'access) with null record;
   function Invoke
   (
      This       : access TypedEventHandler_ILampArrayCustomEffect_add_UpdateRequested_Interface
      ; sender : Windows.Devices.Lights.Effects.ILampArrayCustomEffect
      ; args : Windows.Devices.Lights.Effects.ILampArrayUpdateRequestedEventArgs
   )
   return Windows.HRESULT;
   
   ------------------------------------------------------------------------
   -- Classes
   ------------------------------------------------------------------------
   
   subtype LampArrayBitmapEffect is Windows.Devices.Lights.Effects.ILampArrayBitmapEffect;
   function CreateInstance
   (
      lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.Devices.Lights.Effects.ILampArrayBitmapEffect;
   
   subtype LampArrayBitmapRequestedEventArgs is Windows.Devices.Lights.Effects.ILampArrayBitmapRequestedEventArgs;
   subtype LampArrayBlinkEffect is Windows.Devices.Lights.Effects.ILampArrayBlinkEffect;
   function CreateInstance
   (
      lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.Devices.Lights.Effects.ILampArrayBlinkEffect;
   
   subtype LampArrayColorRampEffect is Windows.Devices.Lights.Effects.ILampArrayColorRampEffect;
   function CreateInstance
   (
      lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.Devices.Lights.Effects.ILampArrayColorRampEffect;
   
   subtype LampArrayCustomEffect is Windows.Devices.Lights.Effects.ILampArrayCustomEffect;
   function CreateInstance
   (
      lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.Devices.Lights.Effects.ILampArrayCustomEffect;
   
   subtype LampArrayEffectPlaylist is Windows.Devices.Lights.Effects.ILampArrayEffectPlaylist;
   function Create return Windows.Devices.Lights.Effects.ILampArrayEffectPlaylist;
   
   subtype LampArraySolidEffect is Windows.Devices.Lights.Effects.ILampArraySolidEffect;
   function CreateInstance
   (
      lampArray : Windows.Devices.Lights.ILampArray
      ; lampIndexes : Windows.Int32_Ptr
   )
   return Windows.Devices.Lights.Effects.ILampArraySolidEffect;
   
   subtype LampArrayUpdateRequestedEventArgs is Windows.Devices.Lights.Effects.ILampArrayUpdateRequestedEventArgs;
   
   ------------------------------------------------------------------------
   -- Static Procedures/functions
   ------------------------------------------------------------------------
   
   procedure PauseAll
   (
      value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   ;
   
   procedure StartAll
   (
      value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   ;
   
   procedure StopAll
   (
      value : Windows.Devices.Lights.Effects.IIterable_ILampArrayEffectPlaylist
   )
   ;
   
end;
