X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=activex%2Fplugin.h;h=c2612e4879d7da3e9928a4147d2926d034e5f5be;hb=61630d2bd57b7e621263e4a1b7f61f7987caacc6;hp=f95aef55f0635efeccda0ad0eef47d9a45a74310;hpb=d2310f2a226acf7061a812193c8cd8aa15eff46b;p=vlc diff --git a/activex/plugin.h b/activex/plugin.h index f95aef55f0..c2612e4879 100644 --- a/activex/plugin.h +++ b/activex/plugin.h @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #ifndef __PLUGIN_H__ @@ -26,18 +26,19 @@ #include #include -#include +#include -extern const GUID CLSID_VLCPlugin; -extern const GUID LIBID_AXVLC; -extern const GUID DIID_DVLCEvents; +extern "C" const GUID CLSID_VLCPlugin; +extern "C" const GUID CLSID_VLCPlugin2; +extern "C" const GUID LIBID_AXVLC; +extern "C" const GUID DIID_DVLCEvents; class VLCPluginClass : public IClassFactory { public: - VLCPluginClass(LONG *p_class_ref,HINSTANCE hInstance); + VLCPluginClass(LONG *p_class_ref, HINSTANCE hInstance, REFCLSID rclsid); /* IUnknown methods */ STDMETHODIMP QueryInterface(REFIID riid, void **ppv); @@ -48,8 +49,9 @@ public: STDMETHODIMP CreateInstance(LPUNKNOWN pUnkOuter, REFIID riid, void **ppv); STDMETHODIMP LockServer(BOOL fLock); - LPCSTR getInPlaceWndClassName(void) const { return TEXT("VLC Plugin In-Place"); }; - LPCSTR getVideoWndClassName(void) const { return TEXT("VLC Plugin Video"); }; + REFCLSID getClassID(void) { return (REFCLSID)_classid; }; + + LPCTSTR getInPlaceWndClassName(void) const { return TEXT("VLC Plugin In-Place"); }; HINSTANCE getHInstance(void) const { return _hinstance; }; LPPICTURE getInPlacePict(void) const { if( NULL != _inplace_picture) _inplace_picture->AddRef(); return _inplace_picture; }; @@ -62,8 +64,8 @@ private: LPLONG _p_class_ref; HINSTANCE _hinstance; + CLSID _classid; ATOM _inplace_wndclass_atom; - ATOM _video_wndclass_atom; LPPICTURE _inplace_picture; }; @@ -81,7 +83,7 @@ public: /* custom methods */ HRESULT getTypeLib(LCID lcid, ITypeLib **pTL) { return LoadRegTypeLib(LIBID_AXVLC, 1, 0, lcid, pTL); }; - REFCLSID getClassID(void) { return (REFCLSID)CLSID_VLCPlugin; }; + REFCLSID getClassID(void) { return _p_class->getClassID(); }; REFIID getDispEventID(void) { return (REFIID)DIID_DVLCEvents; }; /* @@ -90,7 +92,7 @@ public: void setMRL(BSTR mrl) { SysFreeString(_bstr_mrl); - _bstr_mrl = SysAllocString(mrl); + _bstr_mrl = SysAllocStringLen(mrl, SysStringLen(mrl)); setDirty(TRUE); }; const BSTR getMRL(void) { return _bstr_mrl; }; @@ -102,15 +104,40 @@ public: }; inline BOOL getAutoPlay(void) { return _b_autoplay; }; - inline void setAutoLoop(BOOL autoloop) + inline void setAutoLoop(BOOL autoloop) { _b_autoloop = autoloop; setDirty(TRUE); }; inline BOOL getAutoLoop(void) { return _b_autoloop;}; + void setVolume(int volume); + int getVolume(void) { return _i_volume; }; + + void setBackColor(OLE_COLOR backcolor); + OLE_COLOR getBackColor(void) { return _i_backcolor; }; + void setVisible(BOOL fVisible); BOOL getVisible(void) { return _b_visible; }; + BOOL isVisible(void) { return _b_visible || (! _b_usermode); }; + + inline void setStartTime(int time) + { + _i_time = time; + setDirty(TRUE); + }; + inline int getStartTime(void) { return _i_time; }; + + void setTime(int time); + int getTime(void) { return _i_time; }; + + void setBaseURL(BSTR url) + { + SysFreeString(_bstr_baseurl); + _bstr_baseurl = SysAllocStringLen(url, SysStringLen(url)); + setDirty(TRUE); + }; + const BSTR getBaseURL(void) { return _bstr_baseurl; }; // control size in HIMETRIC inline void setExtent(const SIZEL& extent) @@ -120,7 +147,7 @@ public: }; const SIZEL& getExtent(void) { return _extent; }; - // transient properties + // transient properties inline void setMute(BOOL mute) { _b_mute = mute; }; inline void setPicture(LPPICTURE pict) @@ -138,12 +165,19 @@ public: _p_pict->AddRef(); return _p_pict; }; - + BOOL hasFocus(void); void setFocus(BOOL fFocus); inline UINT getCodePage(void) { return _i_codepage; }; - inline void setCodePage(UINT cp) { _i_codepage = cp; }; + inline void setCodePage(UINT cp) + { + // accept new codepage only if it works on this system + size_t mblen = WideCharToMultiByte(cp, + 0, L"test", -1, NULL, 0, NULL, NULL); + if( mblen > 0 ) + _i_codepage = cp; + }; inline BOOL isUserMode(void) { return _b_usermode; }; inline void setUserMode(BOOL um) { _b_usermode = um; }; @@ -151,15 +185,16 @@ public: inline BOOL isDirty(void) { return _b_dirty; }; inline void setDirty(BOOL dirty) { _b_dirty = dirty; }; - inline BOOL isRunning(void) { return 0 != _i_vlc; }; + inline BOOL isRunning(void) { return NULL != _p_libvlc; }; + HRESULT getVLCObject(int *i_vlc); + HRESULT getVLC(libvlc_instance_t** p_vlc); + void setErrorInfo(REFIID riid, const char *description); // control geometry within container - RECT getPosRect(void) { return _posRect; }; + RECT getPosRect(void) { return _posRect; }; inline HWND getInPlaceWindow(void) const { return _inplacewnd; }; BOOL isInPlaceActive(void); - inline int getVLCObject(void) const { return _i_vlc; }; - /* ** container events */ @@ -204,31 +239,36 @@ private: class VLCConnectionPointContainer *vlcConnectionPointContainer; class VLCObjectSafety *vlcObjectSafety; class VLCControl *vlcControl; + class VLCControl2 *vlcControl2; class VLCViewObject *vlcViewObject; class VLCDataObject *vlcDataObject; + class VLCSupportErrorInfo *vlcSupportErrorInfo; - // in place activated window (Clipping window) + // in place activated window (Plugin window) HWND _inplacewnd; - // video window (Drawing window) - HWND _videownd; - VLCPluginClass *_p_class; + VLCPluginClass* _p_class; ULONG _i_ref; - LPPICTURE _p_pict; + libvlc_instance_t* _p_libvlc; UINT _i_codepage; BOOL _b_usermode; + RECT _posRect; + LPPICTURE _p_pict; + + // persistable properties + BSTR _bstr_baseurl; BSTR _bstr_mrl; BOOL _b_autoplay; BOOL _b_autoloop; BOOL _b_visible; BOOL _b_mute; - BOOL _b_dirty; - int _i_vlc; - + int _i_volume; + int _i_time; SIZEL _extent; - RECT _posRect; + OLE_COLOR _i_backcolor; + // indicates whether properties needs persisting + BOOL _b_dirty; }; #endif -