]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dataobj.h
typedef unsigned int bool (instead of int) for consistency with defs.h
[wxWidgets.git] / include / wx / dataobj.h
index 5d0b3f23ee5e5d5e0cb146c7ccd265ad2c58fff1..0e9659bfc55a7763d0d058bee0caf80c0874fdaf 100644 (file)
@@ -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__)
 #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__)
 #elif defined(__WXMOTIF__)
-#include "wx/motif/dataobj.h"
+    #include "wx/motif/dataobj.h"
 #elif defined(__WXGTK__)
 #elif defined(__WXGTK__)
-#include "wx/gtk/dataobj.h"
+    #include "wx/gtk/dataobj.h"
 #elif defined(__WXQT__)
 #elif defined(__WXQT__)
-#include "wx/qt/dnd.h"
+    #include "wx/qt/dnd.h"
 #elif defined(__WXMAC__)
 #elif defined(__WXMAC__)
-#include "wx/mac/dnd.h"
+    #include "wx/mac/dnd.h"
+#elif defined(__WXPM__)
+    #include "wx/os2/dataobj.h"
 #elif defined(__WXSTUBS__)
 #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
+};
+
 
 #endif
     // _WX_DATAOBJ_H_BASE_
 
 #endif
     // _WX_DATAOBJ_H_BASE_