X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d9317fd47263a9521466156d7bf0f7988000bf15..c282ec44024689f736f76772a3ffd1fccf4b7d07:/include/wx/msw/enhmeta.h diff --git a/include/wx/msw/enhmeta.h b/include/wx/msw/enhmeta.h index a7f235453d..fa5389b1d0 100644 --- a/include/wx/msw/enhmeta.h +++ b/include/wx/msw/enhmeta.h @@ -6,16 +6,12 @@ // 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__ - #pragma interface "enhmeta.h" -#endif - #include "wx/dc.h" #if wxUSE_DRAG_AND_DROP @@ -31,7 +27,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; } @@ -43,7 +39,8 @@ public: bool Play(wxDC *dc, wxRect *rectBound = (wxRect *)NULL); // accessors - bool Ok() const { return m_hMF != 0; } + bool Ok() const { return IsOk(); } + bool IsOk() const { return m_hMF != 0; } wxSize GetSize() const; int GetWidth() const { return GetSize().x; } @@ -51,12 +48,17 @@ public: const wxString& GetFileName() const { return m_filename; } + // copy the metafile to the clipboard: the width and height parameters are + // for backwards compatibility (with wxMetaFile) only, they are ignored by + // this method + bool SetClipboard(int width = 0, int height = 0); + // implementation WXHANDLE GetHENHMETAFILE() const { return m_hMF; } void SetHENHMETAFILE(WXHANDLE hMF) { Free(); m_hMF = hMF; } protected: - void Init() { m_hMF = 0; } + void Init(); void Free(); void Assign(const wxEnhMetaFile& mf); @@ -85,18 +87,25 @@ public: // obtain a pointer to the new metafile (caller should delete it) wxEnhMetaFile *Close(); +protected: + virtual void DoGetSize(int *width, int *height) const; + private: - DECLARE_DYNAMIC_CLASS(wxEnhMetaFileDC) + // size passed to ctor and returned by DoGetSize() + int m_width, + m_height; + + 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 and not from wxDataObjectSimple +// so we derive from wxDataObject and not from wxDataObjectSimple class WXDLLEXPORT wxEnhMetaFileDataObject : public wxDataObject { public: @@ -123,6 +132,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