X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2f1ae4143271ae63a17e052a1a471d16e9cd8c44..a61d25e6394cb952ce59bbfbc68db72a07069dd9:/src/mac/metafile.cpp?ds=sidebyside diff --git a/src/mac/metafile.cpp b/src/mac/metafile.cpp index fc6c64b825..9bdbb223fb 100644 --- a/src/mac/metafile.cpp +++ b/src/mac/metafile.cpp @@ -83,19 +83,24 @@ wxMetaFile::~wxMetaFile() bool wxMetaFile::SetClipboard(int width, int height) { +#if wxUSE_DRAG_AND_DROP +//TODO finishi this port , we need the data obj first if (!m_refData) return FALSE; - bool alreadyOpen=wxClipboardOpen(); + bool alreadyOpen=wxTheClipboard->IsOpened() ; if (!alreadyOpen) { - wxOpenClipboard(); - if (!wxEmptyClipboard()) return FALSE; + wxTheClipboard->Open(); + wxTheClipboard->Clear(); } - bool success = wxSetClipboardData(wxDF_METAFILE, this, width,height); - if (!alreadyOpen) wxCloseClipboard(); + wxDataObject *data = + new wxMetafileDataObject( *this) ; + bool success = wxTheClipboard->SetData(data); + if (!alreadyOpen) + wxTheClipboard->Close(); return (bool) success; - +#endif return TRUE ; } @@ -115,23 +120,11 @@ bool wxMetaFile::Play(wxDC *dc) if (!dc->Ok() ) return FALSE; - dc->MacVerifySetup() ; - { + wxMacPortSetter helper( dc ) ; PicHandle pict = GetHMETAFILE() ; DrawPicture( pict , &(**pict).picFrame ) ; } -/* - if (!m_refData) - return FALSE; - - dc->BeginDrawing(); - - if (dc->GetHDC() && M_METAFILEDATA->m_metafile) - PlayMetaFile((HDC) dc->GetHDC(), (HMETAFILE) M_METAFILEDATA->m_metafile); - - dc->EndDrawing(); -*/ return TRUE; } @@ -194,4 +187,26 @@ wxMetaFile *wxMetaFileDC::Close() return m_metaFile; } +#if wxUSE_DATAOBJ +size_t wxMetafileDataObject::GetDataSize() const +{ + return GetHandleSize( (Handle) (*((wxMetafile*)&m_metafile)).GetHMETAFILE() ) ; +} + +bool wxMetafileDataObject::GetDataHere(void *buf) const +{ + memcpy( buf , (*(*((wxMetafile*)&m_metafile)).GetHMETAFILE()) , + GetHandleSize( (Handle) (*((wxMetafile*)&m_metafile)).GetHMETAFILE() ) ) ; + return true ; +} + +bool wxMetafileDataObject::SetData(size_t len, const void *buf) +{ + Handle handle = (Handle) m_metafile.GetHMETAFILE() ; + SetHandleSize( handle , len ) ; + memcpy( *handle , buf , len ) ; + return true ; +} +#endif + #endif