axvlc.idl 7.76 KB
Newer Older
1 2 3
/*****************************************************************************
 * axvlc.idl: ActiveX control for VLC
 *****************************************************************************
4
 * Copyright (C) 2005 the VideoLAN team
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
 *
 * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
Antoine Cellerier's avatar
Antoine Cellerier committed
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
 *****************************************************************************/

[
  uuid(DF2BBE39-40A8-433b-A279-073F48DA94B6),
  version(1.0),
  helpstring("VideoLAN VLC ActiveX Plugin"),
]
library AXVLC
{
    importlib("stdole2.tlb");

    // Forward declare all types defined in this typelib
    interface IVLCControl;
    dispinterface DVLCEvents;

36 37
    enum VLCPlaylistMode
    {
38
        VLCPlayListInsert       =  1,
39
        VLCPlayListInsertAndGo  =  9,
40
        VLCPlayListReplace      =  2,
41
        VLCPlayListReplaceAndGo = 10,
42
        VLCPlayListAppend       =  4,
43
        VLCPlayListAppendAndGo  = 12,
44
        VLCPlayListCheckInsert  = 16
45 46 47
    };

    // playlist target position
48 49 50
    const int VLCPlayListEnd    = -666;

    // DISPID definitions
51 52 53 54 55 56 57 58 59
    const int DISPID_Visible    = 100;
    const int DISPID_Playing    = 101;
    const int DISPID_Position   = 102;
    const int DISPID_Time       = 103;
    const int DISPID_Length     = 104;
    const int DISPID_Volume     = 105;
    const int DISPID_MRL        = 106;
    const int DISPID_AutoPlay   = 107;
    const int DISPID_AutoLoop   = 108;
60 61 62 63 64 65 66 67 68

    [
      odl,
      uuid(C2FA41D0-B113-476e-AC8C-9BD14999C1C1),
      helpstring("VLC Control"),
      dual,
      hidden,
      oleautomation
    ]
69 70
    interface IVLCControl : IDispatch
    {
71
        [id(DISPID_Visible), propget, bindable, helpstring("Shows or hides plugin.")]
72
        HRESULT Visible([out, retval] VARIANT_BOOL* visible);
73
        [id(DISPID_Visible), propput, bindable, helpstring("Shows or hides plugin.")]
74 75 76 77 78 79 80
        HRESULT Visible([in] VARIANT_BOOL visible);
        [helpstring("Play current target in playlist.")]
        HRESULT play();
        [helpstring("Pause playback.")]
        HRESULT pause();
        [helpstring("Stop playback.")]
        HRESULT stop();
81
        [id(DISPID_Playing), hidden, propget, helpstring("Returns whether VLC is playing.")]
82
        HRESULT Playing([out, retval] VARIANT_BOOL* isPlaying);
83
        [id(DISPID_Position), propget, helpstring("Specifies playback position within current target in playlist, position is a relative value ranging from 0.0 to 1.0.")]
84
        HRESULT Position([out, retval] float* position);
85
        [id(DISPID_Position), propput, helpstring("Specifies playback position within current target in playlist, position is a relative value ranging from 0.0 to 1.0.")]
86
        HRESULT Position([in] float position);
87
        [id(DISPID_Time), propget, helpstring("Specifies playback time relative to the start of current target in playlist.")]
88
        HRESULT Time([out, retval] int* seconds);
89
        [id(DISPID_Time), propput, helpstring("Specifies playback time relative to the start of current target in playlist.")]
90 91 92 93 94
        HRESULT Time([in] int seconds);
        [helpstring("Advance or backtrack playback time, relative to current time.")]
        HRESULT shuttle([in] int seconds);
        [helpstring("Switch between normal and fullscreen video.")]
        HRESULT fullscreen();
95
        [id(DISPID_Length), propget, hidden, helpstring("Returns total length in seconds of current target in playlist, may be unknown.")]
96 97 98 99 100
        HRESULT Length([out, retval] int* seconds);
        [helpstring("Increases playback speed, one of 1x, 2x, 4x, 8x.")]
        HRESULT playFaster();
        [helpstring("Decreases playback speed, one of 1x, 2x, 4x, 8x.")]
        HRESULT playSlower();
101
        [id(DISPID_Volume), propget, helpstring("Specifies playback sound volume, ranges from 0 to 200%.")]
102
        HRESULT Volume([out, retval] int* volume);
103
        [id(DISPID_Volume), propput, helpstring("Specifies playback sound volume, ranges from 0 to 200%.")]
104 105 106
        HRESULT Volume([in] int volume);
        [helpstring("Mute/unmute playback sound volume.")]
        HRESULT toggleMute();
107 108 109 110
        [helpstring("Set a value to a VLC variable.")]
        HRESULT setVariable([in] BSTR name, [in] VARIANT value);
        [helpstring("Retrieve the value of a VLC variable.")]
        HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value);
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
        [helpstring("Add a target to the current playlist.")]

/*
** use VARIANT rather than a SAFEARRAY as argument type
** for compatibility with some scripting language (JScript)
*/

        HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position);
        [propget, helpstring("Returns index of current target in playlist.")]
        HRESULT PlaylistIndex([out, retval] int* index);
        [propget, helpstring("Returns number of items in playlist.")]
        HRESULT PlaylistCount([out, retval] int* index);
        [helpstring("Advance to next item in playlist.")]
        HRESULT playlistNext();
        [helpstring("Advance to previous item in playlist.")]
        HRESULT playlistPrev();
        [helpstring("Remove all items from playlist.")]
        HRESULT playlistClear();
