X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=activex%2Fdataobject.cpp;h=ad8f1787093a00cb6f1eda121aa25074044e476a;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=33ecde8e0d4e29b654723364e56f5df6a75b9e25;hpb=2cb472dba008f7d877ffe6bae9c5575253365282;p=vlc diff --git a/activex/dataobject.cpp b/activex/dataobject.cpp index 33ecde8e0d..ad8f178709 100644 --- a/activex/dataobject.cpp +++ b/activex/dataobject.cpp @@ -29,44 +29,6 @@ using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////// -class VLCEnumFORMATETC : public IEnumFORMATETC -{ -public: - - VLCEnumFORMATETC(vector &v) : - e(VLCEnum(IID_IEnumFORMATETC, v)) {}; - - VLCEnumFORMATETC(const VLCEnumFORMATETC &vlcEnum) : e(vlcEnum.e) {}; - virtual ~VLCEnumFORMATETC() {}; - - // IUnknown methods - STDMETHODIMP QueryInterface(REFIID riid, void **ppv) - { return e.QueryInterface(riid, ppv); }; - STDMETHODIMP_(ULONG) AddRef(void) - { return e.AddRef(); }; - STDMETHODIMP_(ULONG) Release(void) - {return e.Release(); }; - - //IEnumConnectionPoints - STDMETHODIMP Next(ULONG celt, LPFORMATETC rgelt, ULONG *pceltFetched) - { return e.Next(celt, rgelt, pceltFetched); }; - STDMETHODIMP Skip(ULONG celt) - { return e.Skip(celt);}; - STDMETHODIMP Reset(void) - { return e.Reset();}; - STDMETHODIMP Clone(LPENUMFORMATETC *ppenum) - { if( NULL == ppenum ) return E_POINTER; - *ppenum = dynamic_cast(new VLCEnumFORMATETC(*this)); - return (NULL != *ppenum) ? S_OK : E_OUTOFMEMORY; - }; - -private: - - VLCEnum e; -}; - -//////////////////////////////////////////////////////////////////////////////////////////////// - static const FORMATETC _metaFileFormatEtc = { CF_METAFILEPICT, @@ -84,6 +46,22 @@ static const FORMATETC _enhMetaFileFormatEtc = TYMED_ENHMF, }; +class VLCEnumFORMATETC : public VLCEnumIterator::iterator> +{ +public: + VLCEnumFORMATETC(vector v) : + VLCEnumIterator::iterator>(v.begin(), v.end()) + {}; +}; + +//////////////////////////////////////////////////////////////////////////////////////////////// + VLCDataObject::VLCDataObject(VLCPlugin *p_instance) : _p_instance(p_instance) { _v_formatEtc.push_back(_enhMetaFileFormatEtc); @@ -114,13 +92,14 @@ STDMETHODIMP VLCDataObject::EnumDAdvise(IEnumSTATDATA **ppenumAdvise) return _p_adviseHolder->EnumAdvise(ppenumAdvise); }; -STDMETHODIMP VLCDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppenumformatetc) +STDMETHODIMP VLCDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC **ppEnum) { - if( NULL == ppenumformatetc ) + if( NULL == ppEnum ) return E_POINTER; - *ppenumformatetc = new VLCEnumFORMATETC(_v_formatEtc); - return NOERROR; + *ppEnum = dynamic_cast(new VLCEnumFORMATETC(_v_formatEtc)); + + return (NULL != *ppEnum ) ? S_OK : E_OUTOFMEMORY; }; STDMETHODIMP VLCDataObject::GetCanonicalFormatEtc(LPFORMATETC pFormatEtcIn, LPFORMATETC pFormatEtcOut) @@ -183,7 +162,7 @@ HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedi if( NULL == hicTargetDev ) return E_FAIL; - HDC hdcMeta = CreateMetaFile(NULL); + HDC hdcMeta = CreateMetaFile(NULL); if( NULL != hdcMeta ) { LPMETAFILEPICT pMetaFilePict = (LPMETAFILEPICT)CoTaskMemAlloc(sizeof(METAFILEPICT)); @@ -223,7 +202,7 @@ HRESULT VLCDataObject::getEnhMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pM SIZEL size = _p_instance->getExtent(); - HDC hdcMeta = CreateEnhMetaFile(hicTargetDev, NULL, NULL, NULL); + HDC hdcMeta = CreateEnhMetaFile(hicTargetDev, NULL, NULL, NULL); if( NULL != hdcMeta ) { RECTL wBounds = { 0L, 0L, size.cx, size.cy }; @@ -258,7 +237,7 @@ STDMETHODIMP VLCDataObject::QueryGetData(LPFORMATETC pFormatEtc) default: return DV_E_FORMATETC; } - + if( pFormatEtc->dwAspect != formatEtc->dwAspect ) return DV_E_DVASPECT;