*
* 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__
#include <ole2.h>
#include <olectl.h>
-#include <vlc/vlc.h>
+#include <vlc/libvlc.h>
-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);
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; };
LPLONG _p_class_ref;
HINSTANCE _hinstance;
+ CLSID _classid;
ATOM _inplace_wndclass_atom;
- ATOM _video_wndclass_atom;
LPPICTURE _inplace_picture;
};
/* 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; };
/*
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; };
};
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)
};
const SIZEL& getExtent(void) { return _extent; };
- // transient properties
+ // transient properties
inline void setMute(BOOL mute) { _b_mute = mute; };
inline void setPicture(LPPICTURE pict)
_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; };
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
*/
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
-