]> git.sesse.net Git - vlc/commitdiff
Update activex plugin and test page for new logo interface.
authorJP Dinger <jpd@m2x.nl>
Tue, 19 Jan 2010 13:41:12 +0000 (14:41 +0100)
committerJP Dinger <jpd@m2x.nl>
Tue, 19 Jan 2010 16:53:20 +0000 (17:53 +0100)
projects/activex/axvlc.idl
projects/activex/axvlc_idl.c
projects/activex/axvlc_idl.h
projects/activex/test.html
projects/activex/vlccontrol2.cpp
projects/activex/vlccontrol2.h

index 6e131ff2ac7c8561096986255b5838d1cf0f9a28..dba31d553ce15f7be7f30291e048c48f0fdab8e1 100644 (file)
@@ -2,6 +2,7 @@
  * axvlc.idl: ActiveX control for VLC\r
  *****************************************************************************\r
  * Copyright (C) 2006 the VideoLAN team\r
+ * Copyright (C) 2010 M2X BV\r
  *\r
  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>\r
  *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>\r
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.\r
  *****************************************************************************/\r
 \r
-//comments terminated by [t] are by tonsofpcs, regarding the string review.  April 02, 2006. [t]\r
-//Possibly change all instances of "the current playlist" to "the playlist" and "current playlist" to "the playlist" [t]\r
+// comments terminated by [t] are by tonsofpcs, regarding the string\r
+// review. April 02, 2006. [t]\r
+// Possibly change all instances of "the current playlist" to "the\r
+// playlist" and "current playlist" to "the playlist" [t]\r
 \r
 import "ocidl.idl";\r
 \r
@@ -129,13 +132,13 @@ library AXVLC
         HRESULT setVariable([in] BSTR name, [in] VARIANT value);\r
         [helpstring("Returns the value of a VLC variable.")]\r
         HRESULT getVariable([in] BSTR name, [out, retval] VARIANT *value);\r
-        [helpstring("Add an item to the playlist.")]\r
 \r
 /*\r
 ** use VARIANT rather than a SAFEARRAY as argument type\r
 ** for compatibility with some scripting language (JScript)\r
 */\r
 \r
+        [helpstring("Add an item to the playlist.")]\r
         HRESULT addTarget([in] BSTR uri, [in] VARIANT options, [in] enum VLCPlaylistMode mode, [in] int position);\r
         [propget, helpstring("Returns index of current item in playlist.")]\r
         HRESULT PlaylistIndex([out, retval] int* index);\r
@@ -463,6 +466,54 @@ library AXVLC
         HRESULT y ([in] long val);\r
     };\r
 \r
+    [\r
+      odl,\r
+      uuid(8a4a20c2-93f3-44e8-8644-beb2e3487e84),\r
+      helpstring("VLC Logo Filter"),\r
+      dual,\r
+      oleautomation\r
+    ]\r
+    interface IVLCLogo : IDispatch\r
+    {\r
+        [helpstring("Enable the logo filter.")]\r
+        HRESULT enable();\r
+        [helpstring("Disable the logo filter.")]\r
+        HRESULT disable();\r
+\r
+        [helpstring("specify input file[[,delay],alpha].")]\r
+        HRESULT file([in] BSTR fname);\r
+\r
+        [propget, helpstring("")]\r
+        HRESULT delay([out, retval] long* val);\r
+        [propput, helpstring("Set delay-to-next-picture in miliseconds.")]\r
+        HRESULT delay([in] long val);\r
+\r
+        [propget, helpstring("")]\r
+        HRESULT repeat([out, retval] long* val);\r
+        [propput, helpstring("Repeat: -1 continuous (default), 0 no repeat, ....")]\r
+        HRESULT repeat([in] long val);\r
+\r
+        [propget, helpstring("Returns the `global' alpha value.")]\r
+        HRESULT opacity([out, retval] long* val);\r
+        [propput, helpstring("Alpha value: 0 opaque to 255 fully transparent")]\r
+        HRESULT opacity([in] long val);\r
+\r
+        [propget, helpstring("Retrieve picture position.")]\r
+        HRESULT position([out, retval] BSTR* val);\r
+        [propput, helpstring("Picture positioning relative to: center, left, right, top, bottom, top-left, top-right, bottom-left, bottom-right.")]\r
+        HRESULT position([in] BSTR val);\r
+\r
+        [propget, helpstring("Picture x offset.")]\r
+        HRESULT x([out, retval] long* val);\r
+        [propput, helpstring("Picture x offset.")]\r
+        HRESULT x([in] long val);\r
+        [propget, helpstring("Picture y offset.")]\r
+        HRESULT y([out, retval] long* val);\r
+        [propput, helpstring("Picture y offset.")]\r
+        HRESULT y([in] long val);\r
+\r
+    };\r
+\r
     [\r
       odl,\r
       uuid(0AAEDF0B-D333-4B27-A0C6-BBF31413A42E),\r
@@ -520,6 +571,9 @@ library AXVLC
 \r
         [propget, helpstring("Returns the marquee object.")]\r
         HRESULT marquee([out, retval] IVLCMarquee** obj);\r
+\r
+        [propget, helpstring("Returns the logo object.")]\r
+        HRESULT logo([out, retval] IVLCLogo** obj);\r
     };\r
 \r
     [\r
index 280fb0185ff878fbd7db60821b003e2bcdbd0a7c..8ddb388bc7c9d7fc7424b86e8662cd62275a214c 100644 (file)
@@ -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 <rpc.h>
 #include <rpcndr.h>
@@ -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);
index ec6dbec88a7e171c4267c3b982f5542dc3c9ce1e..abd103c1eae7698268ae2fb869eb29813f9d6e3b 100644 (file)
-/*** Autogenerated by WIDL 1.0 from axvlc.idl - Do not edit ***/
+/*** Autogenerated by WIDL 1.1.23 from axvlc.idl - Do not edit ***/
+
 #include <rpc.h>
 #include <rpcndr.h>
 
 #ifndef __WIDL_AXVLC_IDL_H
 #define __WIDL_AXVLC_IDL_H
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* Headers for imported files */
+
 #include <ocidl.h>
 
