From: JP Dinger Date: Tue, 19 Jan 2010 13:41:12 +0000 (+0100) Subject: Update activex plugin and test page for new logo interface. X-Git-Tag: 1.1.0-ff~1107 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=5fc57a8e657648d463ffc031bf8d872c9d6d1c62;p=vlc Update activex plugin and test page for new logo interface. --- diff --git a/projects/activex/axvlc.idl b/projects/activex/axvlc.idl index 6e131ff2ac..dba31d553c 100644 --- a/projects/activex/axvlc.idl +++ b/projects/activex/axvlc.idl @@ -2,6 +2,7 @@ * axvlc.idl: ActiveX control for VLC ***************************************************************************** * Copyright (C) 2006 the VideoLAN team + * Copyright (C) 2010 M2X BV * * Authors: Damien Fouilleul * Jean-Paul Saman @@ -21,8 +22,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -//comments terminated by [t] are by tonsofpcs, regarding the string review. April 02, 2006. [t] -//Possibly change all instances of "the current playlist" to "the playlist" and "current playlist" to "the playlist" [t] +// comments terminated by [t] are by tonsofpcs, regarding the string +// review. April 02, 2006. [t] +// Possibly change all instances of "the current playlist" to "the +// playlist" and "current playlist" to "the playlist" [t] import "ocidl.idl"; @@ -129,13 +132,13 @@ library AXVLC HRESULT setVariable([in] BSTR name, [in] VARIANT value); [helpstring("Returns the value of a VLC variable.")] HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value); - [helpstring("Add an item to the playlist.")] /* ** use VARIANT rather than a SAFEARRAY as argument type ** for compatibility with some scripting language (JScript) */ + [helpstring("Add an item to the playlist.")] HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position); [propget, helpstring("Returns index of current item in playlist.")] HRESULT PlaylistIndex([out, retval] int* index); @@ -463,6 +466,54 @@ library AXVLC HRESULT y ([in] long val); }; + [ + odl, + uuid(8a4a20c2-93f3-44e8-8644-beb2e3487e84), + helpstring("VLC Logo Filter"), + dual, + oleautomation + ] + interface IVLCLogo : IDispatch + { + [helpstring("Enable the logo filter.")] + HRESULT enable(); + [helpstring("Disable the logo filter.")] + HRESULT disable(); + + [helpstring("specify input file[[,delay],alpha].")] + HRESULT file([in] BSTR fname); + + [propget, helpstring("")] + HRESULT delay([out, retval] long* val); + [propput, helpstring("Set delay-to-next-picture in miliseconds.")] + HRESULT delay([in] long val); + + [propget, helpstring("")] + HRESULT repeat([out, retval] long* val); + [propput, helpstring("Repeat: -1 continuous (default), 0 no repeat, ....")] + HRESULT repeat([in] long val); + + [propget, helpstring("Returns the `global' alpha value.")] + HRESULT opacity([out, retval] long* val); + [propput, helpstring("Alpha value: 0 opaque to 255 fully transparent")] + HRESULT opacity([in] long val); + + [propget, helpstring("Retrieve picture position.")] + HRESULT position([out, retval] BSTR* val); + [propput, helpstring("Picture positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")] + HRESULT position([in] BSTR val); + + [propget, helpstring("Picture x offset.")] + HRESULT x([out, retval] long* val); + [propput, helpstring("Picture x offset.")] + HRESULT x([in] long val); + [propget, helpstring("Picture y offset.")] + HRESULT y([out, retval] long* val); + [propput, helpstring("Picture y offset.")] + HRESULT y([in] long val); + + }; + [ odl, uuid(0AAEDF0B-D333-4B27-A0C6-BBF31413A42E), @@ -520,6 +571,9 @@ library AXVLC [propget, helpstring("Returns the marquee object.")] HRESULT marquee([out, retval] IVLCMarquee** obj); + + [propget, helpstring("Returns the logo object.")] + HRESULT logo([out, retval] IVLCLogo** obj); }; [ diff --git a/projects/activex/axvlc_idl.c b/projects/activex/axvlc_idl.c index 280fb0185f..8ddb388bc7 100644 --- a/projects/activex/axvlc_idl.c +++ b/projects/activex/axvlc_idl.c @@ -1,4 +1,4 @@ -/*** Autogenerated by WIDL 1.0 from axvlc.idl - Do not edit ***/ +/*** Autogenerated by WIDL 1.1.23 from axvlc.idl - Do not edit ***/ #include #include @@ -22,6 +22,7 @@ DEFINE_GUID(IID_IVLCPlaylistItems, 0xfd37fe32, 0x82bc, 0x4a25, 0xb0,0x56, 0x31,0 DEFINE_GUID(IID_IVLCPlaylist, 0x54613049, 0x40bf, 0x4035, 0x9e,0x70, 0x0a,0x93,0x12,0xc0,0x18,0x8d); DEFINE_GUID(IID_IVLCSubtitle, 0x465e787a, 0x0556, 0x452f, 0x94,0x77, 0x95,0x4e,0x4a,0x94,0x00,0x03); DEFINE_GUID(IID_IVLCMarquee, 0x8d076ad6, 0x9b6f, 0x4150, 0xa0,0xfd, 0x5d,0x7e,0x8c,0x8c,0xb0,0x2c); +DEFINE_GUID(IID_IVLCLogo, 0x8a4a20c2, 0x93f3, 0x44e8, 0x86,0x44, 0xbe,0xb2,0xe3,0x48,0x7e,0x84); DEFINE_GUID(IID_IVLCVideo, 0x0aaedf0b, 0xd333, 0x4b27, 0xa0,0xc6, 0xbb,0xf3,0x14,0x13,0xa4,0x2e); DEFINE_GUID(IID_IVLCControl2, 0x2d719729, 0x5333, 0x406c, 0xbf,0x12, 0x8d,0xe7,0x87,0xfd,0x65,0xe3); DEFINE_GUID(CLSID_VLCPlugin, 0xe23fe9c6, 0x778e, 0x49d4, 0xb5,0x37, 0x38,0xfc,0xde,0x48,0x87,0xd8); diff --git a/projects/activex/axvlc_idl.h b/projects/activex/axvlc_idl.h index ec6dbec88a..abd103c1ea 100644 --- a/projects/activex/axvlc_idl.h +++ b/projects/activex/axvlc_idl.h @@ -1,15 +1,108 @@ -/*** Autogenerated by WIDL 1.0 from axvlc.idl - Do not edit ***/ +/*** Autogenerated by WIDL 1.1.23 from axvlc.idl - Do not edit ***/ + #include #include #ifndef __WIDL_AXVLC_IDL_H #define __WIDL_AXVLC_IDL_H + #ifdef __cplusplus extern "C" { #endif +/* Headers for imported files */ + #include +/* Forward declarations */ + +#ifndef __IVLCControl_FWD_DEFINED__ +#define __IVLCControl_FWD_DEFINED__ +typedef interface IVLCControl IVLCControl; +#endif + +#ifndef __DVLCEvents_FWD_DEFINED__ +#define __DVLCEvents_FWD_DEFINED__ +typedef interface DVLCEvents DVLCEvents; +#endif + +#ifndef __IVLCAudio_FWD_DEFINED__ +#define __IVLCAudio_FWD_DEFINED__ +typedef interface IVLCAudio IVLCAudio; +#endif + +#ifndef __IVLCInput_FWD_DEFINED__ +#define __IVLCInput_FWD_DEFINED__ +typedef interface IVLCInput IVLCInput; +#endif + +#ifndef __IVLCMessage_FWD_DEFINED__ +#define __IVLCMessage_FWD_DEFINED__ +typedef interface IVLCMessage IVLCMessage; +#endif + +#ifndef __IVLCMessageIterator_FWD_DEFINED__ +#define __IVLCMessageIterator_FWD_DEFINED__ +typedef interface IVLCMessageIterator IVLCMessageIterator; +#endif + +#ifndef __IVLCMessages_FWD_DEFINED__ +#define __IVLCMessages_FWD_DEFINED__ +typedef interface IVLCMessages IVLCMessages; +#endif + +#ifndef __IVLCLog_FWD_DEFINED__ +#define __IVLCLog_FWD_DEFINED__ +typedef interface IVLCLog IVLCLog; +#endif + +#ifndef __IVLCPlaylistItems_FWD_DEFINED__ +#define __IVLCPlaylistItems_FWD_DEFINED__ +typedef interface IVLCPlaylistItems IVLCPlaylistItems; +#endif + +#ifndef __IVLCPlaylist_FWD_DEFINED__ +#define __IVLCPlaylist_FWD_DEFINED__ +typedef interface IVLCPlaylist IVLCPlaylist; +#endif + +#ifndef __IVLCSubtitle_FWD_DEFINED__ +#define __IVLCSubtitle_FWD_DEFINED__ +typedef interface IVLCSubtitle IVLCSubtitle; +#endif + +#ifndef __IVLCMarquee_FWD_DEFINED__ +#define __IVLCMarquee_FWD_DEFINED__ +typedef interface IVLCMarquee IVLCMarquee; +#endif + +#ifndef __IVLCLogo_FWD_DEFINED__ +#define __IVLCLogo_FWD_DEFINED__ +typedef interface IVLCLogo IVLCLogo; +#endif + +#ifndef __IVLCVideo_FWD_DEFINED__ +#define __IVLCVideo_FWD_DEFINED__ +typedef interface IVLCVideo IVLCVideo; +#endif + +#ifndef __IVLCControl2_FWD_DEFINED__ +#define __IVLCControl2_FWD_DEFINED__ +typedef interface IVLCControl2 IVLCControl2; +#endif + +#ifndef __VLCPlugin_FWD_DEFINED__ +#define __VLCPlugin_FWD_DEFINED__ +typedef struct VLCPlugin VLCPlugin; +#endif /* defined __VLCPlugin_FWD_DEFINED__ */ + +#ifndef __VLCPlugin2_FWD_DEFINED__ +#define __VLCPlugin2_FWD_DEFINED__ +typedef struct VLCPlugin2 VLCPlugin2; +#endif /* defined __VLCPlugin2_FWD_DEFINED__ */ + + + DEFINE_GUID(LIBID_AXVLC, 0xdf2bbe39, 0x40a8, 0x433b, 0xa2,0x79, 0x07,0x3f,0x48,0xda,0x94,0xb6); #ifndef __IVLCControl_FWD_DEFINED__ @@ -821,32 +914,32 @@ interface IVLCAudio : public IDispatch VARIANT_BOOL muted) = 0; virtual HRESULT STDMETHODCALLTYPE get_volume( - long *volume) = 0; + LONG *volume) = 0; virtual HRESULT STDMETHODCALLTYPE put_volume( - long volume) = 0; + LONG volume) = 0; virtual HRESULT STDMETHODCALLTYPE toggleMute( ) = 0; virtual HRESULT STDMETHODCALLTYPE get_track( - long *track) = 0; + LONG *track) = 0; virtual HRESULT STDMETHODCALLTYPE put_track( - long track) = 0; + LONG track) = 0; virtual HRESULT STDMETHODCALLTYPE get_count( - long *trackNumber) = 0; + LONG *trackNumber) = 0; virtual HRESULT STDMETHODCALLTYPE description( - long trackID, + LONG trackID, BSTR *name) = 0; virtual HRESULT STDMETHODCALLTYPE get_channel( - long *channel) = 0; + LONG *channel) = 0; virtual HRESULT STDMETHODCALLTYPE put_channel( - long channel) = 0; + LONG channel) = 0; }; #else @@ -906,39 +999,39 @@ typedef struct IVLCAudioVtbl { HRESULT (STDMETHODCALLTYPE *get_volume)( IVLCAudio* This, - long *volume); + LONG *volume); HRESULT (STDMETHODCALLTYPE *put_volume)( IVLCAudio* This, - long volume); + LONG volume); HRESULT (STDMETHODCALLTYPE *toggleMute)( IVLCAudio* This); HRESULT (STDMETHODCALLTYPE *get_track)( IVLCAudio* This, - long *track); + LONG *track); HRESULT (STDMETHODCALLTYPE *put_track)( IVLCAudio* This, - long track); + LONG track); HRESULT (STDMETHODCALLTYPE *get_count)( IVLCAudio* This, - long *trackNumber); + LONG *trackNumber); HRESULT (STDMETHODCALLTYPE *description)( IVLCAudio* This, - long trackID, + LONG trackID, BSTR *name); HRESULT (STDMETHODCALLTYPE *get_channel)( IVLCAudio* This, - long *channel); + LONG *channel); HRESULT (STDMETHODCALLTYPE *put_channel)( IVLCAudio* This, - long channel); + LONG channel); END_INTERFACE } IVLCAudioVtbl; @@ -990,7 +1083,7 @@ void __RPC_STUB IVLCAudio_put_mute_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_get_volume_Proxy( IVLCAudio* This, - long *volume); + LONG *volume); void __RPC_STUB IVLCAudio_get_volume_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -998,7 +1091,7 @@ void __RPC_STUB IVLCAudio_get_volume_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_put_volume_Proxy( IVLCAudio* This, - long volume); + LONG volume); void __RPC_STUB IVLCAudio_put_volume_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1013,7 +1106,7 @@ void __RPC_STUB IVLCAudio_toggleMute_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_get_track_Proxy( IVLCAudio* This, - long *track); + LONG *track); void __RPC_STUB IVLCAudio_get_track_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1021,7 +1114,7 @@ void __RPC_STUB IVLCAudio_get_track_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_put_track_Proxy( IVLCAudio* This, - long track); + LONG track); void __RPC_STUB IVLCAudio_put_track_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1029,7 +1122,7 @@ void __RPC_STUB IVLCAudio_put_track_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_get_count_Proxy( IVLCAudio* This, - long *trackNumber); + LONG *trackNumber); void __RPC_STUB IVLCAudio_get_count_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1037,7 +1130,7 @@ void __RPC_STUB IVLCAudio_get_count_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_description_Proxy( IVLCAudio* This, - long trackID, + LONG trackID, BSTR *name); void __RPC_STUB IVLCAudio_description_Stub( IRpcStubBuffer* This, @@ -1046,7 +1139,7 @@ void __RPC_STUB IVLCAudio_description_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_get_channel_Proxy( IVLCAudio* This, - long *channel); + LONG *channel); void __RPC_STUB IVLCAudio_get_channel_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1054,7 +1147,7 @@ void __RPC_STUB IVLCAudio_get_channel_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCAudio_put_channel_Proxy( IVLCAudio* This, - long channel); + LONG channel); void __RPC_STUB IVLCAudio_put_channel_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1089,7 +1182,7 @@ interface IVLCInput : public IDispatch double time) = 0; virtual HRESULT STDMETHODCALLTYPE get_state( - long *state) = 0; + LONG *state) = 0; virtual HRESULT STDMETHODCALLTYPE get_rate( double *rate) = 0; @@ -1173,7 +1266,7 @@ typedef struct IVLCInputVtbl { HRESULT (STDMETHODCALLTYPE *get_state)( IVLCInput* This, - long *state); + LONG *state); HRESULT (STDMETHODCALLTYPE *get_rate)( IVLCInput* This, @@ -1264,7 +1357,7 @@ void __RPC_STUB IVLCInput_put_time_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCInput_get_state_Proxy( IVLCInput* This, - long *state); + LONG *state); void __RPC_STUB IVLCInput_get_state_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1319,7 +1412,7 @@ interface IVLCMessage : public IDispatch VARIANT *message) = 0; virtual HRESULT STDMETHODCALLTYPE get_severity( - long *level) = 0; + LONG *level) = 0; virtual HRESULT STDMETHODCALLTYPE get_type( BSTR *type) = 0; @@ -1387,7 +1480,7 @@ typedef struct IVLCMessageVtbl { HRESULT (STDMETHODCALLTYPE *get_severity)( IVLCMessage* This, - long *level); + LONG *level); HRESULT (STDMETHODCALLTYPE *get_type)( IVLCMessage* This, @@ -1442,7 +1535,7 @@ void __RPC_STUB IVLCMessage_get__Value_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMessage_get_severity_Proxy( IVLCMessage* This, - long *level); + LONG *level); void __RPC_STUB IVLCMessage_get_severity_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1614,7 +1707,7 @@ interface IVLCMessages : public IDispatch ) = 0; virtual HRESULT STDMETHODCALLTYPE get_count( - long *count) = 0; + LONG *count) = 0; virtual HRESULT STDMETHODCALLTYPE iterator( IVLCMessageIterator **iter) = 0; @@ -1676,7 +1769,7 @@ typedef struct IVLCMessagesVtbl { HRESULT (STDMETHODCALLTYPE *get_count)( IVLCMessages* This, - long *count); + LONG *count); HRESULT (STDMETHODCALLTYPE *iterator)( IVLCMessages* This, @@ -1724,7 +1817,7 @@ void __RPC_STUB IVLCMessages_clear_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMessages_get_count_Proxy( IVLCMessages* This, - long *count); + LONG *count); void __RPC_STUB IVLCMessages_get_count_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1755,10 +1848,10 @@ interface IVLCLog : public IDispatch IVLCMessages **iter) = 0; virtual HRESULT STDMETHODCALLTYPE get_verbosity( - long *level) = 0; + LONG *level) = 0; virtual HRESULT STDMETHODCALLTYPE put_verbosity( - long level) = 0; + LONG level) = 0; }; #else @@ -1814,11 +1907,11 @@ typedef struct IVLCLogVtbl { HRESULT (STDMETHODCALLTYPE *get_verbosity)( IVLCLog* This, - long *level); + LONG *level); HRESULT (STDMETHODCALLTYPE *put_verbosity)( IVLCLog* This, - long level); + LONG level); END_INTERFACE } IVLCLogVtbl; @@ -1854,7 +1947,7 @@ void __RPC_STUB IVLCLog_get_messages_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCLog_get_verbosity_Proxy( IVLCLog* This, - long *level); + LONG *level); void __RPC_STUB IVLCLog_get_verbosity_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1862,7 +1955,7 @@ void __RPC_STUB IVLCLog_get_verbosity_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCLog_put_verbosity_Proxy( IVLCLog* This, - long level); + LONG level); void __RPC_STUB IVLCLog_put_verbosity_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1871,11 +1964,6 @@ void __RPC_STUB IVLCLog_put_verbosity_Stub( #endif /* __IVLCLog_INTERFACE_DEFINED__ */ -#ifndef __IVLCPlaylistItems_FWD_DEFINED__ -#define __IVLCPlaylistItems_FWD_DEFINED__ -typedef interface IVLCPlaylistItems IVLCPlaylistItems; -#endif - /***************************************************************************** * IVLCPlaylistItems interface */ @@ -1887,13 +1975,13 @@ DEFINE_GUID(IID_IVLCPlaylistItems, 0xfd37fe32, 0x82bc, 0x4a25, 0xb0,0x56, 0x31,0 interface IVLCPlaylistItems : public IDispatch { virtual HRESULT STDMETHODCALLTYPE get_count( - long *count) = 0; + LONG *count) = 0; virtual HRESULT STDMETHODCALLTYPE clear( ) = 0; virtual HRESULT STDMETHODCALLTYPE remove( - long itemId) = 0; + LONG itemId) = 0; }; #else @@ -1945,14 +2033,14 @@ typedef struct IVLCPlaylistItemsVtbl { /*** IVLCPlaylistItems methods ***/ HRESULT (STDMETHODCALLTYPE *get_count)( IVLCPlaylistItems* This, - long *count); + LONG *count); HRESULT (STDMETHODCALLTYPE *clear)( IVLCPlaylistItems* This); HRESULT (STDMETHODCALLTYPE *remove)( IVLCPlaylistItems* This, - long itemId); + LONG itemId); END_INTERFACE } IVLCPlaylistItemsVtbl; @@ -1980,7 +2068,7 @@ interface IVLCPlaylistItems { HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_get_count_Proxy( IVLCPlaylistItems* This, - long *count); + LONG *count); void __RPC_STUB IVLCPlaylistItems_get_count_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -1995,7 +2083,7 @@ void __RPC_STUB IVLCPlaylistItems_clear_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCPlaylistItems_remove_Proxy( IVLCPlaylistItems* This, - long itemId); + LONG itemId); void __RPC_STUB IVLCPlaylistItems_remove_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2015,7 +2103,7 @@ DEFINE_GUID(IID_IVLCPlaylist, 0x54613049, 0x40bf, 0x4035, 0x9e,0x70, 0x0a,0x93,0 interface IVLCPlaylist : public IDispatch { virtual HRESULT STDMETHODCALLTYPE get_itemCount( - long *count) = 0; + LONG *count) = 0; virtual HRESULT STDMETHODCALLTYPE get_isPlaying( VARIANT_BOOL *playing) = 0; @@ -2024,13 +2112,13 @@ interface IVLCPlaylist : public IDispatch BSTR uri, VARIANT name, VARIANT options, - long *itemId) = 0; + LONG *itemId) = 0; virtual HRESULT STDMETHODCALLTYPE play( ) = 0; virtual HRESULT STDMETHODCALLTYPE playItem( - long itemId) = 0; + LONG itemId) = 0; virtual HRESULT STDMETHODCALLTYPE togglePause( ) = 0; @@ -2048,7 +2136,7 @@ interface IVLCPlaylist : public IDispatch ) = 0; virtual HRESULT STDMETHODCALLTYPE removeItem( - long item) = 0; + LONG item) = 0; virtual HRESULT STDMETHODCALLTYPE get_items( IVLCPlaylistItems **obj) = 0; @@ -2103,7 +2191,7 @@ typedef struct IVLCPlaylistVtbl { /*** IVLCPlaylist methods ***/ HRESULT (STDMETHODCALLTYPE *get_itemCount)( IVLCPlaylist* This, - long *count); + LONG *count); HRESULT (STDMETHODCALLTYPE *get_isPlaying)( IVLCPlaylist* This, @@ -2114,14 +2202,14 @@ typedef struct IVLCPlaylistVtbl { BSTR uri, VARIANT name, VARIANT options, - long *itemId); + LONG *itemId); HRESULT (STDMETHODCALLTYPE *play)( IVLCPlaylist* This); HRESULT (STDMETHODCALLTYPE *playItem)( IVLCPlaylist* This, - long itemId); + LONG itemId); HRESULT (STDMETHODCALLTYPE *togglePause)( IVLCPlaylist* This); @@ -2140,7 +2228,7 @@ typedef struct IVLCPlaylistVtbl { HRESULT (STDMETHODCALLTYPE *removeItem)( IVLCPlaylist* This, - long item); + LONG item); HRESULT (STDMETHODCALLTYPE *get_items)( IVLCPlaylist* This, @@ -2181,7 +2269,7 @@ interface IVLCPlaylist { HRESULT STDMETHODCALLTYPE IVLCPlaylist_get_itemCount_Proxy( IVLCPlaylist* This, - long *count); + LONG *count); void __RPC_STUB IVLCPlaylist_get_itemCount_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2200,7 +2288,7 @@ HRESULT STDMETHODCALLTYPE IVLCPlaylist_add_Proxy( BSTR uri, VARIANT name, VARIANT options, - long *itemId); + LONG *itemId); void __RPC_STUB IVLCPlaylist_add_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2215,7 +2303,7 @@ void __RPC_STUB IVLCPlaylist_play_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCPlaylist_playItem_Proxy( IVLCPlaylist* This, - long itemId); + LONG itemId); void __RPC_STUB IVLCPlaylist_playItem_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2258,7 +2346,7 @@ void __RPC_STUB IVLCPlaylist_clear_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCPlaylist_removeItem_Proxy( IVLCPlaylist* This, - long item); + LONG item); void __RPC_STUB IVLCPlaylist_removeItem_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2286,16 +2374,16 @@ DEFINE_GUID(IID_IVLCSubtitle, 0x465e787a, 0x0556, 0x452f, 0x94,0x77, 0x95,0x4e,0 interface IVLCSubtitle : public IDispatch { virtual HRESULT STDMETHODCALLTYPE get_track( - long *spu) = 0; + LONG *spu) = 0; virtual HRESULT STDMETHODCALLTYPE put_track( - long spu) = 0; + LONG spu) = 0; virtual HRESULT STDMETHODCALLTYPE get_count( - long *spuNumber) = 0; + LONG *spuNumber) = 0; virtual HRESULT STDMETHODCALLTYPE description( - long nameID, + LONG nameID, BSTR *name) = 0; }; @@ -2348,19 +2436,19 @@ typedef struct IVLCSubtitleVtbl { /*** IVLCSubtitle methods ***/ HRESULT (STDMETHODCALLTYPE *get_track)( IVLCSubtitle* This, - long *spu); + LONG *spu); HRESULT (STDMETHODCALLTYPE *put_track)( IVLCSubtitle* This, - long spu); + LONG spu); HRESULT (STDMETHODCALLTYPE *get_count)( IVLCSubtitle* This, - long *spuNumber); + LONG *spuNumber); HRESULT (STDMETHODCALLTYPE *description)( IVLCSubtitle* This, - long nameID, + LONG nameID, BSTR *name); END_INTERFACE @@ -2390,7 +2478,7 @@ interface IVLCSubtitle { HRESULT STDMETHODCALLTYPE IVLCSubtitle_get_track_Proxy( IVLCSubtitle* This, - long *spu); + LONG *spu); void __RPC_STUB IVLCSubtitle_get_track_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2398,7 +2486,7 @@ void __RPC_STUB IVLCSubtitle_get_track_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCSubtitle_put_track_Proxy( IVLCSubtitle* This, - long spu); + LONG spu); void __RPC_STUB IVLCSubtitle_put_track_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2406,7 +2494,7 @@ void __RPC_STUB IVLCSubtitle_put_track_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCSubtitle_get_count_Proxy( IVLCSubtitle* This, - long *spuNumber); + LONG *spuNumber); void __RPC_STUB IVLCSubtitle_get_count_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2414,7 +2502,7 @@ void __RPC_STUB IVLCSubtitle_get_count_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCSubtitle_description_Proxy( IVLCSubtitle* This, - long nameID, + LONG nameID, BSTR *name); void __RPC_STUB IVLCSubtitle_description_Stub( IRpcStubBuffer* This, @@ -2444,28 +2532,28 @@ interface IVLCMarquee : public IDispatch BSTR text) = 0; virtual HRESULT STDMETHODCALLTYPE color( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE opacity( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE position( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE refresh( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE size( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE timeout( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE x( - long val) = 0; + LONG val) = 0; virtual HRESULT STDMETHODCALLTYPE y( - long val) = 0; + LONG val) = 0; }; #else @@ -2527,35 +2615,35 @@ typedef struct IVLCMarqueeVtbl { HRESULT (STDMETHODCALLTYPE *color)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *opacity)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *position)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *refresh)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *size)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *timeout)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *x)( IVLCMarquee* This, - long val); + LONG val); HRESULT (STDMETHODCALLTYPE *y)( IVLCMarquee* This, - long val); + LONG val); END_INTERFACE } IVLCMarqueeVtbl; @@ -2613,7 +2701,7 @@ void __RPC_STUB IVLCMarquee_text_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_color_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_color_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2621,7 +2709,7 @@ void __RPC_STUB IVLCMarquee_color_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_opacity_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_opacity_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2629,7 +2717,7 @@ void __RPC_STUB IVLCMarquee_opacity_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_position_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_position_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2637,7 +2725,7 @@ void __RPC_STUB IVLCMarquee_position_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_refresh_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_refresh_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2645,7 +2733,7 @@ void __RPC_STUB IVLCMarquee_refresh_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_size_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_size_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2653,7 +2741,7 @@ void __RPC_STUB IVLCMarquee_size_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_timeout_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_timeout_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2661,7 +2749,7 @@ void __RPC_STUB IVLCMarquee_timeout_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_x_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_x_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2669,7 +2757,7 @@ void __RPC_STUB IVLCMarquee_x_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCMarquee_y_Proxy( IVLCMarquee* This, - long val); + LONG val); void __RPC_STUB IVLCMarquee_y_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2678,6 +2766,324 @@ void __RPC_STUB IVLCMarquee_y_Stub( #endif /* __IVLCMarquee_INTERFACE_DEFINED__ */ +/***************************************************************************** + * IVLCLogo interface + */ +#ifndef __IVLCLogo_INTERFACE_DEFINED__ +#define __IVLCLogo_INTERFACE_DEFINED__ + +DEFINE_GUID(IID_IVLCLogo, 0x8a4a20c2, 0x93f3, 0x44e8, 0x86,0x44, 0xbe,0xb2,0xe3,0x48,0x7e,0x84); +#if defined(__cplusplus) && !defined(CINTERFACE) +interface IVLCLogo : public IDispatch +{ + virtual HRESULT STDMETHODCALLTYPE enable( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE disable( + ) = 0; + + virtual HRESULT STDMETHODCALLTYPE file( + BSTR fname) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_delay( + LONG *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_delay( + LONG val) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_repeat( + LONG *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_repeat( + LONG val) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_opacity( + LONG *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_opacity( + LONG val) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_position( + BSTR *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_position( + BSTR val) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_x( + LONG *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_x( + LONG val) = 0; + + virtual HRESULT STDMETHODCALLTYPE get_y( + LONG *val) = 0; + + virtual HRESULT STDMETHODCALLTYPE put_y( + LONG val) = 0; + +}; +#else +typedef struct IVLCLogoVtbl { + BEGIN_INTERFACE + + /*** IUnknown methods ***/ + HRESULT (STDMETHODCALLTYPE *QueryInterface)( + IVLCLogo* This, + REFIID riid, + void **ppvObject); + + ULONG (STDMETHODCALLTYPE *AddRef)( + IVLCLogo* This); + + ULONG (STDMETHODCALLTYPE *Release)( + IVLCLogo* This); + + /*** IDispatch methods ***/ + HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)( + IVLCLogo* This, + UINT *pctinfo); + + HRESULT (STDMETHODCALLTYPE *GetTypeInfo)( + IVLCLogo* This, + UINT iTInfo, + LCID lcid, + ITypeInfo **ppTInfo); + + HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)( + IVLCLogo* This, + REFIID riid, + LPOLESTR *rgszNames, + UINT cNames, + LCID lcid, + DISPID *rgDispId); + + HRESULT (STDMETHODCALLTYPE *Invoke)( + IVLCLogo* This, + DISPID dispIdMember, + REFIID riid, + LCID lcid, + WORD wFlags, + DISPPARAMS *pDispParams, + VARIANT *pVarResult, + EXCEPINFO *pExcepInfo, + UINT *puArgErr); + + /*** IVLCLogo methods ***/ + HRESULT (STDMETHODCALLTYPE *enable)( + IVLCLogo* This); + + HRESULT (STDMETHODCALLTYPE *disable)( + IVLCLogo* This); + + HRESULT (STDMETHODCALLTYPE *file)( + IVLCLogo* This, + BSTR fname); + + HRESULT (STDMETHODCALLTYPE *get_delay)( + IVLCLogo* This, + LONG *val); + + HRESULT (STDMETHODCALLTYPE *put_delay)( + IVLCLogo* This, + LONG val); + + HRESULT (STDMETHODCALLTYPE *get_repeat)( + IVLCLogo* This, + LONG *val); + + HRESULT (STDMETHODCALLTYPE *put_repeat)( + IVLCLogo* This, + LONG val); + + HRESULT (STDMETHODCALLTYPE *get_opacity)( + IVLCLogo* This, + LONG *val); + + HRESULT (STDMETHODCALLTYPE *put_opacity)( + IVLCLogo* This, + LONG val); + + HRESULT (STDMETHODCALLTYPE *get_position)( + IVLCLogo* This, + BSTR *val); + + HRESULT (STDMETHODCALLTYPE *put_position)( + IVLCLogo* This, + BSTR val); + + HRESULT (STDMETHODCALLTYPE *get_x)( + IVLCLogo* This, + LONG *val); + + HRESULT (STDMETHODCALLTYPE *put_x)( + IVLCLogo* This, + LONG val); + + HRESULT (STDMETHODCALLTYPE *get_y)( + IVLCLogo* This, + LONG *val); + + HRESULT (STDMETHODCALLTYPE *put_y)( + IVLCLogo* This, + LONG val); + + END_INTERFACE +} IVLCLogoVtbl; +interface IVLCLogo { + CONST_VTBL IVLCLogoVtbl* lpVtbl; +}; + +#ifdef COBJMACROS +/*** IUnknown methods ***/ +#define IVLCLogo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject) +#define IVLCLogo_AddRef(This) (This)->lpVtbl->AddRef(This) +#define IVLCLogo_Release(This) (This)->lpVtbl->Release(This) +/*** IDispatch methods ***/ +#define IVLCLogo_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo) +#define IVLCLogo_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo) +#define IVLCLogo_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) +#define IVLCLogo_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) +/*** IVLCLogo methods ***/ +#define IVLCLogo_enable(This) (This)->lpVtbl->enable(This) +#define IVLCLogo_disable(This) (This)->lpVtbl->disable(This) +#define IVLCLogo_file(This,fname) (This)->lpVtbl->file(This,fname) +#define IVLCLogo_get_delay(This,val) (This)->lpVtbl->get_delay(This,val) +#define IVLCLogo_put_delay(This,val) (This)->lpVtbl->put_delay(This,val) +#define IVLCLogo_get_repeat(This,val) (This)->lpVtbl->get_repeat(This,val) +#define IVLCLogo_put_repeat(This,val) (This)->lpVtbl->put_repeat(This,val) +#define IVLCLogo_get_opacity(This,val) (This)->lpVtbl->get_opacity(This,val) +#define IVLCLogo_put_opacity(This,val) (This)->lpVtbl->put_opacity(This,val) +#define IVLCLogo_get_position(This,val) (This)->lpVtbl->get_position(This,val) +#define IVLCLogo_put_position(This,val) (This)->lpVtbl->put_position(This,val) +#define IVLCLogo_get_x(This,val) (This)->lpVtbl->get_x(This,val) +#define IVLCLogo_put_x(This,val) (This)->lpVtbl->put_x(This,val) +#define IVLCLogo_get_y(This,val) (This)->lpVtbl->get_y(This,val) +#define IVLCLogo_put_y(This,val) (This)->lpVtbl->put_y(This,val) +#endif + +#endif + +HRESULT STDMETHODCALLTYPE IVLCLogo_enable_Proxy( + IVLCLogo* This); +void __RPC_STUB IVLCLogo_enable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_disable_Proxy( + IVLCLogo* This); +void __RPC_STUB IVLCLogo_disable_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_file_Proxy( + IVLCLogo* This, + BSTR fname); +void __RPC_STUB IVLCLogo_file_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_delay_Proxy( + IVLCLogo* This, + LONG *val); +void __RPC_STUB IVLCLogo_get_delay_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_delay_Proxy( + IVLCLogo* This, + LONG val); +void __RPC_STUB IVLCLogo_put_delay_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_repeat_Proxy( + IVLCLogo* This, + LONG *val); +void __RPC_STUB IVLCLogo_get_repeat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_repeat_Proxy( + IVLCLogo* This, + LONG val); +void __RPC_STUB IVLCLogo_put_repeat_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_opacity_Proxy( + IVLCLogo* This, + LONG *val); +void __RPC_STUB IVLCLogo_get_opacity_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_opacity_Proxy( + IVLCLogo* This, + LONG val); +void __RPC_STUB IVLCLogo_put_opacity_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_position_Proxy( + IVLCLogo* This, + BSTR *val); +void __RPC_STUB IVLCLogo_get_position_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_position_Proxy( + IVLCLogo* This, + BSTR val); +void __RPC_STUB IVLCLogo_put_position_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_x_Proxy( + IVLCLogo* This, + LONG *val); +void __RPC_STUB IVLCLogo_get_x_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_x_Proxy( + IVLCLogo* This, + LONG val); +void __RPC_STUB IVLCLogo_put_x_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_get_y_Proxy( + IVLCLogo* This, + LONG *val); +void __RPC_STUB IVLCLogo_get_y_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCLogo_put_y_Proxy( + IVLCLogo* This, + LONG val); +void __RPC_STUB IVLCLogo_put_y_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); + +#endif /* __IVLCLogo_INTERFACE_DEFINED__ */ + /***************************************************************************** * IVLCVideo interface */ @@ -2695,10 +3101,10 @@ interface IVLCVideo : public IDispatch VARIANT_BOOL fullscreen) = 0; virtual HRESULT STDMETHODCALLTYPE get_width( - long *width) = 0; + LONG *width) = 0; virtual HRESULT STDMETHODCALLTYPE get_height( - long *height) = 0; + LONG *height) = 0; virtual HRESULT STDMETHODCALLTYPE get_aspectRatio( BSTR *aspect) = 0; @@ -2707,10 +3113,10 @@ interface IVLCVideo : public IDispatch BSTR aspect) = 0; virtual HRESULT STDMETHODCALLTYPE get_subtitle( - long *spu) = 0; + LONG *spu) = 0; virtual HRESULT STDMETHODCALLTYPE put_subtitle( - long spu) = 0; + LONG spu) = 0; virtual HRESULT STDMETHODCALLTYPE get_crop( BSTR *geometry) = 0; @@ -2719,10 +3125,10 @@ interface IVLCVideo : public IDispatch BSTR geometry) = 0; virtual HRESULT STDMETHODCALLTYPE get_teletext( - long *page) = 0; + LONG *page) = 0; virtual HRESULT STDMETHODCALLTYPE put_teletext( - long page) = 0; + LONG page) = 0; virtual HRESULT STDMETHODCALLTYPE deinterlaceEnable( BSTR mode) = 0; @@ -2742,6 +3148,9 @@ interface IVLCVideo : public IDispatch virtual HRESULT STDMETHODCALLTYPE get_marquee( IVLCMarquee **obj) = 0; + virtual HRESULT STDMETHODCALLTYPE get_logo( + IVLCLogo **obj) = 0; + }; #else typedef struct IVLCVideoVtbl { @@ -2800,11 +3209,11 @@ typedef struct IVLCVideoVtbl { HRESULT (STDMETHODCALLTYPE *get_width)( IVLCVideo* This, - long *width); + LONG *width); HRESULT (STDMETHODCALLTYPE *get_height)( IVLCVideo* This, - long *height); + LONG *height); HRESULT (STDMETHODCALLTYPE *get_aspectRatio)( IVLCVideo* This, @@ -2816,11 +3225,11 @@ typedef struct IVLCVideoVtbl { HRESULT (STDMETHODCALLTYPE *get_subtitle)( IVLCVideo* This, - long *spu); + LONG *spu); HRESULT (STDMETHODCALLTYPE *put_subtitle)( IVLCVideo* This, - long spu); + LONG spu); HRESULT (STDMETHODCALLTYPE *get_crop)( IVLCVideo* This, @@ -2832,11 +3241,11 @@ typedef struct IVLCVideoVtbl { HRESULT (STDMETHODCALLTYPE *get_teletext)( IVLCVideo* This, - long *page); + LONG *page); HRESULT (STDMETHODCALLTYPE *put_teletext)( IVLCVideo* This, - long page); + LONG page); HRESULT (STDMETHODCALLTYPE *deinterlaceEnable)( IVLCVideo* This, @@ -2859,6 +3268,10 @@ typedef struct IVLCVideoVtbl { IVLCVideo* This, IVLCMarquee **obj); + HRESULT (STDMETHODCALLTYPE *get_logo)( + IVLCVideo* This, + IVLCLogo **obj); + END_INTERFACE } IVLCVideoVtbl; interface IVLCVideo { @@ -2894,6 +3307,7 @@ interface IVLCVideo { #define IVLCVideo_takeSnapshot(This,picture) (This)->lpVtbl->takeSnapshot(This,picture) #define IVLCVideo_toggleTeletext(This) (This)->lpVtbl->toggleTeletext(This) #define IVLCVideo_get_marquee(This,obj) (This)->lpVtbl->get_marquee(This,obj) +#define IVLCVideo_get_logo(This,obj) (This)->lpVtbl->get_logo(This,obj) #endif #endif @@ -2916,7 +3330,7 @@ void __RPC_STUB IVLCVideo_put_fullscreen_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_get_width_Proxy( IVLCVideo* This, - long *width); + LONG *width); void __RPC_STUB IVLCVideo_get_width_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2924,7 +3338,7 @@ void __RPC_STUB IVLCVideo_get_width_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_get_height_Proxy( IVLCVideo* This, - long *height); + LONG *height); void __RPC_STUB IVLCVideo_get_height_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2948,7 +3362,7 @@ void __RPC_STUB IVLCVideo_put_aspectRatio_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_get_subtitle_Proxy( IVLCVideo* This, - long *spu); + LONG *spu); void __RPC_STUB IVLCVideo_get_subtitle_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2956,7 +3370,7 @@ void __RPC_STUB IVLCVideo_get_subtitle_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_put_subtitle_Proxy( IVLCVideo* This, - long spu); + LONG spu); void __RPC_STUB IVLCVideo_put_subtitle_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2980,7 +3394,7 @@ void __RPC_STUB IVLCVideo_put_crop_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_get_teletext_Proxy( IVLCVideo* This, - long *page); + LONG *page); void __RPC_STUB IVLCVideo_get_teletext_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -2988,7 +3402,7 @@ void __RPC_STUB IVLCVideo_get_teletext_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCVideo_put_teletext_Proxy( IVLCVideo* This, - long page); + LONG page); void __RPC_STUB IVLCVideo_put_teletext_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -3039,6 +3453,14 @@ void __RPC_STUB IVLCVideo_get_marquee_Stub( IRpcChannelBuffer* pRpcChannelBuffer, PRPC_MESSAGE pRpcMessage, DWORD* pdwStubPhase); +HRESULT STDMETHODCALLTYPE IVLCVideo_get_logo_Proxy( + IVLCVideo* This, + IVLCLogo **obj); +void __RPC_STUB IVLCVideo_get_logo_Stub( + IRpcStubBuffer* This, + IRpcChannelBuffer* pRpcChannelBuffer, + PRPC_MESSAGE pRpcMessage, + DWORD* pdwStubPhase); #endif /* __IVLCVideo_INTERFACE_DEFINED__ */ @@ -3071,10 +3493,10 @@ interface IVLCControl2 : public IDispatch BSTR url) = 0; virtual HRESULT STDMETHODCALLTYPE get_StartTime( - long *seconds) = 0; + LONG *seconds) = 0; virtual HRESULT STDMETHODCALLTYPE put_StartTime( - long seconds) = 0; + LONG seconds) = 0; virtual HRESULT STDMETHODCALLTYPE get_MRL( BSTR *mrl) = 0; @@ -3092,10 +3514,10 @@ interface IVLCControl2 : public IDispatch VARIANT_BOOL visible) = 0; virtual HRESULT STDMETHODCALLTYPE get_Volume( - long *volume) = 0; + LONG *volume) = 0; virtual HRESULT STDMETHODCALLTYPE put_Volume( - long volume) = 0; + LONG volume) = 0; virtual HRESULT STDMETHODCALLTYPE get_BackColor( OLE_COLOR *backcolor) = 0; @@ -3201,11 +3623,11 @@ typedef struct IVLCControl2Vtbl { HRESULT (STDMETHODCALLTYPE *get_StartTime)( IVLCControl2* This, - long *seconds); + LONG *seconds); HRESULT (STDMETHODCALLTYPE *put_StartTime)( IVLCControl2* This, - long seconds); + LONG seconds); HRESULT (STDMETHODCALLTYPE *get_MRL)( IVLCControl2* This, @@ -3229,11 +3651,11 @@ typedef struct IVLCControl2Vtbl { HRESULT (STDMETHODCALLTYPE *get_Volume)( IVLCControl2* This, - long *volume); + LONG *volume); HRESULT (STDMETHODCALLTYPE *put_Volume)( IVLCControl2* This, - long volume); + LONG volume); HRESULT (STDMETHODCALLTYPE *get_BackColor)( IVLCControl2* This, @@ -3371,7 +3793,7 @@ void __RPC_STUB IVLCControl2_put_BaseURL_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCControl2_get_StartTime_Proxy( IVLCControl2* This, - long *seconds); + LONG *seconds); void __RPC_STUB IVLCControl2_get_StartTime_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -3379,7 +3801,7 @@ void __RPC_STUB IVLCControl2_get_StartTime_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCControl2_put_StartTime_Proxy( IVLCControl2* This, - long seconds); + LONG seconds); void __RPC_STUB IVLCControl2_put_StartTime_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -3427,7 +3849,7 @@ void __RPC_STUB IVLCControl2_put_Visible_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCControl2_get_Volume_Proxy( IVLCControl2* This, - long *volume); + LONG *volume); void __RPC_STUB IVLCControl2_get_Volume_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -3435,7 +3857,7 @@ void __RPC_STUB IVLCControl2_get_Volume_Stub( DWORD* pdwStubPhase); HRESULT STDMETHODCALLTYPE IVLCControl2_put_Volume_Proxy( IVLCControl2* This, - long volume); + LONG volume); void __RPC_STUB IVLCControl2_put_Volume_Stub( IRpcStubBuffer* This, IRpcChannelBuffer* pRpcChannelBuffer, @@ -3530,22 +3952,12 @@ void __RPC_STUB IVLCControl2_get_video_Stub( DEFINE_GUID(CLSID_VLCPlugin, 0xe23fe9c6, 0x778e, 0x49d4, 0xb5,0x37, 0x38,0xfc,0xde,0x48,0x87,0xd8); -#ifndef __VLCPlugin_FWD_DEFINED__ -#define __VLCPlugin_FWD_DEFINED__ -typedef struct VLCPlugin VLCPlugin; -#endif /* defined __VLCPlugin_FWD_DEFINED__ */ - /***************************************************************************** * VLCPlugin2 coclass */ DEFINE_GUID(CLSID_VLCPlugin2, 0x9be31822, 0xfdad, 0x461b, 0xad,0x51, 0xbe,0x1d,0x1c,0x15,0x99,0x21); -#ifndef __VLCPlugin2_FWD_DEFINED__ -#define __VLCPlugin2_FWD_DEFINED__ -typedef struct VLCPlugin2 VLCPlugin2; -#endif /* defined __VLCPlugin2_FWD_DEFINED__ */ - /* Begin additional prototypes for all interfaces */ ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *); diff --git a/projects/activex/test.html b/projects/activex/test.html index 9edd87ed61..9c3c323575 100644 --- a/projects/activex/test.html +++ b/projects/activex/test.html @@ -235,14 +235,12 @@ Insert Slider widget @@ -786,27 +784,23 @@ function doMarqueeOption(option, value) function doLogoOption(option, value) { var vlc = getVLC("vlc"); - val = parseInt(value); if( vlc ) { if (option == 1) - vlc.video.logo.file(val); + vlc.video.logo.file(value); if (option == 2) - vlc.video.logo.transparency(val); + vlc.video.logo.position = value; + val = parseInt(value); if (option == 3) - vlc.video.logo.position(val); + vlc.video.logo.opacity = val; if (option == 4) - vlc.video.logo.repeat(val); + vlc.video.logo.repeat = val; if (option == 5) - vlc.video.logo.delay(val); + vlc.video.logo.delay = val; if (option == 6) - vlc.video.logo.x(val); + vlc.video.logo.x = val; if (option == 7) - vlc.video.logo.y(val); - if (option == 8) - vlc.video.logo.width(val); - if (option == 9) - vlc.video.logo.height(val); + vlc.video.logo.y = val; } } diff --git a/projects/activex/vlccontrol2.cpp b/projects/activex/vlccontrol2.cpp index 05080bc0da..f4d639e400 100644 --- a/projects/activex/vlccontrol2.cpp +++ b/projects/activex/vlccontrol2.cpp @@ -2,6 +2,7 @@ * vlccontrol2.cpp: ActiveX control for VLC ***************************************************************************** * Copyright (C) 2006 the VideoLAN team + * Copyright (C) 2010 M2X BV * * Authors: Damien Fouilleul * Jean-Paul Saman @@ -21,17 +22,16 @@ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#include "plugin.h" -#include "vlccontrol2.h" -#include "vlccontrol.h" - -#include "utils.h" - #include #include #include #include +#include "utils.h" +#include "plugin.h" +#include "vlccontrol2.h" +#include "vlccontrol.h" + static inline HRESULT _exception_bridge(VLCPlugin *p,REFIID riid, libvlc_exception_t *ex) @@ -55,6 +55,7 @@ EMIT_EXCEPTION_BRIDGE( VLCMarquee ) EMIT_EXCEPTION_BRIDGE( VLCMessageIterator ) EMIT_EXCEPTION_BRIDGE( VLCMessages ) EMIT_EXCEPTION_BRIDGE( VLCLog ) +EMIT_EXCEPTION_BRIDGE( VLCLogo ) EMIT_EXCEPTION_BRIDGE( VLCPlaylistItems ) EMIT_EXCEPTION_BRIDGE( VLCPlaylist ) EMIT_EXCEPTION_BRIDGE( VLCVideo ) @@ -335,7 +336,7 @@ STDMETHODIMP VLCAudio::toggleMute() return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCInput::~VLCInput() { @@ -594,7 +595,7 @@ STDMETHODIMP VLCInput::get_hasVout(VARIANT_BOOL* hasVout) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCLog::~VLCLog() { @@ -742,7 +743,7 @@ STDMETHODIMP VLCLog::put_verbosity(long verbosity) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCMarquee::~VLCMarquee() { @@ -988,7 +989,7 @@ STDMETHODIMP VLCMarquee::y(long val) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ /* STL forward iterator used by VLCEnumIterator class to implement IEnumVARIANT */ @@ -1196,7 +1197,7 @@ STDMETHODIMP VLCMessages::iterator(IVLCMessageIterator** iter) return *iter ? S_OK : E_OUTOFMEMORY; }; -/*******************************************************************************/ +/****************************************************************************/ VLCMessageIterator::VLCMessageIterator(VLCPlugin *p_instance, VLCLog* p_vlclog ) : _p_instance(p_instance), @@ -1333,7 +1334,7 @@ STDMETHODIMP VLCMessageIterator::next(IVLCMessage** message) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCMessage::~VLCMessage() { @@ -1493,7 +1494,7 @@ STDMETHODIMP VLCMessage::get_message(BSTR* message) return NOERROR; }; -/*******************************************************************************/ +/****************************************************************************/ VLCPlaylistItems::~VLCPlaylistItems() { @@ -1608,7 +1609,7 @@ STDMETHODIMP VLCPlaylistItems::remove(long item) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCPlaylist::~VLCPlaylist() { @@ -1902,7 +1903,7 @@ STDMETHODIMP VLCPlaylist::get_items(IVLCPlaylistItems** obj) return E_OUTOFMEMORY; }; -/*******************************************************************************/ +/****************************************************************************/ VLCSubtitle::~VLCSubtitle() { @@ -2085,11 +2086,12 @@ STDMETHODIMP VLCSubtitle::description(long nameID, BSTR* name) return hr; }; -/*******************************************************************************/ +/****************************************************************************/ VLCVideo::~VLCVideo() { delete _p_vlcmarquee; + delete _p_vlclogo; if( _p_typeinfo ) _p_typeinfo->Release(); }; @@ -2585,24 +2587,213 @@ STDMETHODIMP VLCVideo::get_marquee(IVLCMarquee** obj) return E_OUTOFMEMORY; }; -/*******************************************************************************/ +STDMETHODIMP VLCVideo::get_logo(IVLCLogo** obj) +{ + if( NULL == obj ) + return E_POINTER; + + *obj = _p_vlclogo; + if( NULL != _p_vlclogo ) + { + _p_vlclogo->AddRef(); + return NOERROR; + } + return E_OUTOFMEMORY; +} + + +/****************************************************************************/ + +HRESULT VLCLogo::loadTypeInfo(void) +{ + HRESULT hr = NOERROR; + if( NULL == _p_typeinfo ) + { + ITypeLib *p_typelib; + + hr = _p_instance->getTypeLib(LOCALE_USER_DEFAULT, &p_typelib); + if( SUCCEEDED(hr) ) + { + hr = p_typelib->GetTypeInfoOfGuid(IID_IVLCLogo, &_p_typeinfo); + if( FAILED(hr) ) + { + _p_typeinfo = NULL; + } + p_typelib->Release(); + } + } + return hr; +} + +STDMETHODIMP VLCLogo::GetTypeInfoCount(UINT* pctInfo) +{ + if( NULL == pctInfo ) + return E_INVALIDARG; + + if( SUCCEEDED(loadTypeInfo()) ) + *pctInfo = 1; + else + *pctInfo = 0; + + return NOERROR; +} + +STDMETHODIMP VLCLogo::GetTypeInfo(UINT iTInfo, LCID lcid, LPTYPEINFO* ppTInfo) +{ + if( NULL == ppTInfo ) + return E_INVALIDARG; + + if( SUCCEEDED(loadTypeInfo()) ) + { + _p_typeinfo->AddRef(); + *ppTInfo = _p_typeinfo; + return NOERROR; + } + *ppTInfo = NULL; + return E_NOTIMPL; +} + +STDMETHODIMP VLCLogo::GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, + UINT cNames, LCID lcid, DISPID* rgDispID) +{ + if( SUCCEEDED(loadTypeInfo()) ) + return DispGetIDsOfNames(_p_typeinfo, rgszNames, cNames, rgDispID); + return E_NOTIMPL; +} + +STDMETHODIMP VLCLogo::Invoke(DISPID dispIdMember, REFIID riid, + LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, + VARIANT* pVarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr) +{ + if( SUCCEEDED(loadTypeInfo()) ) + { + return DispInvoke(this, _p_typeinfo, dispIdMember, wFlags, + pDispParams, pVarResult, pExcepInfo, puArgErr); + } + return E_NOTIMPL; +} + + +HRESULT VLCLogo::do_put_int(unsigned idx, LONG val) +{ + libvlc_media_player_t *p_md; + HRESULT hr = _p_instance->getMD(&p_md); + if( SUCCEEDED(hr) ) + { + libvlc_exception_t ex; + libvlc_exception_init(&ex); + libvlc_video_set_logo_int(p_md, idx, val, &ex); + hr = exception_bridge(&ex); + } + return hr; +} + +HRESULT VLCLogo::do_get_int(unsigned idx, LONG *val) +{ + if( NULL == val ) + return E_POINTER; + + libvlc_media_player_t *p_md; + HRESULT hr = _p_instance->getMD(&p_md); + if( SUCCEEDED(hr) ) + { + libvlc_exception_t ex; + libvlc_exception_init(&ex); + *val = libvlc_video_get_logo_int(p_md, idx, &ex); + hr = exception_bridge(&ex); + } + return hr; +} +STDMETHODIMP VLCLogo::file(BSTR fname) +{ + libvlc_media_player_t *p_md; + HRESULT hr = _p_instance->getMD(&p_md); + + char *n = CStrFromBSTR(CP_UTF8, fname); + if( !n ) hr = E_OUTOFMEMORY; + + if( SUCCEEDED(hr) ) + { + libvlc_exception_t ex; + libvlc_exception_init(&ex); + libvlc_video_set_logo_string(p_md, libvlc_logo_file, n, &ex); + hr = exception_bridge(&ex); + } + + CoTaskMemFree(n); + return hr; +} + +struct posidx_s { const char *n; size_t i; }; +static const posidx_s posidx[] = { + { "center", 0 }, + { "left", 1 }, + { "right", 2 }, + { "top", 4 }, + { "bottom", 8 }, + { "top-left", 5 }, + { "top-right", 6 }, + { "bottom-left", 9 }, + { "bottom-right", 10 }, +}; +enum { num_posidx = sizeof(posidx)/sizeof(*posidx) }; +STDMETHODIMP VLCLogo::get_position(BSTR* val) +{ + if( NULL == val ) + return E_POINTER; + + LONG i; + HRESULT hr = do_get_int(libvlc_logo_position, &i); + + if(SUCCEEDED(hr)) + { + const char *n="undefined"; + + for( const posidx_s *h=posidx; hi ) + { + n=h->n; + break; + } + *val = BSTRFromCStr(CP_UTF8, n); + } + return hr; +} +STDMETHODIMP VLCLogo::put_position(BSTR val) +{ + char *n = CStrFromBSTR(CP_UTF8, val); + if( !n ) return E_OUTOFMEMORY; + + HRESULT hr = E_NOTIMPL; + + const posidx_s *h; + for( h=posidx; hn ) ) + { + hr = do_put_int(libvlc_logo_position,h->i); + break; + } + + if( h == posidx+num_posidx ) + hr = E_INVALIDARG; + + CoTaskMemFree(n); + return hr; +} + +/****************************************************************************/ VLCControl2::VLCControl2(VLCPlugin *p_instance) : _p_instance(p_instance), _p_typeinfo(NULL), - _p_vlcaudio(NULL), - _p_vlcinput(NULL), - _p_vlcplaylist(NULL), - _p_vlcsubtitle(NULL), - _p_vlcvideo(NULL) -{ - _p_vlcaudio = new VLCAudio(p_instance); - _p_vlcinput = new VLCInput(p_instance); - _p_vlclog = new VLCLog(p_instance); - _p_vlcplaylist = new VLCPlaylist(p_instance); - _p_vlcsubtitle = new VLCSubtitle(p_instance); - _p_vlcvideo = new VLCVideo(p_instance); -}; + _p_vlcaudio(new VLCAudio(p_instance)), + _p_vlcinput(new VLCInput(p_instance)), + _p_vlclog(new VLCLog(p_instance)), + _p_vlcplaylist(new VLCPlaylist(p_instance)), + _p_vlcsubtitle(new VLCSubtitle(p_instance)), + _p_vlcvideo(new VLCVideo(p_instance)) +{ +} VLCControl2::~VLCControl2() { diff --git a/projects/activex/vlccontrol2.h b/projects/activex/vlccontrol2.h index 342116ae10..30ad2cdbff 100644 --- a/projects/activex/vlccontrol2.h +++ b/projects/activex/vlccontrol2.h @@ -27,6 +27,7 @@ #include "axvlc_idl.h" #include +#include class VLCAudio : public IVLCAudio { @@ -436,6 +437,73 @@ private: }; + +class VLCLogo : public IVLCLogo +{ +public: + VLCLogo(VLCPlugin *p): _p_instance(p), _p_typeinfo(NULL) { } + virtual ~VLCLogo() { if( _p_typeinfo ) _p_typeinfo->Release(); } + + // IUnknown methods + STDMETHODIMP QueryInterface(REFIID riid, void **ppv) + { + if( NULL == ppv ) + return E_POINTER; + if( (IID_IUnknown == riid) + || (IID_IDispatch == riid) + || (IID_IVLCLogo == riid) ) + { + AddRef(); + *ppv = reinterpret_cast(this); + return NOERROR; + } + // behaves as a standalone object + return E_NOINTERFACE; + }; + + STDMETHODIMP_(ULONG) AddRef(void) { return _p_instance->pUnkOuter->AddRef(); } + STDMETHODIMP_(ULONG) Release(void) { return _p_instance->pUnkOuter->Release(); } + + // IDispatch methods + STDMETHODIMP GetTypeInfoCount(UINT*); + STDMETHODIMP GetTypeInfo(UINT, LCID, LPTYPEINFO*); + STDMETHODIMP GetIDsOfNames(REFIID,LPOLESTR*,UINT,LCID,DISPID*); + STDMETHODIMP Invoke(DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*); + + STDMETHODIMP enable() { return do_put_int(libvlc_logo_enable, true); } + STDMETHODIMP disable() { return do_put_int(libvlc_logo_enable, false); } + + STDMETHODIMP file(BSTR fname); + +#define PROP_INT( a ) \ + STDMETHODIMP get_##a(LONG *val) \ + { return do_get_int(libvlc_logo_##a,val); } \ + STDMETHODIMP put_##a(LONG val) \ + { return do_put_int(libvlc_logo_##a,val); } + + PROP_INT( delay ) + PROP_INT( repeat ) + PROP_INT( opacity ) + PROP_INT( x ) + PROP_INT( y ) + +#undef PROP_INT + + STDMETHODIMP get_position(BSTR* val); + STDMETHODIMP put_position(BSTR val); + +protected: + HRESULT loadTypeInfo(); + HRESULT exception_bridge(libvlc_exception_t *ex); + +private: + VLCPlugin* _p_instance; + ITypeInfo* _p_typeinfo; + + HRESULT do_put_int(unsigned idx, LONG val); + HRESULT do_get_int(unsigned idx, LONG *val); +}; + class VLCPlaylistItems : public IVLCPlaylistItems { public: @@ -602,10 +670,8 @@ public: VLCVideo(VLCPlugin *p_instance) : _p_instance(p_instance), _p_typeinfo(NULL), - _p_vlcmarquee(NULL) - { - _p_vlcmarquee = new VLCMarquee(p_instance); - }; + _p_vlcmarquee(new VLCMarquee(p_instance)), + _p_vlclogo(new VLCLogo(p_instance)) { } virtual ~VLCVideo(); // IUnknown methods @@ -648,6 +714,7 @@ public: STDMETHODIMP get_teletext(long*); STDMETHODIMP put_teletext(long); STDMETHODIMP get_marquee(IVLCMarquee**); + STDMETHODIMP get_logo(IVLCLogo**); STDMETHODIMP deinterlaceDisable(); STDMETHODIMP deinterlaceEnable(BSTR); STDMETHODIMP takeSnapshot(LPPICTUREDISP*); @@ -662,7 +729,7 @@ private: VLCPlugin* _p_instance; ITypeInfo* _p_typeinfo; VLCMarquee* _p_vlcmarquee; - + VLCLogo* _p_vlclogo; }; class VLCControl2 : public IVLCControl2