X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bfbd6dc1921a17bd880d580dd660e8bc478a9391..c8e1af672f46e93ae2fe6d7f9d5b35a3d8d49c16:/include/wx/msw/enhmeta.h diff --git a/include/wx/msw/enhmeta.h b/include/wx/msw/enhmeta.h index 88f7cfa8a9..06b425a0c6 100644 --- a/include/wx/msw/enhmeta.h +++ b/include/wx/msw/enhmeta.h @@ -6,13 +6,13 @@ // Created: 13.01.00 // RCS-ID: $Id$ // Copyright: (c) 2000 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_MSW_ENHMETA_H_ #define _WX_MSW_ENHMETA_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "enhmeta.h" #endif @@ -31,7 +31,7 @@ class WXDLLEXPORT wxEnhMetaFile : public wxObject public: wxEnhMetaFile(const wxString& file = wxEmptyString) : m_filename(file) { Init(); } - wxEnhMetaFile(const wxEnhMetaFile& metafile) + wxEnhMetaFile(const wxEnhMetaFile& metafile) : wxObject() { Init(); Assign(metafile); } wxEnhMetaFile& operator=(const wxEnhMetaFile& metafile) { Free(); Assign(metafile); return *this; } @@ -61,7 +61,7 @@ public: void SetHENHMETAFILE(WXHANDLE hMF) { Free(); m_hMF = hMF; } protected: - void Init() { m_hMF = 0; } + void Init(); void Free(); void Assign(const wxEnhMetaFile& mf); @@ -91,15 +91,15 @@ public: wxEnhMetaFile *Close(); private: - DECLARE_DYNAMIC_CLASS(wxEnhMetaFileDC) + DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC) }; +#if wxUSE_DRAG_AND_DROP + // ---------------------------------------------------------------------------- // wxEnhMetaFileDataObject is a specialization of wxDataObject for enh metafile // ---------------------------------------------------------------------------- -#if wxUSE_DRAG_AND_DROP - // 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 @@ -128,6 +128,51 @@ public: protected: wxEnhMetaFile m_metafile; + + DECLARE_NO_COPY_CLASS(wxEnhMetaFileDataObject) +}; + + +// ---------------------------------------------------------------------------- +// wxEnhMetaFileSimpleDataObject does derive from wxDataObjectSimple which +// makes it more convenient to use (it can be used with wxDataObjectComposite) +// at the price of not supoprting any more CF_METAFILEPICT but only +// CF_ENHMETAFILE +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxEnhMetaFileSimpleDataObject : public wxDataObjectSimple +{ +public: + // ctors + wxEnhMetaFileSimpleDataObject() : wxDataObjectSimple(wxDF_ENHMETAFILE) { } + wxEnhMetaFileSimpleDataObject(const wxEnhMetaFile& metafile) + : wxDataObjectSimple(wxDF_ENHMETAFILE), m_metafile(metafile) { } + + // virtual functions which you may override if you want to provide data on + // demand only - otherwise, the trivial default versions will be used + virtual void SetEnhMetafile(const wxEnhMetaFile& metafile) + { m_metafile = metafile; } + virtual wxEnhMetaFile GetEnhMetafile() const + { return m_metafile; } + + // implement base class pure virtuals + virtual size_t GetDataSize() const; + 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; + + DECLARE_NO_COPY_CLASS(wxEnhMetaFileSimpleDataObject) }; #endif // wxUSE_DRAG_AND_DROP