+/* 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 *);
index 9edd87ed618b6094cd641f077ab8aebca4bfce50..9c3c3235755adc250523fdf764274b243e98d20d 100644 (file)
@@ -235,14 +235,12 @@ Insert Slider widget
     <INPUT size=4 value="" id="logoIntValue">\r
     <SELECT readonly onClick="doLogoOption(this.value,document.getElementById('logoIntValue').value);">\r
         <OPTION value=1>File</OPTION>\r
-        <OPTION value=2>Transparency</OPTION>\r
-        <OPTION value=3>Position</OPTION>\r
+        <OPTION value=2>Position</OPTION>\r
+        <OPTION value=3>Opacity</OPTION>\r
         <OPTION value=4>Repeat</OPTION>\r
         <OPTION value=5>Delay</OPTION>\r
         <OPTION value=6>X</OPTION>\r
         <OPTION value=7>Y</OPTION>
-        <OPTION value=8>Width</OPTION>\r
-        <OPTION value=9>Height</OPTION>
     </SELECT>\r
 </TD>\r
 </TR>\r\r
@@ -786,27 +784,23 @@ function doMarqueeOption(option, value)
 function doLogoOption(option, value)\r
 {\r
     var vlc = getVLC("vlc");\r
-    val = parseInt(value);\r
     if( vlc )\r
     {\r
         if (option == 1)\r
-            vlc.video.logo.file(val);\r
+            vlc.video.logo.file(value);\r
         if (option == 2)\r
-            vlc.video.logo.transparency(val);\r
+            vlc.video.logo.position = value;\r
+        val = parseInt(value);\r
         if (option == 3)\r
-            vlc.video.logo.position(val);\r
+            vlc.video.logo.opacity = val;\r
         if (option == 4)\r
-            vlc.video.logo.repeat(val);\r
+            vlc.video.logo.repeat = val;\r
         if (option == 5)\r
-            vlc.video.logo.delay(val);\r
+            vlc.video.logo.delay = val;\r
         if (option == 6)\r
-            vlc.video.logo.x(val);\r
+            vlc.video.logo.x = val;\r
         if (option == 7)\r
-            vlc.video.logo.y(val);\r
-        if (option == 8)\r
-            vlc.video.logo.width(val);\r
-        if (option == 9)\r
-            vlc.video.logo.height(val);\r
+            vlc.video.logo.y = val;\r
     }\r
 }\r
 \r
index 05080bc0da7cb99ab47efe964d1d6eb1a0fbc152..f4d639e400925d52c69e6c3ca34b5ebedc84e29b 100644 (file)
@@ -2,6 +2,7 @@
  * vlccontrol2.cpp: ActiveX control for VLC
  *****************************************************************************
  * Copyright (C) 2006 the VideoLAN team
+ * Copyright (C) 2010 M2X BV
  *
  * Authors: Damien Fouilleul <Damien.Fouilleul@laposte.net>
  *          Jean-Paul Saman <jpsaman _at_ m2x _dot_ nl>
  * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
-#include "plugin.h"
-#include "vlccontrol2.h"
-#include "vlccontrol.h"
-
-#include "utils.h"
-
 #include <stdio.h>
 #include <shlwapi.h>
 #include <wininet.h>
 #include <tchar.h>
 
+#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; h<posidx+num_posidx; ++h )
+            if( i == h->i )
+            {
+                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; h<posidx+num_posidx; ++h )
+        if( !strcasecmp( n, h->n ) )
+        {
+            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()
 {
index 342116ae10594272efdc1eefa13ade49e8d28569..30ad2cdbffa732085d5afcbca98fbcafddf6cd64 100644 (file)
@@ -27,6 +27,7 @@
 #include "axvlc_idl.h"
 
 #include <vlc/libvlc.h>
+#include <ole2.h>
 
 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<LPVOID>(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