129
        [propget, hidden, helpstring("Returns VLC Version.")]
130
        HRESULT VersionInfo([out, retval] BSTR* version);
131 132 133 134 135 136 137 138 139 140 141 142
        [id(DISPID_MRL), propget, helpstring("Returns initial MRL in default playlist")]
        HRESULT MRL([out, retval] BSTR* mrl);
        [id(DISPID_MRL), propput, helpstring("Specifies initial MRL in default playlist")]
        HRESULT MRL([in] BSTR mrl);
        [id(DISPID_AutoPlay), propget, helpstring("Specifies whether default playlist is played on startup")]
        HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);
        [id(DISPID_AutoPlay), propput, helpstring("Returns whether default playlist is played on startup")]
        HRESULT AutoPlay([in] VARIANT_BOOL autoplay);
        [id(DISPID_AutoLoop), propget, helpstring("Specifies whether default playlist is looped")]
        HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);
        [id(DISPID_AutoLoop), propput, helpstring("Returns whether default playlist is looped")]
        HRESULT AutoLoop([in] VARIANT_BOOL autoloop);
143 144
    };

145 146 147 148
    const int DISPID_PlayEvent  = 100;
    const int DISPID_PauseEvent = 101;
    const int DISPID_StopEvent  = 102;

149 150 151 152 153
    [
      uuid(DF48072F-5EF8-434e-9B40-E2F3AE759B5F),
      helpstring("Event interface for VLC control"),
      hidden
    ]
154 155
    dispinterface DVLCEvents
    {
156 157
        properties:
        methods:
158
            [id(DISPID_PlayEvent), helpstring("Playback in progress")]
159
            void play();
160
            [id(DISPID_PauseEvent), helpstring("Playback has paused")]
161
            void pause();
162
            [id(DISPID_StopEvent), helpstring("Playback has stopped")]
163
            void stop();
164 165 166 167 168 169 170
    };

    [
      uuid(E23FE9C6-778E-49D4-B537-38FCDE4887D8),
      helpstring("VLC control"),
      control
    ]
171 172
    coclass VLCPlugin
    {
173 174 175 176
        [default] interface IVLCControl;
        [default, source] dispinterface DVLCEvents;
    };
};