X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8f884a0dccd6b642f35c441ac9bfc87a6d5b4d35..79f9ea0541e410d65899631db630e955af3b6a84:/src/msw/metafile.cpp diff --git a/src/msw/metafile.cpp b/src/msw/metafile.cpp index 3076145d20..1f5593027e 100644 --- a/src/msw/metafile.cpp +++ b/src/msw/metafile.cpp @@ -30,6 +30,7 @@ #endif #include "wx/metafile.h" +#include "wx/filename.h" #if wxUSE_METAFILE && !defined(wxMETAFILE_IS_ENH) @@ -101,7 +102,7 @@ wxGDIRefData *wxMetafile::CreateGDIRefData() const wxGDIRefData *wxMetafile::CloneGDIRefData(const wxGDIRefData *data) const { - return new wxMetafileRefData(wx_static_cast(wxMetafileRefData *, data)); + return new wxMetafileRefData(*static_cast(data)); } bool wxMetafile::SetClipboard(int width, int height) @@ -166,7 +167,8 @@ void wxMetafile::SetWindowsMappingMode(int mm) // Original constructor that does not takes origin and extent. If you use this, // *DO* give origin/extent arguments to wxMakeMetafilePlaceable. -wxMetafileDC::wxMetafileDC(const wxString& file) +wxMetafileDCImpl::wxMetafileDCImpl(wxDC *owner, const wxString& file) + : wxMSWDCImpl(owner) { m_metaFile = NULL; m_minX = 10000; @@ -193,7 +195,9 @@ wxMetafileDC::wxMetafileDC(const wxString& file) // New constructor that takes origin and extent. If you use this, don't // give origin/extent arguments to wxMakeMetafilePlaceable. -wxMetafileDC::wxMetafileDC(const wxString& file, int xext, int yext, int xorg, int yorg) +wxMetafileDCImpl::wxMetafileDCImpl(wxDC *owner, const wxString& file, + int xext, int yext, int xorg, int yorg) + : wxMSWDCImpl(owner) { m_minX = 10000; m_minY = 10000; @@ -214,15 +218,15 @@ wxMetafileDC::wxMetafileDC(const wxString& file, int xext, int yext, int xorg, i SetMapMode(wxMM_TEXT); // NOTE: does not set HDC mapmode (this is correct) } -wxMetafileDC::~wxMetafileDC() +wxMetafileDCImpl::~wxMetafileDCImpl() { m_hDC = 0; } -void wxMetafileDC::DoGetTextExtent(const wxString& string, - wxCoord *x, wxCoord *y, - wxCoord *descent, wxCoord *externalLeading, - const wxFont *theFont) const +void wxMetafileDCImpl::DoGetTextExtent(const wxString& string, + wxCoord *x, wxCoord *y, + wxCoord *descent, wxCoord *externalLeading, + const wxFont *theFont) const { const wxFont *fontToUse = theFont; if (!fontToUse) @@ -246,7 +250,7 @@ void wxMetafileDC::DoGetTextExtent(const wxString& string, *externalLeading = tm.tmExternalLeading; } -void wxMetafileDC::DoGetSize(int *width, int *height) const +void wxMetafileDCImpl::DoGetSize(int *width, int *height) const { wxCHECK_RET( m_refData, _T("invalid wxMetafileDC") ); @@ -256,7 +260,7 @@ void wxMetafileDC::DoGetSize(int *width, int *height) const *height = M_METAFILEDATA->m_height; } -wxMetafile *wxMetafileDC::Close() +wxMetafile *wxMetafileDCImpl::Close() { SelectOldObjects(m_hDC); HANDLE mf = CloseMetaFile((HDC) m_hDC); @@ -271,7 +275,7 @@ wxMetafile *wxMetafileDC::Close() return NULL; } -void wxMetafileDC::SetMapMode(int mode) +void wxMetafileDCImpl::SetMapMode(wxMappingMode mode) { m_mappingMode = mode; @@ -389,9 +393,11 @@ bool wxMakeMetafilePlaceable(const wxString& filename, int x1, int y1, int x2, i FILE *fd = wxFopen(filename.fn_str(), _T("rb")); if (!fd) return false; - wxChar tempFileBuf[256]; - wxGetTempFileName(wxT("mf"), tempFileBuf); - FILE *fHandle = wxFopen(wxFNCONV(tempFileBuf), _T("wb")); + wxString tempFileBuf = wxFileName::CreateTempFileName(wxT("mf")); + if (tempFileBuf.empty()) + return false; + + FILE *fHandle = wxFopen(tempFileBuf.fn_str(), _T("wb")); if (!fHandle) return false; fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle);