//Read Parameters from pPropBag given by MSIE Bool CGPAXPlugin::ReadParamString(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog, WCHAR *name, char *buf, int bufsize) { VARIANT v; HRESULT hr; Bool retval=0; v.vt = VT_EMPTY; v.bstrVal = NULL; hr = pPropBag->Read(name, &v, pErrorLog); if(SUCCEEDED(hr)) { if(v.vt==VT_BSTR && v.bstrVal) { // USES_CONVERSION; // lstrcpyn(buf,OLE2T(v.bstrVal),bufsize); const u16 *srcp = (const u16 *) v.bstrVal; u32 len = gf_utf8_wcstombs(buf, bufsize, &srcp); if (len>=0) { buf[len] = 0; retval=1; } } VariantClear(&v); } return retval; }
STDMETHODIMP VLCPersistPropertyBag::Load(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog) { HRESULT hr = _p_instance->onInit(); if( FAILED(hr) ) return hr; if( NULL == pPropBag ) return E_INVALIDARG; VARIANT value; V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("mrl"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("src"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } else { V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("filename"), &value, pErrorLog) ) { _p_instance->setMRL(V_BSTR(&value)); VariantClear(&value); } } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autoplay"), &value, pErrorLog) ) { _p_instance->setAutoPlay(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autostart"), &value, pErrorLog) ) { _p_instance->setAutoPlay(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("toolbar"), &value, pErrorLog) ) { _p_instance->setShowToolbar(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } SIZEL size = _p_instance->getExtent(); V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("extentwidth"), &value, pErrorLog) ) { size.cx = V_I4(&value); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("extentheight"), &value, pErrorLog) ) { size.cy = V_I4(&value); VariantClear(&value); } _p_instance->setExtent(size); V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("autoloop"), &value, pErrorLog) ) { _p_instance->setAutoLoop(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("loop"), &value, pErrorLog) ) { _p_instance->setAutoLoop(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("mute"), &value, pErrorLog) ) { _p_instance->setMute(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("visible"), &value, pErrorLog) ) { _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("showdisplay"), &value, pErrorLog) ) { _p_instance->setVisible(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("volume"), &value, pErrorLog) ) { _p_instance->setVolume(V_I4(&value)); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("starttime"), &value, pErrorLog) ) { _p_instance->setStartTime(V_I4(&value)); VariantClear(&value); } V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("baseurl"), &value, pErrorLog) ) { _p_instance->setBaseURL(V_BSTR(&value)); VariantClear(&value); } V_VT(&value) = VT_I4; if( S_OK == pPropBag->Read(OLESTR("backcolor"), &value, pErrorLog) ) { _p_instance->setBackColor(V_I4(&value)); VariantClear(&value); } else { /* ** try alternative syntax */ V_VT(&value) = VT_BSTR; if( S_OK == pPropBag->Read(OLESTR("bgcolor"), &value, pErrorLog) ) { long backcolor; if( swscanf(V_BSTR(&value), L"#%lX", &backcolor) ) { _p_instance->setBackColor(backcolor); } VariantClear(&value); } } V_VT(&value) = VT_BOOL; if( S_OK == pPropBag->Read(OLESTR("FullscreenEnabled"), &value, pErrorLog) ) { _p_instance->get_options().set_enable_fs(V_BOOL(&value) != VARIANT_FALSE); VariantClear(&value); } return _p_instance->onLoad(); };