]> git.sesse.net Git - vlc/blobdiff - activex/dataobject.cpp
Removes trailing spaces. Removes tabs.
[vlc] / activex / dataobject.cpp
index 49bf8122ddd6b0259c4638021840b4a9347653d4..ad8f1787093a00cb6f1eda121aa25074044e476a 100644 (file)
@@ -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.
  *****************************************************************************/
 
 #include "plugin.h"
@@ -29,44 +29,6 @@ using namespace std;
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
 
-class VLCEnumFORMATETC : public IEnumFORMATETC
-{
-public:
-
-    VLCEnumFORMATETC(vector<FORMATETC> &v) :
-        e(VLCEnum<FORMATETC>(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<LPENUMFORMATETC>(new VLCEnumFORMATETC(*this));
-          return (NULL != *ppenum) ? S_OK : E_OUTOFMEMORY;
-        };
-
-private:
-
-    VLCEnum<FORMATETC> e;
-};
-
-////////////////////////////////////////////////////////////////////////////////////////////////
-
 static const FORMATETC _metaFileFormatEtc =
     {
         CF_METAFILEPICT,
@@ -84,6 +46,22 @@ static const FORMATETC _enhMetaFileFormatEtc =
         TYMED_ENHMF,
     };
 
+class VLCEnumFORMATETC : public VLCEnumIterator<IID_IEnumFORMATETC,
+    IEnumFORMATETC,
+    FORMATETC,
+    vector<FORMATETC>::iterator>
+{
+public:
+    VLCEnumFORMATETC(vector<FORMATETC> v) :
+        VLCEnumIterator<IID_IEnumFORMATETC,
+        IEnumFORMATETC,
+        FORMATETC,
+        vector<FORMATETC>::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<IEnumFORMATETC *>(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));
@@ -192,18 +171,16 @@ HRESULT VLCDataObject::getMetaFileData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedi
             SIZEL size = _p_instance->getExtent();
             RECTL wBounds = { 0L, 0L, size.cx, size.cy };
 
-            LONG width = size.cx*GetDeviceCaps(hicTargetDev, LOGPIXELSX)/2540L;
-            LONG height = size.cy*GetDeviceCaps(hicTargetDev, LOGPIXELSY)/2540L;
-
             pMetaFilePict->mm   = MM_ANISOTROPIC;
             pMetaFilePict->xExt = size.cx;
             pMetaFilePict->yExt = size.cy;
 
+            DPFromHimetric(hicTargetDev, (LPPOINT)&size, 1);
+
             SetMapMode(hdcMeta, MM_ANISOTROPIC);
-            SetWindowOrgEx(hdcMeta, 0, 0, NULL);
-            SetWindowExtEx(hdcMeta, width, height, NULL);
+            SetWindowExtEx(hdcMeta, size.cx, size.cy, NULL);
 
-            RECTL bounds = { 0L, 0L, width, height };
+            RECTL bounds = { 0L, 0L, size.cx, size.cy };
 
             _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev, hdcMeta, &bounds, &wBounds);
             pMetaFilePict->hMF = CloseMetaFile(hdcMeta);
@@ -225,15 +202,14 @@ 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 };
 
-        LONG width = size.cx*GetDeviceCaps(hicTargetDev, LOGPIXELSX)/2540L;
-        LONG height = size.cy*GetDeviceCaps(hicTargetDev, LOGPIXELSY)/2540L;
+        DPFromHimetric(hicTargetDev, (LPPOINT)&size, 1);
 
-        RECTL bounds = { 0L, 0L, width, height };
+        RECTL bounds = { 0L, 0L, size.cx, size.cy };
 
         _p_instance->onDraw(pFormatEtc->ptd, hicTargetDev, hdcMeta, &bounds, &wBounds);
         pMedium->hEnhMetaFile = CloseEnhMetaFile(hdcMeta);
@@ -261,7 +237,7 @@ STDMETHODIMP VLCDataObject::QueryGetData(LPFORMATETC pFormatEtc)
         default:
             return DV_E_FORMATETC;
     }
-    
     if( pFormatEtc->dwAspect != formatEtc->dwAspect )
         return DV_E_DVASPECT;
 
@@ -279,6 +255,11 @@ STDMETHODIMP VLCDataObject::SetData(LPFORMATETC pFormatEtc, LPSTGMEDIUM pMedium,
     return E_NOTIMPL;
 };
 
+/*void VLCDataObject::onDataChange(void)
+{
+    _p_adviseHolder->SendOnDataChange(this, 0, 0);
+};*/
+
 void VLCDataObject::onClose(void)
 {
     _p_adviseHolder->SendOnDataChange(this, 0, ADVF_DATAONSTOP);