]> git.sesse.net Git - vlc/blob - projects/activex/axvlc.idl
Merge branch 'master' of git://git.videolan.org/vlc
[vlc] / projects / activex / axvlc.idl
1 /*****************************************************************************\r
2  * axvlc.idl: ActiveX control for VLC\r
3  *****************************************************************************\r
4  * Copyright (C) 2006 the VideoLAN team\r
5  * Copyright (C) 2010 M2X BV\r
6  *\r
7  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
8  *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>\r
9  *\r
10  * This program is free software; you can redistribute it and/or modify\r
11  * it under the terms of the GNU General Public License as published by\r
12  * the Free Software Foundation; either version 2 of the License, or\r
13  * (at your option) any later version.\r
14  *\r
15  * This program is distributed in the hope that it will be useful,\r
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
18  * GNU General Public License for more details.\r
19  *\r
20  * You should have received a copy of the GNU General Public License\r
21  * along with this program; if not, write to the Free Software\r
22  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.\r
23  *****************************************************************************/\r
24 \r
25 // comments terminated by [t] are by tonsofpcs, regarding the string\r
26 // review. April 02, 2006. [t]\r
27 // Possibly change all instances of "the current playlist" to "the\r
28 // playlist" and "current playlist" to "the playlist" [t]\r
29 \r
30 import "ocidl.idl";\r
31 \r
32 [\r
33   uuid(DF2BBE39-40A8-433b-A279-073F48DA94B6),\r
34   version(1.0),\r
35   helpstring("VideoLAN VLC ActiveX Plugin")\r
36 ]\r
37 library AXVLC\r
38 {\r
39     // Forward declare all types defined in this typelib\r
40     interface IVLCControl;\r
41     interface IVLCAudio;\r
42     interface IVLCInput;\r
43     interface IVLCLogo;\r
44     interface IVLCDeinterlace;\r
45     interface IVLCMarquee;\r
46     interface IVLCPlaylist;\r
47     interface IVLCSubtitle;\r
48     interface IVLCVideo;\r
49     interface IVLCControl2;\r
50     dispinterface DVLCEvents;\r
51 \r
52     importlib("stdole2.tlb");\r
53 \r
54     typedef [public] enum VLCPlaylistMode\r
55     {\r
56         VLCPlayListInsert       =  1,\r
57         VLCPlayListInsertAndGo  =  9,\r
58         VLCPlayListReplace      =  2,\r
59         VLCPlayListReplaceAndGo = 10,\r
60         VLCPlayListAppend       =  4,\r
61         VLCPlayListAppendAndGo  = 12,\r
62         VLCPlayListCheckInsert  = 16\r
63     } eVLCPlaylistMode;\r
64 \r
65     // playlist target position\r
66     const int VLCPlayListEnd    = -666;\r
67 \r
68     // DISPID definitions\r
69     const int DISPID_BackColor  = -501;\r
70 \r
71     const int DISPID_Visible    = 100;\r
72     const int DISPID_Playing    = 101;\r
73     const int DISPID_Position   = 102;\r
74     const int DISPID_Time       = 103;\r
75     const int DISPID_Length     = 104;\r
76     const int DISPID_Volume     = 105;\r
77     const int DISPID_MRL        = 106;\r
78     const int DISPID_AutoPlay   = 107;\r
79     const int DISPID_AutoLoop   = 108;\r
80     const int DISPID_StartTime  = 109;\r
81     const int DISPID_BaseURL    = 110;\r
82     const int DISPID_Toolbar     = 111;\r
83 \r
84     [\r
85       odl,\r
86       uuid(C2FA41D0-B113-476e-AC8C-9BD14999C1C1),\r
87       helpstring("VLC Control (deprecated)"),\r
88       dual,\r
89       oleautomation\r
90     ]\r
91     interface IVLCControl : IDispatch\r
92     {\r
93         [id(DISPID_Visible), propget, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
94         HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
95         [id(DISPID_Visible), propput, bindable, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
96         HRESULT Visible([in] VARIANT_BOOL visible);\r
97         [helpstring("Play current target in playlist.")]\r
98         HRESULT play();\r
99         [helpstring("Pause playback.")]\r
100         HRESULT pause();\r
101         [helpstring("Stop playback.")]\r
102         HRESULT stop();\r
103         [id(DISPID_Playing), hidden, propget, helpstring("Returns a value that determines whether VLC is currently playing.")]\r
104         HRESULT Playing([out, retval] VARIANT_BOOL* isPlaying);\r
105         [id(DISPID_Position), propget, helpstring("Returns/sets playback position within the current item. Position is a relative value ranging from 0.0 to 1.0.")]\r
106         HRESULT Position([out, retval] float* position);\r
107         [id(DISPID_Position), propput, helpstring("Returns/sets playback position within the current item. Position is a relative value ranging from 0.0 to 1.0.")]\r
108         HRESULT Position([in] float position);\r
109         [id(DISPID_Time), propget, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
110         HRESULT Time([out, retval] int* seconds);\r
111         [id(DISPID_Time), propput, helpstring("Returns/sets playback time relative to the start of the current item.")]\r
112         HRESULT Time([in] int seconds);\r
113         [helpstring("Advance or backtrack playback time, relative to current time.")]  //possibly find a better word to replace 'backtrack' [t]\r
114         HRESULT shuttle([in] int seconds);\r
115         [helpstring("Switch video between normal and fullscreen view modes.")]\r
116         HRESULT fullscreen();\r
117         [id(DISPID_Length), propget, hidden, helpstring("Returns the total length, in seconds, of the current item, may be unknown.")]\r
118         HRESULT Length([out, retval] int* seconds);\r
119         [helpstring("Increases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
120         HRESULT playFaster();\r
121         [helpstring("Decreases playback speed. Possible speeds are: 1x, 2x, 4x, 8x.")]\r
122         HRESULT playSlower();\r
123         [id(DISPID_Volume), propget, helpstring("Returns/sets playback volume, ranges from 0 to 200%.")]  //possibly remove % from 'ranges', change to 'values', and specify that 200 is equivilant to 200% (remember, 200% == 2.0, but this gets an int not a float) [t]\r
124         HRESULT Volume([out, retval] int* volume);\r
125         [id(DISPID_Volume), propput, helpstring("Returns/sets playback volume, ranges from 0 to 200%.")]\r
126         HRESULT Volume([in] int volume);\r
127         [helpstring("Mute/unmute playback audio.")]\r
128         HRESULT toggleMute();\r
129         [helpstring("Sets the value of a VLC variable.")]\r
130         HRESULT setVariable([in] BSTR name, [in] VARIANT value);\r
131         [helpstring("Returns the value of a VLC variable.")]\r
132         HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value);\r
133 \r
134 /*\r
135 ** use VARIANT rather than a SAFEARRAY as argument type\r
136 ** for compatibility with some scripting language (JScript)\r
137 */\r
138 \r
139         [helpstring("Add an item to the playlist.")]\r
140         HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position);\r
141         [propget, helpstring("Returns index of current item in playlist.")]\r
142         HRESULT PlaylistIndex([out, retval] int* index);\r
143         [propget, helpstring("Returns number of items in playlist.")]\r
144         HRESULT PlaylistCount([out, retval] int* index);\r
145         [helpstring("Advance to next item in playlist.")]\r
146         HRESULT playlistNext();\r
147         [helpstring("Advance to previous item in playlist.")]\r
148         HRESULT playlistPrev();\r
149         [helpstring("Remove all items from playlist.")]\r
150         HRESULT playlistClear();\r
151         [propget, hidden, helpstring("Returns VLC Version.")]\r
152         HRESULT VersionInfo([out, retval] BSTR* version);\r
153         [id(DISPID_MRL), propget, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
154         HRESULT MRL([out, retval] BSTR* mrl);\r
155         [id(DISPID_MRL), propput, helpstring("Returns/sets the first MRL in playlist, used for AutoPlay")]\r
156         HRESULT MRL([in] BSTR mrl);\r
157         [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
158         HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
159         [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
160         HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
161         [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
162         HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
163         [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
164         HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
165     };\r
166 \r
167     const int DISPID_PlayEvent  = 100;\r
168     const int DISPID_PauseEvent = 101;\r
169     const int DISPID_StopEvent  = 102;\r
170 \r
171     /* async events from libvlc */\r
172     const int DISPID_MediaPlayerNothingSpecialEvent = 200;\r
173     const int DISPID_MediaPlayerOpeningEvent = 201;\r
174     const int DISPID_MediaPlayerBufferingEvent = 202;\r
175     const int DISPID_MediaPlayerPlayingEvent = 203;\r
176     const int DISPID_MediaPlayerPausedEvent = 204;\r
177     const int DISPID_MediaPlayerForwardEvent = 205;\r
178     const int DISPID_MediaPlayerBackwardEvent = 206;\r
179     const int DISPID_MediaPlayerEncounteredErrorEvent = 207;\r
180     const int DISPID_MediaPlayerEndReachedEvent = 208;\r
181     const int DISPID_MediaPlayerStoppedEvent = 209;\r
182 \r
183     const int DISPID_MediaPlayerTimeChangedEvent = 210;\r
184     const int DISPID_MediaPlayerPositionChangedEvent = 211;\r
185     const int DISPID_MediaPlayerSeekableChangedEvent = 212;\r
186     const int DISPID_MediaPlayerPausableChangedEvent = 213;\r
187 \r
188     [\r
189       uuid(DF48072F-5EF8-434e-9B40-E2F3AE759B5F),\r
190       helpstring("Event interface for VLC control"),\r
191     ]\r
192     dispinterface DVLCEvents\r
193     {\r
194         properties:\r
195         methods:\r
196             [id(DISPID_PlayEvent), helpstring("Playing")]\r
197             void play();\r
198             [id(DISPID_PauseEvent), helpstring("Paused")]\r
199             void pause();\r
200             [id(DISPID_StopEvent), helpstring("Stopped")]\r
201             void stop();\r
202 \r
203             /* asyn events from libvlc */\r
204             [id(DISPID_MediaPlayerNothingSpecialEvent), helpstring("Idle state")]\r
205             void MediaPlayerNothingSpecial();\r
206             [id(DISPID_MediaPlayerOpeningEvent), helpstring("Opening media")]\r
207             void MediaPlayerOpening();\r
208             [id(DISPID_MediaPlayerBufferingEvent), helpstring("Buffering media")]\r
209             void MediaPlayerBuffering([in] long cache);\r
210             [id(DISPID_MediaPlayerPlayingEvent), helpstring("Media is playing")]\r
211             void MediaPlayerPlaying();\r
212             [id(DISPID_MediaPlayerPausedEvent), helpstring("Media is paused")]\r
213             void MediaPlayerPaused();\r
214             [id(DISPID_MediaPlayerForwardEvent), helpstring("Forward playback")]\r
215             void MediaPlayerForward();\r
216             [id(DISPID_MediaPlayerBackwardEvent), helpstring("Backward playback")]\r
217             void MediaPlayerBackward();\r
218             [id(DISPID_MediaPlayerEncounteredErrorEvent), helpstring("An error has been encountered")]\r
219             void MediaPlayerEncounteredError();\r
220             [id(DISPID_MediaPlayerEndReachedEvent), helpstring("End of playback reached")]\r
221             void MediaPlayerEndReached();\r
222             [id(DISPID_MediaPlayerStoppedEvent), helpstring("Playback stopped")]\r
223             void MediaPlayerStopped();\r
224 \r
225             [id(DISPID_MediaPlayerTimeChangedEvent), helpstring("Time changed")]\r
226             void MediaPlayerTimeChanged([in] long time);\r
227             [id(DISPID_MediaPlayerPositionChangedEvent), helpstring("Position changed")]\r
228             void MediaPlayerPositionChanged([in] long position);\r
229             [id(DISPID_MediaPlayerSeekableChangedEvent), helpstring("Seek changed")]\r
230             void MediaPlayerSeekableChanged([in] VARIANT_BOOL seekable);\r
231             [id(DISPID_MediaPlayerPausableChangedEvent), helpstring("Pause setting changed")]\r
232             void MediaPlayerPausableChanged([in] VARIANT_BOOL pausable);\r
233     };\r
234 \r
235     [\r
236       odl,\r
237       uuid(9E0BD17B-2D3C-4656-B94D-03084F3FD9D4),\r
238       helpstring("VLC Audio APIs"),\r
239       dual,\r
240       oleautomation\r
241     ]\r
242     interface IVLCAudio : IDispatch\r
243     {\r
244         [propget, helpstring("Returns/sets the audio mute state.")]\r
245         HRESULT mute([out, retval] VARIANT_BOOL* muted);\r
246         [propput, helpstring("Returns/sets the audio mute state.")]\r
247         HRESULT mute([in] VARIANT_BOOL muted);\r
248 \r
249         [propget, helpstring("Returns/sets audio volume as a percent value.")]\r
250         HRESULT volume([out, retval] long* volume);\r
251         [propput, helpstring("Returns/sets audio volume as a percent value.")]\r
252         HRESULT volume([in] long volume);\r
253 \r
254         [helpstring("Mute/unmute audio playback.")]\r
255         HRESULT toggleMute();\r
256 \r
257         [propget, helpstring("Returns/sets audio track used/to use.")]\r
258         HRESULT track([out, retval] long* track);\r
259         [propput, helpstring("Returns/sets audio track used/to use.")]\r
260         HRESULT track([in] long track);\r
261 \r
262         [propget, helpstring("Returns the number of audio tracks available.")]\r
263         HRESULT count([out, retval] long* trackNumber);\r
264         [helpstring("Returns audio track name.")]\r
265         HRESULT description([in] long trackID, [out, retval] BSTR* name);\r
266 \r
267         [propget, helpstring("Returns audio channel [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
268         HRESULT channel([out, retval] long* channel);\r
269         [propput, helpstring("Sets audio channel to [1-5] indicating; stereo, reverse stereo, left, right, dolby.")]\r
270         HRESULT channel([in] long channel);\r
271     };\r
272 \r
273     [\r
274       odl,\r
275       uuid(49E0DBD1-9440-466C-9C97-95C67190C603),\r
276       helpstring("VLC Input APIs"),\r
277       dual,\r
278       oleautomation\r
279     ]\r
280     interface IVLCInput : IDispatch\r
281     {\r
282         [propget, helpstring("Returns the clip length, in milliseconds.")]\r
283         HRESULT length([out, retval] double* length);\r
284 \r
285         [propget, helpstring("Returns/sets playback position in current clip.  Position is ranging from 0.0 to 1.0.")]\r
286         HRESULT position([out, retval] double* position);\r
287         [propput, helpstring("Returns/sets playback position in the current clip.  Position ranging from 0.0 to 1.0.")]\r
288         HRESULT position([in] double position);\r
289 \r
290         [propget, helpstring("Returns/sets playback time in current clip, in milliseconds.")]\r
291         HRESULT time([out, retval] double* time);\r
292         [propput, helpstring("Returns/sets playback time in the current clip, in milliseconds.")]\r
293         HRESULT time([in] double time);\r
294 \r
295         [propget, helpstring("Returns current playback state.")]\r
296         HRESULT state([out, retval] long* state);\r
297 \r
298         [propget, helpstring("Returns/sets current playback rate, normal rate is 1.0 ")]\r
299         HRESULT rate([out, retval] double* rate);\r
300         [propput, helpstring("Returns/sets current playback rate, normal rate is 1.0.")]\r
301         HRESULT rate([in] double rate);\r
302 \r
303         [propget, helpstring("Returns current playback frames per seconds if available.")]\r
304         HRESULT fps([out, retval] double* fps);\r
305 \r
306         [propget, helpstring("Returns whether current playback displays video.")]\r
307         HRESULT hasVout([out, retval] VARIANT_BOOL* hasVout);\r
308     };\r
309 \r
310     [\r
311       odl,\r
312       uuid(FD37FE32-82BC-4A25-B056-315F4DBB194D),\r
313       helpstring("VLC Playlist Items collection"),\r
314       dual,\r
315       oleautomation\r
316     ]\r
317     interface IVLCPlaylistItems : IDispatch\r
318     {\r
319         [propget, helpstring("Returns number of items in playlist.")]\r
320         HRESULT count([out, retval] long* count);\r
321 \r
322         [helpstring("Remove all items from playlist.")]\r
323         HRESULT clear();\r
324 \r
325         [helpstring("remove item from playlist.")]\r
326         HRESULT remove([in] long itemId);\r
327     };\r
328 \r
329     [\r
330       odl,\r
331       uuid(54613049-40BF-4035-9E70-0A9312C0188D),\r
332       helpstring("VLC Playlist APIs"),\r
333       dual,\r
334       oleautomation\r
335     ]\r
336     interface IVLCPlaylist : IDispatch\r
337     {\r
338         [hidden, propget, helpstring("Returns number of items in playlist. (deprecated)")]\r
339         HRESULT itemCount([out, retval] long* count);\r
340 \r
341         [propget, helpstring("Returns whether playback displays video.")]\r
342         HRESULT isPlaying([out, retval] VARIANT_BOOL* playing);\r
343 \r
344         [helpstring("Add a playlist item.")]\r
345         HRESULT add([in] BSTR uri, [in, optional] VARIANT name, [in, optional] VARIANT options, [out, retval] long* itemId);\r
346 \r
347         [helpstring("Play/Resume the playlist.")]\r
348         HRESULT play();\r
349 \r
350         [helpstring("Play item in playlist.")]\r
351         HRESULT playItem([in] long itemId);\r
352 \r
353         [helpstring("Play/Pause current clip.")]\r
354         HRESULT togglePause();\r
355 \r
356         [helpstring("Stop current clip.")]\r
357         HRESULT stop();\r
358 \r
359         [helpstring("Advance to next item in playlist.")]\r
360         HRESULT next();\r
361 \r
362         [helpstring("Advance to previous item in playlist.")]\r
363         HRESULT prev();\r
364 \r
365         [hidden, helpstring("Remove all items from playlist. (deprecated)")]\r
366         HRESULT clear();\r
367 \r
368         [hidden, helpstring("Remove item from playlist. (deprecated)")]\r
369         HRESULT removeItem([in] long item);\r
370 \r
371         [propget, helpstring("Returns the playlist items collection object.")]\r
372         HRESULT items([out, retval] IVLCPlaylistItems** obj);\r
373     };\r
374 \r
375     [\r
376       odl,\r
377       uuid(465E787A-0556-452F-9477-954E4A940003),\r
378       helpstring("VLC Subtitle APIs"),\r
379       dual,\r
380       oleautomation\r
381     ]\r
382     interface IVLCSubtitle : IDispatch\r
383     {\r
384         [propget, helpstring("Returns video subtitle used.")]\r
385         HRESULT track([out, retval] long* spu);\r
386         [propput, helpstring("Sets video subtitle to use.")]\r
387         HRESULT track([in] long spu);\r
388 \r
389         [propget, helpstring("Returns the number of video subtitles available.")]\r
390         HRESULT count([out, retval] long* spuNumber);\r
391         [helpstring("Returns video subtitle name.")]\r
392         HRESULT description([in] long nameID, [out, retval] BSTR* name);\r
393     };\r
394 \r
395     [\r
396       odl,\r
397       uuid(8D076AD6-9B6F-4150-A0FD-5D7E8C8CB02C),\r
398       helpstring("VLC Marquee Filter"),\r
399       dual,\r
400       oleautomation\r
401     ]\r
402     interface IVLCMarquee : IDispatch\r
403     {\r
404         [helpstring("enable Marquee Filter.")]\r
405         HRESULT enable();\r
406         [helpstring("disable Marquee Filter.")]\r
407         HRESULT disable();\r
408 \r
409         [propget, helpstring("Retrieve marquee text.")]\r
410         HRESULT text([out, retval] BSTR* val);\r
411         [propput, helpstring("Change marquee text.")]\r
412         HRESULT text([in] BSTR val);\r
413 \r
414         [propget, helpstring("Retrieve text color.")]\r
415         HRESULT color([out, retval] LONG* val);\r
416         [propput, helpstring("Change text color.")]\r
417         HRESULT color([in] LONG val);\r
418         [propget, helpstring("Retrieve text opacity.")]\r
419         HRESULT opacity([out, retval] LONG* val);\r
420         [propput, helpstring("Set text opacity (0=transparent, 255=opaque).")]\r
421         HRESULT opacity([in] LONG val);\r
422         [propget, helpstring("Retrieve text position.")]\r
423         HRESULT position([out, retval] BSTR* val);\r
424         [propput, helpstring("Text positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")]\r
425         HRESULT position([in] BSTR val);\r
426         [propget, helpstring("Retrieve text refresh time.")]\r
427         HRESULT refresh([out, retval] LONG* val);\r
428         [propput, helpstring("Set text refresh time.")]\r
429         HRESULT refresh([in] LONG val);\r
430         [propget, helpstring("Retrieve text size.")]\r
431         HRESULT size([out, retval] LONG* val);\r
432         [propput, helpstring("Set text size.")]\r
433         HRESULT size([in] LONG val);\r
434         [propget, helpstring("Retrieve timeout.")]\r
435         HRESULT timeout([out, retval] LONG* val);\r
436         [propput, helpstring("Change timeout.")]\r
437         HRESULT timeout([in] LONG val);\r
438         [propget, helpstring("Retrieve text abcissa.")]\r
439         HRESULT x([out, retval] LONG* val);\r
440         [propput, helpstring("Change text abcissa.")]\r
441         HRESULT x([in] LONG val);\r
442         [propget, helpstring("Retrieve text ordinate.")]\r
443         HRESULT y([out, retval] LONG* val);\r
444         [propput, helpstring("Change text ordinate.")]\r
445         HRESULT y([in] LONG val);\r
446     };\r
447 \r
448     [\r
449       odl,\r
450       uuid(8a4a20c2-93f3-44e8-8644-beb2e3487e84),\r
451       helpstring("VLC Logo Filter"),\r
452       dual,\r
453       oleautomation\r
454     ]\r
455     interface IVLCLogo : IDispatch\r
456     {\r
457         [helpstring("Enable the logo filter.")]\r
458         HRESULT enable();\r
459         [helpstring("Disable the logo filter.")]\r
460         HRESULT disable();\r
461 \r
462         [helpstring("specify input file[[,delay],alpha].")]\r
463         HRESULT file([in] BSTR fname);\r
464 \r
465         [propget, helpstring("")]\r
466         HRESULT delay([out, retval] long* val);\r
467         [propput, helpstring("Set delay-to-next-picture in miliseconds.")]\r
468         HRESULT delay([in] long val);\r
469 \r
470         [propget, helpstring("")]\r
471         HRESULT repeat([out, retval] long* val);\r
472         [propput, helpstring("Repeat: -1 continuous (default), 0 no repeat, ....")]\r
473         HRESULT repeat([in] long val);\r
474 \r
475         [propget, helpstring("Returns the `global' alpha value.")]\r
476         HRESULT opacity([out, retval] long* val);\r
477         [propput, helpstring("Alpha value: 0 opaque to 255 fully transparent")]\r
478         HRESULT opacity([in] long val);\r
479 \r
480         [propget, helpstring("Retrieve picture position.")]\r
481         HRESULT position([out, retval] BSTR* val);\r
482         [propput, helpstring("Picture positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")]\r
483         HRESULT position([in] BSTR val);\r
484 \r
485         [propget, helpstring("Picture x offset.")]\r
486         HRESULT x([out, retval] long* val);\r
487         [propput, helpstring("Picture x offset.")]\r
488         HRESULT x([in] long val);\r
489         [propget, helpstring("Picture y offset.")]\r
490         HRESULT y([out, retval] long* val);\r
491         [propput, helpstring("Picture y offset.")]\r
492         HRESULT y([in] long val);\r
493 \r
494     };\r
495     [\r
496       odl,\r
497       uuid(bc97469f-cb11-4037-8dce-5fc9f5f85307),\r
498       helpstring("VLC Deinterlace Filter"),\r
499       dual,\r
500       oleautomation\r
501     ]\r
502     interface IVLCDeinterlace : IDispatch\r
503     {\r
504         [helpstring("Enable deinterlace filter and set method.")]\r
505         HRESULT enable([in] BSTR mode);\r
506         [helpstring("Disable deinterlace filter.")]\r
507         HRESULT disable();\r
508 \r
509     };\r
510 \r
511     [\r
512       odl,\r
513       uuid(0AAEDF0B-D333-4B27-A0C6-BBF31413A42E),\r
514       helpstring("VLC Video APIs"),\r
515       dual,\r
516       oleautomation\r
517     ]\r
518     interface IVLCVideo : IDispatch\r
519     {\r
520         [propget, helpstring("Returns/sets the fullscreen state.")]\r
521         HRESULT fullscreen([out, retval] VARIANT_BOOL* fullscreen);\r
522 \r
523         [propput, helpstring("Returns/sets the fullscreen state.")]\r
524         HRESULT fullscreen([in] VARIANT_BOOL fullscreen);\r
525 \r
526         [propget, helpstring("Returns video original width.")]\r
527         HRESULT width([out, retval] long* width);\r
528 \r
529         [propget, helpstring("Returns video original height.")]\r
530         HRESULT height([out, retval] long* height);\r
531 \r
532         [propget, helpstring("Returns video aspect ratio.")]\r
533         HRESULT aspectRatio([out, retval] BSTR* aspect);\r
534         [propput, helpstring("Sets video aspect ratio.")]\r
535         HRESULT aspectRatio([in] BSTR aspect);\r
536 \r
537         [propget, helpstring("Returns video subtitle used.")]\r
538         HRESULT subtitle([out, retval] long* spu);\r
539         [propput, helpstring("Sets video subtitle to use.")]\r
540         HRESULT subtitle([in] long spu);\r
541 \r
542         [propget, helpstring("Returns crop filter geometry.")]\r
543         HRESULT crop([out, retval] BSTR* geometry);\r
544         [propput, helpstring("Sets crop filter geometry.")]\r
545         HRESULT crop([in] BSTR geometry);\r
546 \r
547         [propget, helpstring("Returns teletext page used.")]\r
548         HRESULT teletext([out, retval] long* page);\r
549         [propput, helpstring("Sets teletext page to use.")]\r
550         HRESULT teletext([in] long page);\r
551 \r
552         [helpstring("toggle fullscreen/windowed state.")]\r
553         HRESULT toggleFullscreen();\r
554 \r
555         [helpstring("take video snapshot and save it into picture object.")]\r
556         HRESULT takeSnapshot([out, retval] IPictureDisp** picture);\r
557 \r
558         [helpstring("toggle teletext transparent state.")]\r
559         HRESULT toggleTeletext();\r
560 \r
561         [propget, helpstring("Returns the marquee object.")]\r
562         HRESULT marquee([out, retval] IVLCMarquee** obj);\r
563 \r
564         [propget, helpstring("Returns the logo object.")]\r
565         HRESULT logo([out, retval] IVLCLogo** obj);\r
566 \r
567         [propget, helpstring("Returns the logo object.")]\r
568         HRESULT deinterlace([out, retval] IVLCDeinterlace** obj);\r
569     };\r
570 \r
571     [\r
572       odl,\r
573       uuid(2D719729-5333-406C-BF12-8DE787FD65E3),\r
574       helpstring("VLC Control"),\r
575       dual,\r
576       oleautomation\r
577     ]\r
578     interface IVLCControl2 : IDispatch\r
579     {\r
580         [id(DISPID_AutoLoop), propget, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
581         HRESULT AutoLoop([out, retval] VARIANT_BOOL* autoloop);\r
582         [id(DISPID_AutoLoop), propput, helpstring("Returns/sets a value that determines whether the playlist is looped")]\r
583         HRESULT AutoLoop([in] VARIANT_BOOL autoloop);\r
584 \r
585         [id(DISPID_AutoPlay), propget, helpstring("Returns/sets a value that determines whether the playlist is played on startup")]\r
586         HRESULT AutoPlay([out, retval] VARIANT_BOOL* autoplay);\r
587         [id(DISPID_AutoPlay), propput, helpstring("Returns/Sets a value that determines whether the playlist is played on startup")]\r
588         HRESULT AutoPlay([in] VARIANT_BOOL autoplay);\r
589 \r
590         [id(DISPID_BaseURL), propget, helpstring("Returns/sets the base URL for relative paths")]\r
591         HRESULT BaseURL([out, retval] BSTR* url);\r
592         [id(DISPID_BaseURL), propput, helpstring("Returns/sets the base URL for relative paths")]\r
593         HRESULT BaseURL([in] BSTR url);\r
594 \r
595         [id(DISPID_StartTime), propget, helpstring("Returns/sets playback start time of URL.")]\r
596         HRESULT StartTime([out, retval] long* seconds);\r
597         [id(DISPID_StartTime), propput, helpstring("Returns/sets playback start time of URL.")]\r
598         HRESULT StartTime([in] long seconds);\r
599 \r
600         [id(DISPID_MRL), propget, helpstring("Returns/sets the default MRL in playlist")]\r
601         HRESULT MRL([out, retval] BSTR* mrl);\r
602         [id(DISPID_MRL), propput, helpstring("Returns/sets the default MRL in playlist")]\r
603         HRESULT MRL([in] BSTR mrl);\r
604 \r
605         [propget, helpstring("Returns VLC Version.")]\r
606         HRESULT VersionInfo([out, retval] BSTR* version);\r
607 \r
608         [id(DISPID_Visible), propget, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
609         HRESULT Visible([out, retval] VARIANT_BOOL* visible);\r
610         [id(DISPID_Visible), propput, helpstring("Returns/sets a value that determines whether viewing area is visible or hidden.")]\r
611         HRESULT Visible([in] VARIANT_BOOL visible);\r
612 \r
613         [id(DISPID_Volume), propget, helpstring("Returns/sets default audio volume.")]\r
614         HRESULT Volume([out, retval] long* volume);\r
615         [id(DISPID_Volume), propput, helpstring("Returns/sets default audio volume.")]\r
616         HRESULT Volume([in] long volume);\r
617 \r
618         [id(DISPID_BackColor), propget, helpstring("Returns/sets background color.")]\r
619         HRESULT BackColor([out, retval] OLE_COLOR* backcolor);\r
620         [id(DISPID_BackColor), propput, helpstring("Returns/sets background color.")]\r
621         HRESULT BackColor([in] OLE_COLOR backcolor);\r
622 \r
623         /*\r
624          * caution: vlcobject.toolbar:bool does not yet exists in Firefox\r
625          * plugin. Official usage is through "toolbar" property for now,\r
626          * which is compatibile with Firefox.\r
627          */\r
628         [id(DISPID_Toolbar), propget, helpstring("Returns/sets visibility of the toolbar")]\r
629         HRESULT Toolbar([out, retval] VARIANT_BOOL* visible);\r
630         [id(DISPID_Toolbar), propput, helpstring("Returns/sets visibility of the toolbar")]\r
631         HRESULT Toolbar([in] VARIANT_BOOL visible);\r
632 \r
633         [propget, helpstring("Returns the audio object.")]\r
634         HRESULT audio([out, retval] IVLCAudio** obj);\r
635 \r
636         [propget, helpstring("Returns the audio object.")]\r
637         HRESULT input([out, retval] IVLCInput** obj);\r
638 \r
639         [propget, helpstring("Returns the playlist object.")]\r
640         HRESULT playlist([out, retval] IVLCPlaylist** obj);\r
641 \r
642         [propget, helpstring("Returns the audio object.")]\r
643         HRESULT subtitle([out, retval] IVLCSubtitle** obj);\r
644 \r
645         [propget, helpstring("Returns the audio object.")]\r
646         HRESULT video([out, retval] IVLCVideo** obj);\r
647     };\r
648 \r
649     [\r
650       uuid(E23FE9C6-778E-49D4-B537-38FCDE4887D8),\r
651       helpstring("VLC control (deprecated)"),\r
652       control\r
653     ]\r
654     coclass VLCPlugin\r
655     {\r
656         [default] interface IVLCControl;\r
657         interface IVLCControl2;\r
658         [default, source] dispinterface DVLCEvents;\r
659     };\r
660 \r
661     [\r
662       uuid(9BE31822-FDAD-461B-AD51-BE1D1C159921),\r
663       helpstring("VLC control"),\r
664       control\r
665     ]\r
666     coclass VLCPlugin2\r
667     {\r
668         [default] interface IVLCControl2;\r
669         interface IVLCControl;\r
670         [default, source] dispinterface DVLCEvents;\r
671     };\r
672 };\r