1 ///////////////////////////////////////////////////////////////////////////////
3 // Purpose: common data object classes
4 // Author: Robert Roebling, Vadim Zeitlin
8 // Copyright: (c) wxWindows Team
9 // Licence: wxWindows license
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_DATAOBJ_H_BASE_
13 #define _WX_DATAOBJ_H_BASE_
15 #if defined(__WXMSW__)
16 // ----------------------------------------------------------------------------
17 // wxDataFormat identifies the single format of data
18 // ----------------------------------------------------------------------------
20 class WXDLLEXPORT wxDataFormat
23 // the clipboard formats under Win32 are UINTs
24 typedef unsigned int NativeFormat
;
26 wxDataFormat(NativeFormat format
= wxDF_INVALID
) { m_format
= format
; }
27 wxDataFormat
& operator=(NativeFormat format
)
28 { m_format
= format
; return *this; }
30 // defautl copy ctor/assignment operators ok
32 // comparison (must have both versions)
33 bool operator==(wxDataFormatId format
) const
34 { return m_format
== (NativeFormat
)format
; }
35 bool operator!=(wxDataFormatId format
) const
36 { return m_format
!= (NativeFormat
)format
; }
37 bool operator==(const wxDataFormat
& format
) const
38 { return m_format
== format
.m_format
; }
39 bool operator!=(const wxDataFormat
& format
) const
40 { return m_format
!= format
.m_format
; }
42 // explicit and implicit conversions to NativeFormat which is one of
43 // standard data types (implicit conversion is useful for preserving the
44 // compatibility with old code)
45 NativeFormat
GetFormatId() const { return m_format
; }
46 operator NativeFormat() const { return m_format
; }
48 // this only works with standard ids
49 void SetId(wxDataFormatId format
) { m_format
= format
; }
51 // string ids are used for custom types - this SetId() must be used for
52 // application-specific formats
53 wxString
GetId() const;
54 void SetId(const wxChar
*format
);
57 // returns TRUE if the format is one of those defined in wxDataFormatId
58 bool IsStandard() const { return m_format
> 0 && m_format
< wxDF_MAX
; }
60 NativeFormat m_format
;
63 #include "wx/msw/ole/dataobj.h"
64 #elif defined(__WXMOTIF__)
65 #include "wx/motif/dataobj.h"
66 #elif defined(__WXGTK__)
67 #include "wx/gtk/dataobj.h"
68 #elif defined(__WXQT__)
69 #include "wx/qt/dnd.h"
70 #elif defined(__WXMAC__)
71 #include "wx/mac/dnd.h"
72 #elif defined(__WXSTUBS__)
73 #include "wx/stubs/dnd.h"
76 // ---------------------------------------------------------------------------
77 // wxPrivateDataObject is a specialization of wxDataObject for app specific
78 // data (of some given kind, derive directly from wxDataObject if you wish to
79 // efficiently support multiple formats)
80 // ---------------------------------------------------------------------------
82 class WXDLLEXPORT wxPrivateDataObject
: public wxDataObject
86 wxPrivateDataObject();
87 virtual ~wxPrivateDataObject() { Free(); }
89 // get the format object - it is used to decide whether we support the
90 // given output format or not
91 wxDataFormat
& GetFormat() { return m_format
; }
93 // set data. will make copy of the data
94 void SetData( const void *data
, size_t size
);
96 // returns pointer to data
97 void *GetData() const { return m_data
; }
99 // get the size of the data
100 virtual size_t GetSize() const;
102 // copy data to the given buffer
103 virtual void WriteData( void *dest
) const;
105 // these functions are provided for wxGTK compatibility, their usage is
106 // deprecated - use GetFormat().SetId() instead
107 void SetId( const wxString
& id
) { m_format
.SetId(id
); }
108 wxString
GetId() const { return m_format
.GetId(); }
110 // implement the base class pure virtuals
111 virtual wxDataFormat
GetPreferredFormat() const
113 virtual bool IsSupportedFormat(wxDataFormat format
) const
114 { return m_format
== format
; }
115 virtual size_t GetDataSize() const
117 virtual void GetDataHere(void *dest
) const
121 // the function which really copies the data - called by WriteData() above
122 // and uses GetSize() to get the size of the data
124 // VZ: I really wonder why do we need it
125 void WriteData( const void *data
, void *dest
) const;
136 wxDataFormat m_format
;
141 // _WX_DATAOBJ_H_BASE_