implemented wxDC::DoGetSize() correctly for metafile DC classes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2005-12-25 13:06:05 +00:00
parent f81dc6e931
commit 024026be1d
4 changed files with 30 additions and 1 deletions

View File

@@ -87,6 +87,12 @@ public:
wxEnhMetaFile *Close();
private:
virtual void DoGetSize(int *width, int *height) const;
// size passed to ctor and returned by DoGetSize()
int m_width,
m_height;
DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC)
};

View File

@@ -107,6 +107,8 @@ public:
void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; }
protected:
virtual void DoGetSize(int *width, int *height) const;
int m_windowsMappingMode;
wxMetafile* m_metaFile;

View File

@@ -194,7 +194,9 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
int width, int height,
const wxString& description)
{
ScreenHDC hdcRef;
m_width = width;
m_height = height;
RECT rect;
RECT *pRect;
if ( width && height )
@@ -215,6 +217,7 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
pRect = (LPRECT)NULL;
}
ScreenHDC hdcRef;
m_hDC = (WXHDC)::CreateEnhMetaFile(hdcRef, GetMetaFileName(filename),
pRect, description);
if ( !m_hDC )
@@ -223,6 +226,14 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
}
}
void wxEnhMetaFileDC::DoGetSize(int *width, int *height) const
{
if ( width )
*width = m_width;
if ( height )
*height = m_height;
}
wxEnhMetaFile *wxEnhMetaFileDC::Close()
{
wxCHECK_MSG( Ok(), NULL, _T("invalid wxEnhMetaFileDC") );

View File

@@ -243,6 +243,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);