X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f47cd02d71ef728221b29bf6bb3254ad85a12310..7b35aa40a06a160ae4a8650c5820880a020697e3:/src/msw/enhmeta.cpp diff --git a/src/msw/enhmeta.cpp b/src/msw/enhmeta.cpp index 2f1661b329..b931e44bdf 100644 --- a/src/msw/enhmeta.cpp +++ b/src/msw/enhmeta.cpp @@ -183,8 +183,8 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename, const wxString& description) { ScreenHDC hdcRef; - - RECT rect, *pRect; + RECT rect; + RECT *pRect; if ( width && height ) { rect.top = @@ -193,8 +193,15 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename, rect.bottom = height; // CreateEnhMetaFile() wants them in HIMETRIC +#ifdef __WXWINE__ + LONG r, b; + PixelToHIMETRIC(&r, &b); + rect.right = r; + rect.bottom = b; +#else PixelToHIMETRIC(&rect.right, &rect.bottom); - +#endif + pRect = ▭ } else @@ -234,12 +241,12 @@ wxEnhMetaFileDC::~wxEnhMetaFileDC() m_hDC = 0; } +#if wxUSE_DRAG_AND_DROP + // ---------------------------------------------------------------------------- // wxEnhMetaFileDataObject // ---------------------------------------------------------------------------- -#if wxUSE_DRAG_AND_DROP - wxDataFormat wxEnhMetaFileDataObject::GetPreferredFormat(Direction WXUNUSED(dir)) const { @@ -294,6 +301,10 @@ bool wxEnhMetaFileDataObject::GetDataHere(const wxDataFormat& format, void *buf) } else { +#ifdef __WXWINE__ + wxFAIL_MSG( _T("unsupported format") ); + return FALSE; +#else wxASSERT_MSG( format == wxDF_METAFILE, _T("unsupported format") ); // convert to WMF @@ -335,6 +346,7 @@ bool wxEnhMetaFileDataObject::GetDataHere(const wxDataFormat& format, void *buf) mfpict->yExt = sizeMF.y; PixelToHIMETRIC(&mfpict->xExt, &mfpict->yExt); +#endif } return TRUE; @@ -391,6 +403,46 @@ bool wxEnhMetaFileDataObject::SetData(const wxDataFormat& format, return TRUE; } + +// ---------------------------------------------------------------------------- +// wxEnhMetaFileSimpleDataObject +// ---------------------------------------------------------------------------- + +size_t wxEnhMetaFileSimpleDataObject::GetDataSize() const +{ + // we pass data by handle and not HGLOBAL + return 0u; +} + +bool wxEnhMetaFileSimpleDataObject::GetDataHere(void *buf) const +{ + wxCHECK_MSG( m_metafile.Ok(), FALSE, _T("copying invalid enh metafile") ); + + HENHMETAFILE hEMF = (HENHMETAFILE)m_metafile.GetHENHMETAFILE(); + + HENHMETAFILE hEMFCopy = ::CopyEnhMetaFile(hEMF, NULL); + if ( !hEMFCopy ) + { + wxLogLastError(_T("CopyEnhMetaFile")); + + return FALSE; + } + + *(HENHMETAFILE *)buf = hEMFCopy; + return TRUE; +} + +bool wxEnhMetaFileSimpleDataObject::SetData(size_t WXUNUSED(len), + const void *buf) +{ + HENHMETAFILE hEMF = *(HENHMETAFILE *)buf; + + wxCHECK_MSG( hEMF, FALSE, _T("pasting invalid enh metafile") ); + m_metafile.SetHENHMETAFILE((WXHANDLE)hEMF); + + return TRUE; +} + #endif // wxUSE_DRAG_AND_DROP #endif // wxUSE_ENH_METAFILE