wxEnhMetaFileDCImpl( wxEnhMetaFileDC *owner,
const wxString& filename, int width, int height,
const wxString& description );
+ wxEnhMetaFileDCImpl( wxEnhMetaFileDC *owner,
+ const wxDC& referenceDC,
+ const wxString& filename, int width, int height,
+ const wxString& description );
virtual ~wxEnhMetaFileDCImpl();
// obtain a pointer to the new metafile (caller should delete it)
virtual void DoGetSize(int *width, int *height) const;
private:
+ void Create(HDC hdcRef,
+ const wxString& filename, int width, int height,
+ const wxString& description);
+
// size passed to ctor and returned by DoGetSize()
int m_width,
m_height;
int width, int height,
const wxString& description )
: wxMSWDCImpl( owner )
+{
+ Create(ScreenHDC(), filename, width, height, description);
+}
+
+wxEnhMetaFileDCImpl::wxEnhMetaFileDCImpl( wxEnhMetaFileDC* owner,
+ const wxDC& referenceDC,
+ const wxString& filename,
+ int width, int height,
+ const wxString& description )
+ : wxMSWDCImpl( owner )
+{
+ Create(GetHdcOf(referenceDC), filename, width, height, description);
+}
+
+void wxEnhMetaFileDCImpl::Create(HDC hdcRef,
+ const wxString& filename,
+ int width, int height,
+ const wxString& description)
{
m_width = width;
m_height = height;
rect.bottom = height;
// CreateEnhMetaFile() wants them in HIMETRIC
- PixelToHIMETRIC(&rect.right, &rect.bottom);
+ PixelToHIMETRIC(&rect.right, &rect.bottom, hdcRef);
pRect = ▭
}
pRect = (LPRECT)NULL;
}
- ScreenHDC hdcRef;
m_hDC = (WXHDC)::CreateEnhMetaFile(hdcRef, GetMetaFileName(filename),
pRect, description.wx_str());
if ( !m_hDC )
{
}
+wxEnhMetaFileDC::wxEnhMetaFileDC(const wxDC& referenceDC,
+ const wxString& filename,
+ int width, int height,
+ const wxString& description)
+ : wxDC(new wxEnhMetaFileDCImpl(this,
+ referenceDC,
+ filename,
+ width, height,
+ description))
+{
+}
+
wxEnhMetaFile *wxEnhMetaFileDC::Close()
{
wxEnhMetaFileDCImpl * const
- impl = wx_static_cast(wxEnhMetaFileDCImpl *, GetImpl());
+ impl = static_cast<wxEnhMetaFileDCImpl *>(GetImpl());
wxCHECK_MSG( impl, NULL, _T("no wxEnhMetaFileDC implementation") );
return impl->Close();