X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9317fd47263a9521466156d7bf0f7988000bf15..3193b86f29845b6e72f891400117879e6b97b112:/src/msw/metafile.cpp diff --git a/src/msw/metafile.cpp b/src/msw/metafile.cpp index eb13f6384f..f1eb74391e 100644 --- a/src/msw/metafile.cpp +++ b/src/msw/metafile.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/metafile.cpp +// Name: src/msw/metafile.cpp // Purpose: wxMetafileDC etc. // Author: Julian Smart // Modified by: VZ 07.01.00: implemented wxMetaFileDataObject // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "metafile.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -28,10 +24,6 @@ #pragma hdrstop #endif -#ifndef WX_PRECOMP - #include "wx/setup.h" -#endif - #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/app.h" @@ -94,7 +86,7 @@ wxMetafile::wxMetafile(const wxString& file) M_METAFILEDATA->m_windowsMappingMode = wxMM_ANISOTROPIC; M_METAFILEDATA->m_metafile = 0; - if (!file.IsNull() && (file.Cmp(wxT("")) == 0)) + if (!file.empty()) M_METAFILEDATA->m_metafile = (WXHANDLE) GetMetaFile(file); } @@ -104,29 +96,31 @@ wxMetafile::~wxMetafile() bool wxMetafile::SetClipboard(int width, int height) { +#if !wxUSE_CLIPBOARD + return false; +#else if (!m_refData) - return FALSE; + return false; bool alreadyOpen = wxClipboardOpen(); if (!alreadyOpen) { wxOpenClipboard(); if (!wxEmptyClipboard()) - return FALSE; + return false; } bool success = wxSetClipboardData(wxDF_METAFILE, this, width,height); if (!alreadyOpen) wxCloseClipboard(); return success; +#endif } bool wxMetafile::Play(wxDC *dc) { if (!m_refData) - return FALSE; - - dc->BeginDrawing(); + return false; if (dc->GetHDC() && M_METAFILEDATA->m_metafile) { @@ -137,9 +131,7 @@ bool wxMetafile::Play(wxDC *dc) } } - dc->EndDrawing(); - - return TRUE; + return true; } void wxMetafile::SetHMETAFILE(WXHANDLE mf) @@ -176,7 +168,7 @@ wxMetafileDC::wxMetafileDC(const wxString& file) if (!file.IsNull() && wxFileExists(file)) wxRemoveFile(file); - if (!file.IsNull() && (file != wxT(""))) + if (!file.IsNull() && (file != wxEmptyString)) m_hDC = (WXHDC) CreateMetaFile(file); else m_hDC = (WXHDC) CreateMetaFile(NULL); @@ -197,11 +189,11 @@ wxMetafileDC::wxMetafileDC(const wxString& file, int xext, int yext, int xorg, i m_minY = 10000; m_maxX = -10000; m_maxY = -10000; - if ( !!file && wxFileExists(file)) + if ( !file.empty() && wxFileExists(file) ) wxRemoveFile(file); - m_hDC = (WXHDC) CreateMetaFile(file); + m_hDC = (WXHDC) CreateMetaFile(file.empty() ? NULL : file.c_str()); - m_ok = TRUE; + m_ok = true; ::SetWindowOrgEx((HDC) m_hDC,xorg,yorg, NULL); ::SetWindowExtEx((HDC) m_hDC,xext,yext, NULL); @@ -218,7 +210,7 @@ wxMetafileDC::~wxMetafileDC() } void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y, - long *descent, long *externalLeading, wxFont *theFont, bool use16bit) const + long *descent, long *externalLeading, wxFont *theFont, bool WXUNUSED(use16bit)) const { wxFont *fontToUse = theFont; if (!fontToUse) @@ -228,7 +220,7 @@ void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y, SIZE sizeRect; TEXTMETRIC tm; - GetTextExtentPoint(dc, WXSTRINGCAST string, wxStrlen(WXSTRINGCAST string), &sizeRect); + ::GetTextExtentPoint32(dc, WXSTRINGCAST string, wxStrlen(WXSTRINGCAST string), &sizeRect); GetTextMetrics(dc, &tm); ReleaseDC(NULL, dc); @@ -243,6 +235,16 @@ void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y, *externalLeading = tm.tmExternalLeading; } +void wxMetafileDC::DoGetSize(int *width, int *height) const +{ + wxCHECK_RET( m_refData, _T("invalid wxMetafileDC") ); + + if ( width ) + *width = M_METAFILEDATA->m_width; + if ( height ) + *height = M_METAFILEDATA->m_height; +} + wxMetafile *wxMetafileDC::Close() { SelectOldObjects(m_hDC); @@ -304,8 +306,6 @@ void wxMetafileDC::SetMapMode(int mode) break; } } - m_windowExtX = 100; - m_windowExtY = 100; } // ---------------------------------------------------------------------------- @@ -349,7 +349,7 @@ struct mfPLACEABLEHEADER { bool wxMakeMetafilePlaceable(const wxString& filename, float scale) { - return wxMakeMetafilePlaceable(filename, 0, 0, 0, 0, scale, FALSE); + return wxMakeMetafilePlaceable(filename, 0, 0, 0, 0, scale, false); } bool wxMakeMetafilePlaceable(const wxString& filename, int x1, int y1, int x2, int y2, float scale, bool useOriginAndExtent) @@ -375,14 +375,14 @@ bool wxMakeMetafilePlaceable(const wxString& filename, int x1, int y1, int x2, i p < (WORD *)&pMFHead ->checksum; ++p) pMFHead ->checksum ^= *p; - FILE *fd = fopen(filename.fn_str(), "rb"); - if (!fd) return FALSE; + FILE *fd = wxFopen(filename.fn_str(), _T("rb")); + if (!fd) return false; wxChar tempFileBuf[256]; wxGetTempFileName(wxT("mf"), tempFileBuf); - FILE *fHandle = fopen(wxConvFile.cWX2MB(tempFileBuf), "wb"); + FILE *fHandle = wxFopen(wxFNCONV(tempFileBuf), _T("wb")); if (!fHandle) - return FALSE; + return false; fwrite((void *)&header, sizeof(unsigned char), sizeof(mfPLACEABLEHEADER), fHandle); // Calculate origin and extent @@ -447,7 +447,7 @@ bool wxMakeMetafilePlaceable(const wxString& filename, int x1, int y1, int x2, i wxRemoveFile(filename); wxCopyFile(tempFileBuf, filename); wxRemoveFile(tempFileBuf); - return TRUE; + return true; } @@ -467,7 +467,7 @@ bool wxMetafileDataObject::GetDataHere(void *buf) const METAFILEPICT *mfpict = (METAFILEPICT *)buf; const wxMetafile& mf = GetMetafile(); - wxCHECK_MSG( mf.GetHMETAFILE(), FALSE, _T("copying invalid metafile") ); + wxCHECK_MSG( mf.GetHMETAFILE(), false, _T("copying invalid metafile") ); // doesn't seem to work with any other mapping mode... mfpict->mm = MM_ANISOTROPIC; //mf.GetWindowsMappingMode(); @@ -480,7 +480,7 @@ bool wxMetafileDataObject::GetDataHere(void *buf) const mfpict->hMF = CopyMetaFile((HMETAFILE)mf.GetHMETAFILE(), NULL); - return TRUE; + return true; } bool wxMetafileDataObject::SetData(size_t WXUNUSED(len), const void *buf) @@ -490,8 +490,8 @@ bool wxMetafileDataObject::SetData(size_t WXUNUSED(len), const void *buf) wxMetafile mf; mf.SetWindowsMappingMode(mfpict->mm); - int w = mfpict->xExt, - h = mfpict->yExt; + LONG w = mfpict->xExt, + h = mfpict->yExt; if ( mfpict->mm == MM_ANISOTROPIC ) { // in this case xExt and yExt contain suggested size in HIMETRIC units @@ -503,14 +503,13 @@ bool wxMetafileDataObject::SetData(size_t WXUNUSED(len), const void *buf) mf.SetHeight(h); mf.SetHMETAFILE((WXHANDLE)mfpict->hMF); - wxCHECK_MSG( mfpict->hMF, FALSE, _T("pasting invalid metafile") ); + wxCHECK_MSG( mfpict->hMF, false, _T("pasting invalid metafile") ); SetMetafile(mf); - return TRUE; + return true; } #endif // wxUSE_DRAG_AND_DROP #endif // wxUSE_METAFILE -