X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/371a5b4e62eb415107e045588f614fa49e866e78..38534f596974042130716a26276e9564b0b72295:/include/wx/msw/enhmeta.h diff --git a/include/wx/msw/enhmeta.h b/include/wx/msw/enhmeta.h index 13c668029d..e134750ea6 100644 --- a/include/wx/msw/enhmeta.h +++ b/include/wx/msw/enhmeta.h @@ -12,11 +12,8 @@ #ifndef _WX_MSW_ENHMETA_H_ #define _WX_MSW_ENHMETA_H_ -#ifdef __GNUG__ - #pragma interface "enhmeta.h" -#endif - #include "wx/dc.h" +#include "wx/gdiobj.h" #if wxUSE_DRAG_AND_DROP #include "wx/dataobj.h" @@ -26,12 +23,12 @@ // wxEnhMetaFile: encapsulation of Win32 HENHMETAFILE // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxEnhMetaFile : public wxObject +class WXDLLIMPEXP_CORE wxEnhMetaFile : public wxGDIObject { public: wxEnhMetaFile(const wxString& file = wxEmptyString) : m_filename(file) { Init(); } - wxEnhMetaFile(const wxEnhMetaFile& metafile) + wxEnhMetaFile(const wxEnhMetaFile& metafile) : wxGDIObject() { Init(); Assign(metafile); } wxEnhMetaFile& operator=(const wxEnhMetaFile& metafile) { Free(); Assign(metafile); return *this; } @@ -40,10 +37,10 @@ public: { Free(); } // display the picture stored in the metafile on the given DC - bool Play(wxDC *dc, wxRect *rectBound = (wxRect *)NULL); + bool Play(wxDC *dc, wxRect *rectBound = NULL); // accessors - bool Ok() const { return m_hMF != 0; } + virtual bool IsOk() const { return m_hMF != 0; } wxSize GetSize() const; int GetWidth() const { return GetSize().x; } @@ -61,10 +58,15 @@ public: void SetHENHMETAFILE(WXHANDLE hMF) { Free(); m_hMF = hMF; } protected: - void Init() { m_hMF = 0; } + void Init(); void Free(); void Assign(const wxEnhMetaFile& mf); + // we don't use these functions (but probably should) but have to implement + // them as they're pure virtual in the base class + virtual wxGDIRefData *CreateGDIRefData() const; + virtual wxGDIRefData *CloneGDIRefData(const wxGDIRefData *data) const; + private: wxString m_filename; WXHANDLE m_hMF; @@ -76,7 +78,7 @@ private: // wxEnhMetaFileDC: allows to create a wxEnhMetaFile // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxEnhMetaFileDC : public wxDC +class WXDLLIMPEXP_CORE wxEnhMetaFileDC : public wxDC { public: // the ctor parameters specify the filename (empty for memory metafiles), @@ -85,13 +87,19 @@ public: int width = 0, int height = 0, const wxString& description = wxEmptyString); - virtual ~wxEnhMetaFileDC(); + // as above, but takes reference DC as first argument to take resolution, + // size, font metrics etc. from + wxEXPLICIT + wxEnhMetaFileDC(const wxDC& referenceDC, + const wxString& filename = wxEmptyString, + int width = 0, int height = 0, + const wxString& description = wxEmptyString); // obtain a pointer to the new metafile (caller should delete it) wxEnhMetaFile *Close(); private: - DECLARE_DYNAMIC_CLASS(wxEnhMetaFileDC) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC) }; #if wxUSE_DRAG_AND_DROP @@ -102,7 +110,7 @@ private: // notice that we want to support both CF_METAFILEPICT and CF_ENHMETAFILE and // so we derive from wxDataObject and not from wxDataObjectSimple -class WXDLLEXPORT wxEnhMetaFileDataObject : public wxDataObject +class WXDLLIMPEXP_CORE wxEnhMetaFileDataObject : public wxDataObject { public: // ctors @@ -128,6 +136,8 @@ public: protected: wxEnhMetaFile m_metafile; + + wxDECLARE_NO_COPY_CLASS(wxEnhMetaFileDataObject); }; @@ -138,7 +148,7 @@ protected: // CF_ENHMETAFILE // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxEnhMetaFileSimpleDataObject : public wxDataObjectSimple +class WXDLLIMPEXP_CORE wxEnhMetaFileSimpleDataObject : public wxDataObjectSimple { public: // ctors @@ -158,8 +168,19 @@ public: virtual bool GetDataHere(void *buf) const; virtual bool SetData(size_t len, const void *buf); + virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const + { return GetDataSize(); } + virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format), + void *buf) const + { return GetDataHere(buf); } + virtual bool SetData(const wxDataFormat& WXUNUSED(format), + size_t len, const void *buf) + { return SetData(len, buf); } + protected: wxEnhMetaFile m_metafile; + + wxDECLARE_NO_COPY_CLASS(wxEnhMetaFileSimpleDataObject); }; #endif // wxUSE_DRAG_AND_DROP