X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2d120f8391920145647ec10e84629bc21fa9f1bb..0371a6914315f283371985bb751fb37504dd63d8:/include/wx/dataobj.h diff --git a/include/wx/dataobj.h b/include/wx/dataobj.h index 5d0b3f23ee..0e9659bfc5 100644 --- a/include/wx/dataobj.h +++ b/include/wx/dataobj.h @@ -1,19 +1,98 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: dataobj.h +// Purpose: common data object classes +// Author: Robert Roebling, Vadim Zeitlin +// Modified by: +// Created: 26.05.99 +// RCS-ID: $Id$ +// Copyright: (c) wxWindows Team +// Licence: wxWindows license +/////////////////////////////////////////////////////////////////////////////// + #ifndef _WX_DATAOBJ_H_BASE_ #define _WX_DATAOBJ_H_BASE_ #if defined(__WXMSW__) -#include "wx/msw/ole/dataobj.h" + #include "wx/msw/ole/dataobj.h" #elif defined(__WXMOTIF__) -#include "wx/motif/dataobj.h" + #include "wx/motif/dataobj.h" #elif defined(__WXGTK__) -#include "wx/gtk/dataobj.h" + #include "wx/gtk/dataobj.h" #elif defined(__WXQT__) -#include "wx/qt/dnd.h" + #include "wx/qt/dnd.h" #elif defined(__WXMAC__) -#include "wx/mac/dnd.h" + #include "wx/mac/dnd.h" +#elif defined(__WXPM__) + #include "wx/os2/dataobj.h" #elif defined(__WXSTUBS__) -#include "wx/stubs/dnd.h" + #include "wx/stubs/dnd.h" +#endif + +// --------------------------------------------------------------------------- +// wxPrivateDataObject is a specialization of wxDataObject for app specific +// data (of some given kind, derive directly from wxDataObject if you wish to +// efficiently support multiple formats) +// --------------------------------------------------------------------------- + +class WXDLLEXPORT wxPrivateDataObject : public wxDataObject +{ +#if defined(__WXGTK__) || defined(__WXMOTIF__) + DECLARE_DYNAMIC_CLASS( wxPrivateDataObject ) +#endif + +public: + wxPrivateDataObject(); + virtual ~wxPrivateDataObject() { Free(); } + + // get the format object - it is used to decide whether we support the + // given output format or not + wxDataFormat& GetFormat() { return m_format; } + + // set data. will make copy of the data + void SetData( const void *data, size_t size ); + + // returns pointer to data + void *GetData() const { return m_data; } + + // get the size of the data + virtual size_t GetSize() const; + + // copy data to the given buffer + virtual void WriteData( void *dest ) const; + + // these functions are provided for wxGTK compatibility, their usage is + // deprecated - use GetFormat().SetId() instead + void SetId( const wxString& id ) { m_format.SetId(id); } + wxString GetId() const { return m_format.GetId(); } + + // implement the base class pure virtuals + virtual wxDataFormat GetPreferredFormat() const + { return m_format; } + virtual bool IsSupportedFormat(wxDataFormat format) const + { return m_format == format; } + virtual size_t GetDataSize() const + { return m_size; } + virtual void GetDataHere(void *dest) const + { WriteData(dest); } + + // the function which really copies the data - called by WriteData() above + // and uses GetSize() to get the size of the data + void WriteData( const void *data, void *dest ) const; + +private: + // free the data + void Free(); + + // the data + size_t m_size; + void *m_data; + +#if !defined(__WXGTK__) && !defined(__WXMOTIF__) + // the data format + wxDataFormat m_format; #endif +}; + #endif // _WX_DATAOBJ_H_BASE_