X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f0822896b3354f8698835d234ce2655daa640704..e3dbf5934e997729c6f4f5154b1b7f29d5d22149:/src/mac/carbon/metafile.cpp diff --git a/src/mac/carbon/metafile.cpp b/src/mac/carbon/metafile.cpp index 9d3d1576b7..2380c96edc 100644 --- a/src/mac/carbon/metafile.cpp +++ b/src/mac/carbon/metafile.cpp @@ -34,6 +34,8 @@ #include "wx/metafile.h" #include "wx/clipbrd.h" +#include "wx/mac/private.h" + #include #include @@ -59,7 +61,7 @@ wxMetafileRefData::~wxMetafileRefData(void) { if (m_metafile) { - KillPicture( m_metafile ) ; + KillPicture( (PicHandle) m_metafile ) ; m_metafile = 0; } } @@ -92,16 +94,19 @@ bool wxMetaFile::SetClipboard(int width, int height) if (!alreadyOpen) { wxTheClipboard->Open(); - if (!wxTheClipboard->Clear()) return FALSE; + 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 ; } -void wxMetafile::SetHMETAFILE(PicHandle mf) +void wxMetafile::SetHMETAFILE(WXHMETAFILE mf) { if (!m_refData) m_refData = new wxMetafileRefData; @@ -119,7 +124,7 @@ bool wxMetaFile::Play(wxDC *dc) { wxMacPortSetter helper( dc ) ; - PicHandle pict = GetHMETAFILE() ; + PicHandle pict = (PicHandle) GetHMETAFILE() ; DrawPicture( pict , &(**pict).picFrame ) ; } return TRUE; @@ -146,7 +151,7 @@ wxMetaFileDC::wxMetaFileDC(const wxString& file) Rect r={0,0,1000,1000} ; m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ; - ::GetPort( &m_macPort ) ; + ::GetPort( (GrafPtr*) &m_macPort ) ; m_ok = TRUE ; SetMapMode(wxMM_TEXT); @@ -168,7 +173,7 @@ wxMetaFileDC::wxMetaFileDC(const wxString& file, int xext, int yext, int xorg, i Rect r={yorg,xorg,yorg+yext,xorg+xext} ; m_metaFile->SetHMETAFILE( OpenPicture( &r ) ) ; - ::GetPort( &m_macPort ) ; + ::GetPort( (GrafPtr*) &m_macPort ) ; m_ok = TRUE ; SetMapMode(wxMM_TEXT); @@ -184,4 +189,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 , (*(PicHandle)(*((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