]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/ole/dataobj.h
* Posix/SGI/No threads added
[wxWidgets.git] / include / wx / msw / ole / dataobj.h
CommitLineData
1737035f
VZ
1///////////////////////////////////////////////////////////////////////////////
2// Name: ole/dataobj.h
3// Purpose: declaration of the wxDataObject class
4// Author: Vadim Zeitlin
5// Modified by:
6// Created: 10.05.98
7// RCS-ID: $Id$
8// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
9// Licence: wxWindows license
10///////////////////////////////////////////////////////////////////////////////
11
12#ifndef _OLEDATAOBJ_H
13#define _OLEDATAOBJ_H
14
15// ----------------------------------------------------------------------------
16// forward declarations
17// ----------------------------------------------------------------------------
18struct IDataObject;
19
20// ----------------------------------------------------------------------------
21// wxDataObject is a "smart" and polymorphic piece of data.
22//
23// @@@ it's currently "read-only" from COM point of view, i.e. we don't support
24// SetData. We don't support all advise functions neither (but it's easy to
25// do if we really want them)
26// ----------------------------------------------------------------------------
27
28class wxDataObject
29{
30public:
31 // all data formats (values are the same as in windows.h, do not change!)
32 enum StdFormat
33 {
34 Invalid,
35 Text,
36 Bitmap,
37 MetafilePict,
38 Sylk,
39 Dif,
40 Tiff,
41 OemText,
42 Dib,
43 Palette,
44 Pendata,
45 Riff,
46 Wave,
47 UnicodeText,
48 EnhMetafile,
49 Hdrop,
50 Locale,
51 Max
52 };
53
54 #ifdef __DEBUG__
55 // function to return symbolic name of clipboard format (debug messages)
56 static const char *GetFormatName(wxDataFormat format);
329b53d8 57 #else // not used in release mode
43d811ea 58 inline const char* GetFormatName(wxDataFormat format) { return ""; }
1737035f
VZ
59 #endif
60
61 // ctor & dtor
62 wxDataObject();
63 ~wxDataObject();
64
65 // pure virtuals to override
66 // get the best suited format for our data
67 virtual wxDataFormat GetPreferredFormat() const = 0;
68 // decide if we support this format (should be one of values of
69 // StdFormat enumerations or a user-defined format)
70 virtual bool IsSupportedFormat(wxDataFormat format) const = 0;
71 // get the (total) size of data
72 virtual uint GetDataSize() const = 0;
73 // copy raw data to provided pointer
74 virtual void GetDataHere(void *pBuf) const = 0;
75
76 // accessors
77 // retrieve IDataObject interface (for other OLE related classes)
78 IDataObject *GetInterface() const { return m_pIDataObject; }
79
80private:
81 IDataObject *m_pIDataObject; // pointer to the COM interface
82};
83
84// ----------------------------------------------------------------------------
85// wxTextDataObject is a specialization of wxDataObject for text data
86// ----------------------------------------------------------------------------
87class wxTextDataObject : public wxDataObject
88{
89public:
90 // ctors
91 wxTextDataObject();
92 wxTextDataObject(const wxString& strText) : m_strText(strText) { }
93 void Init(const wxString& strText) { m_strText = strText; }
94
95 // implement base class pure virtuals
96 virtual wxDataFormat GetPreferredFormat() const
97 { return wxDataObject::Text; }
98 virtual bool IsSupportedFormat(wxDataFormat format) const
99 { return format == wxDataObject::Text || format == wxDataObject::Locale; }
100 virtual uint GetDataSize() const
101 { return m_strText.Len() + 1; } // +1 for trailing '\0'of course
102 virtual void GetDataHere(void *pBuf) const
103 { memcpy(pBuf, m_strText.c_str(), GetDataSize()); }
104
105private:
106 wxString m_strText;
107};
108
109// ----------------------------------------------------------------------------
110// @@@ TODO: wx{Bitmap|Metafile|...}DataObject
111// ----------------------------------------------------------------------------
112
329b53d8 113#endif //_OLEDATAOBJ_H