//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Devices.Lights.idl";
import "Windows.Graphics.Imaging.idl";
import "Windows.UI.idl";

// Forward Declare
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            runtimeclass LampArray;
        }
    }
}
namespace Windows
{
    namespace Foundation
    {
        typedef struct Size Size;

        typedef struct TimeSpan TimeSpan;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace Graphics
    {
        namespace Imaging
        {
            runtimeclass SoftwareBitmap;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        typedef struct Color Color;
    }
}
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            namespace Effects
            {
                typedef enum LampArrayEffectCompletionBehavior LampArrayEffectCompletionBehavior;

                typedef enum LampArrayEffectStartMode LampArrayEffectStartMode;

                typedef enum LampArrayRepetitionMode LampArrayRepetitionMode;

                interface ILampArrayBitmapEffect;

                interface ILampArrayBitmapEffectFactory;

                interface ILampArrayBitmapRequestedEventArgs;

                interface ILampArrayBlinkEffect;

                interface ILampArrayBlinkEffectFactory;

                interface ILampArrayColorRampEffect;

                interface ILampArrayColorRampEffectFactory;

                interface ILampArrayCustomEffect;

                interface ILampArrayCustomEffectFactory;

                interface ILampArrayEffect;

                interface ILampArrayEffectPlaylist;

                interface ILampArrayEffectPlaylistStatics;

                interface ILampArraySolidEffect;

                interface ILampArraySolidEffectFactory;

                interface ILampArrayUpdateRequestedEventArgs;

                runtimeclass LampArrayBitmapEffect;

                runtimeclass LampArrayBitmapRequestedEventArgs;

                runtimeclass LampArrayBlinkEffect;

                runtimeclass LampArrayColorRampEffect;

                runtimeclass LampArrayCustomEffect;

                runtimeclass LampArrayEffectPlaylist;

                runtimeclass LampArraySolidEffect;

                runtimeclass LampArrayUpdateRequestedEventArgs;
            }
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            namespace Effects
            {
                declare
                {
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.ILampArrayEffect*>;

                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Lights.Effects.ILampArrayEffect*>;

                    interface Windows.Foundation.Collections.IIterator<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist*>;

                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Lights.Effects.ILampArrayEffect*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Effects.LampArrayBitmapEffect*, Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs*>;

                    interface Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Effects.LampArrayCustomEffect*, Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs*>;
                }
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Devices
    {
        namespace Lights
        {
            namespace Effects
            {
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum LampArrayEffectCompletionBehavior
                {
                    ClearState = 0,
                    KeepState  = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum LampArrayEffectStartMode
                {
                    Sequential   = 0,
                    Simultaneous = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                enum LampArrayRepetitionMode
                {
                    Occurrences = 0,
                    Forever     = 1
                };

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayBitmapEffect)]
                [uuid(3238E065-D877-4627-89E5-2A88F7052FA6)]
                interface ILampArrayBitmapEffect : IInspectable
                {
                    [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT Duration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT StartDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT StartDelay([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT UpdateInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT UpdateInterval([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT SuggestedBitmapSize([out] [retval] Windows.Foundation.Size* value);
                    [eventadd] HRESULT BitmapRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Effects.LampArrayBitmapEffect*, Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT BitmapRequested([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayBitmapEffect)]
                [uuid(13608090-E336-4C8F-9053-A92407CA7B1D)]
                interface ILampArrayBitmapEffectFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.Devices.Lights.LampArray* lampArray, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes, [out] [retval] Windows.Devices.Lights.Effects.LampArrayBitmapEffect** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayBitmapRequestedEventArgs)]
                [uuid(C8B4AF9E-FE63-4D51-BABD-619DEFB454BA)]
                interface ILampArrayBitmapRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT SinceStarted([out] [retval] Windows.Foundation.TimeSpan* value);
                    HRESULT UpdateBitmap([in] Windows.Graphics.Imaging.SoftwareBitmap* bitmap);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayBlinkEffect)]
                [uuid(EBBF35F6-2FC5-4BB3-B3C3-6221A7680D13)]
                interface ILampArrayBlinkEffect : IInspectable
                {
                    [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                    [propput] HRESULT Color([in] Windows.UI.Color value);
                    [propget] HRESULT AttackDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT AttackDuration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT SustainDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT SustainDuration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT DecayDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT DecayDuration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT RepetitionDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT RepetitionDelay([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT StartDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT StartDelay([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT Occurrences([out] [retval] INT32* value);
                    [propput] HRESULT Occurrences([in] INT32 value);
                    [propget] HRESULT RepetitionMode([out] [retval] Windows.Devices.Lights.Effects.LampArrayRepetitionMode* value);
                    [propput] HRESULT RepetitionMode([in] Windows.Devices.Lights.Effects.LampArrayRepetitionMode value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayBlinkEffect)]
                [uuid(879F1D97-9F50-49B2-A56F-013AA08D55E0)]
                interface ILampArrayBlinkEffectFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.Devices.Lights.LampArray* lampArray, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes, [out] [retval] Windows.Devices.Lights.Effects.LampArrayBlinkEffect** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayColorRampEffect)]
                [uuid(2B004437-40A7-432E-A0B9-0D570C2153FF)]
                interface ILampArrayColorRampEffect : IInspectable
                {
                    [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                    [propput] HRESULT Color([in] Windows.UI.Color value);
                    [propget] HRESULT RampDuration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT RampDuration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT StartDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT StartDelay([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT CompletionBehavior([out] [retval] Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior* value);
                    [propput] HRESULT CompletionBehavior([in] Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayColorRampEffect)]
                [uuid(520BD133-0C74-4DF5-BEA7-4899E0266B0F)]
                interface ILampArrayColorRampEffectFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.Devices.Lights.LampArray* lampArray, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes, [out] [retval] Windows.Devices.Lights.Effects.LampArrayColorRampEffect** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayCustomEffect)]
                [uuid(EC579170-3C34-4876-818B-5765F78B0EE4)]
                interface ILampArrayCustomEffect : IInspectable
                {
                    [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT Duration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT UpdateInterval([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT UpdateInterval([in] Windows.Foundation.TimeSpan value);
                    [eventadd] HRESULT UpdateRequested([in] Windows.Foundation.TypedEventHandler<Windows.Devices.Lights.Effects.LampArrayCustomEffect*, Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                    [eventremove] HRESULT UpdateRequested([in] EventRegistrationToken token);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayCustomEffect)]
                [uuid(68B4774D-63E5-4AF0-A58B-3E535B94E8C9)]
                interface ILampArrayCustomEffectFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.Devices.Lights.LampArray* lampArray, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes, [out] [retval] Windows.Devices.Lights.Effects.LampArrayCustomEffect** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [uuid(11D45590-57FB-4546-B1CE-863107F740DF)]
                interface ILampArrayEffect : IInspectable
                {
                    [propget] HRESULT ZIndex([out] [retval] INT32* value);
                    [propput] HRESULT ZIndex([in] INT32 value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayEffectPlaylist)]
                [uuid(7DE58BFE-6F61-4103-98C7-D6632F7B9169)]
                interface ILampArrayEffectPlaylist : IInspectable
                {
                    HRESULT Append([in] Windows.Devices.Lights.Effects.ILampArrayEffect* effect);
                    HRESULT OverrideZIndex([in] INT32 zIndex);
                    HRESULT Start();
                    HRESULT Stop();
                    HRESULT Pause();
                    [propget] HRESULT EffectStartMode([out] [retval] Windows.Devices.Lights.Effects.LampArrayEffectStartMode* value);
                    [propput] HRESULT EffectStartMode([in] Windows.Devices.Lights.Effects.LampArrayEffectStartMode value);
                    [propget] HRESULT Occurrences([out] [retval] INT32* value);
                    [propput] HRESULT Occurrences([in] INT32 value);
                    [propget] HRESULT RepetitionMode([out] [retval] Windows.Devices.Lights.Effects.LampArrayRepetitionMode* value);
                    [propput] HRESULT RepetitionMode([in] Windows.Devices.Lights.Effects.LampArrayRepetitionMode value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayEffectPlaylist)]
                [uuid(FB15235C-EA35-4C7F-A016-F3BFC6A6C47D)]
                interface ILampArrayEffectPlaylistStatics : IInspectable
                {
                    HRESULT StartAll([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist*>* value);
                    HRESULT StopAll([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist*>* value);
                    HRESULT PauseAll([in] Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.LampArrayEffectPlaylist*>* value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArraySolidEffect)]
                [uuid(441F8213-43CC-4B33-80EB-C6DDDE7DC8ED)]
                interface ILampArraySolidEffect : IInspectable
                {
                    [propget] HRESULT Color([out] [retval] Windows.UI.Color* value);
                    [propput] HRESULT Color([in] Windows.UI.Color value);
                    [propget] HRESULT Duration([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT Duration([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT StartDelay([out] [retval] Windows.Foundation.TimeSpan* value);
                    [propput] HRESULT StartDelay([in] Windows.Foundation.TimeSpan value);
                    [propget] HRESULT CompletionBehavior([out] [retval] Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior* value);
                    [propput] HRESULT CompletionBehavior([in] Windows.Devices.Lights.Effects.LampArrayEffectCompletionBehavior value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArraySolidEffect)]
                [uuid(F862A32C-5576-4341-961B-AEE1F13CF9DD)]
                interface ILampArraySolidEffectFactory : IInspectable
                {
                    HRESULT CreateInstance([in] Windows.Devices.Lights.LampArray* lampArray, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes, [out] [retval] Windows.Devices.Lights.Effects.LampArraySolidEffect** value);
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [exclusiveto(Windows.Devices.Lights.Effects.LampArrayUpdateRequestedEventArgs)]
                [uuid(73560D6A-576A-48AF-8539-67FFA0AB3516)]
                interface ILampArrayUpdateRequestedEventArgs : IInspectable
                {
                    [propget] HRESULT SinceStarted([out] [retval] Windows.Foundation.TimeSpan* value);
                    HRESULT SetColor([in] Windows.UI.Color desiredColor);
                    HRESULT SetColorForIndex([in] INT32 lampIndex, [in] Windows.UI.Color desiredColor);
                    HRESULT SetSingleColorForIndices([in] Windows.UI.Color desiredColor, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes);
                    HRESULT SetColorsForIndices([in] UINT32 __desiredColorsSize, [in] [size_is(__desiredColorsSize)] Windows.UI.Color* desiredColors, [in] UINT32 __lampIndexesSize, [in] [size_is(__lampIndexesSize)] INT32* lampIndexes);
                }

                [activatable(Windows.Devices.Lights.Effects.ILampArrayBitmapEffectFactory, Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LampArrayBitmapEffect
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayBitmapEffect;
                    interface Windows.Devices.Lights.Effects.ILampArrayEffect;
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                runtimeclass LampArrayBitmapRequestedEventArgs
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayBitmapRequestedEventArgs;
                }

                [activatable(Windows.Devices.Lights.Effects.ILampArrayBlinkEffectFactory, Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LampArrayBlinkEffect
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayBlinkEffect;
                    interface Windows.Devices.Lights.Effects.ILampArrayEffect;
                }

                [activatable(Windows.Devices.Lights.Effects.ILampArrayColorRampEffectFactory, Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LampArrayColorRampEffect
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayColorRampEffect;
                    interface Windows.Devices.Lights.Effects.ILampArrayEffect;
                }

                [activatable(Windows.Devices.Lights.Effects.ILampArrayCustomEffectFactory, Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LampArrayCustomEffect
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayCustomEffect;
                    interface Windows.Devices.Lights.Effects.ILampArrayEffect;
                }

                [activatable(Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [static(Windows.Devices.Lights.Effects.ILampArrayEffectPlaylistStatics, Windows.Foundation.UniversalApiContract, 7.0)]
                [threading(both)]
                runtimeclass LampArrayEffectPlaylist
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayEffectPlaylist;
                    interface Windows.Foundation.Collections.IVectorView<Windows.Devices.Lights.Effects.ILampArrayEffect*>;
                    interface Windows.Foundation.Collections.IIterable<Windows.Devices.Lights.Effects.ILampArrayEffect*>;
                }

                [activatable(Windows.Devices.Lights.Effects.ILampArraySolidEffectFactory, Windows.Foundation.UniversalApiContract, 7.0)]
                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                [threading(both)]
                runtimeclass LampArraySolidEffect
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArraySolidEffect;
                    interface Windows.Devices.Lights.Effects.ILampArrayEffect;
                }

                [contract(Windows.Foundation.UniversalApiContract, 7.0)]
                [marshaling_behavior(agile)]
                runtimeclass LampArrayUpdateRequestedEventArgs
                {
                    [default] interface Windows.Devices.Lights.Effects.ILampArrayUpdateRequestedEventArgs;
                }
            }
        }
    }
}
