wxSize wxEnhMetaFile::GetSize() const { wxSize size = wxDefaultSize; if ( Ok() ) { ENHMETAHEADER hdr; if ( !::GetEnhMetaFileHeader(GetEMF(), sizeof(hdr), &hdr) ) { wxLogLastError(_T("GetEnhMetaFileHeader")); } else { // the width and height are in HIMETRIC (0.01mm) units, transform // them to pixels LONG w = hdr.rclFrame.right, h = hdr.rclFrame.bottom; HIMETRICToPixel(&w, &h); size.x = w; size.y = h; } } return size; }
bool wxEnhMetaFile::Play(wxDC *dc, wxRect *rectBound) { wxCHECK_MSG( Ok(), false, _T("can't play invalid enhanced metafile") ); wxCHECK_MSG( dc, false, _T("invalid wxDC in wxEnhMetaFile::Play") ); RECT rect; if ( rectBound ) { rect.top = rectBound->y; rect.left = rectBound->x; rect.right = rectBound->x + rectBound->width; rect.bottom = rectBound->y + rectBound->height; } else { wxSize size = GetSize(); rect.top = rect.left = 0; rect.right = size.x; rect.bottom = size.y; } if ( !::PlayEnhMetaFile(GetHdcOf(*dc), GetEMF(), &rect) ) { wxLogLastError(_T("PlayEnhMetaFile")); return false; } return true; }
void wxEnhMetaFile::Free() { if ( m_hMF ) { if ( !::DeleteEnhMetaFile(GetEMF()) ) { wxLogLastError(_T("DeleteEnhMetaFile")); } } }
bool wxEnhMetaFile::Play(wxDC *dc, wxRect *rectBound) { wxCHECK_MSG( IsOk(), false, wxT("can't play invalid enhanced metafile") ); wxCHECK_MSG( dc, false, wxT("invalid wxDC in wxEnhMetaFile::Play") ); RECT rect; if ( rectBound ) { rect.top = rectBound->y; rect.left = rectBound->x; rect.right = rectBound->x + rectBound->width; rect.bottom = rectBound->y + rectBound->height; } else { wxSize size = GetSize(); rect.top = rect.left = 0; rect.right = size.x; rect.bottom = size.y; } wxDCImpl *impl = dc->GetImpl(); wxMSWDCImpl *msw_impl = wxDynamicCast( impl, wxMSWDCImpl ); if (!msw_impl) return false; if ( !::PlayEnhMetaFile(GetHdcOf(*msw_impl), GetEMF(), &rect) ) { wxLogLastError(wxT("PlayEnhMetaFile")); return false; } return true; }