]> git.saurik.com Git - wxWidgets.git/blame - include/wx/msw/ole/dataobj.h
ScreenToClient() implemented correctly
[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>
bbcdf8bc 9// Licence: wxWindows licence
1737035f
VZ
10///////////////////////////////////////////////////////////////////////////////
11
bbcdf8bc
JS
12#ifndef _WX_OLEDATAOBJ_H
13#define _WX_OLEDATAOBJ_H
1737035f
VZ
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
8853b9a8 28class WXDLLEXPORT wxDataObject
1737035f
VZ
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
40e1a9c0
JS
54 // function to return symbolic name of clipboard format (debug messages)
55 static const char *GetFormatName(wxDataFormat format);
1737035f
VZ
56
57 // ctor & dtor
58 wxDataObject();
59 ~wxDataObject();
60
61 // pure virtuals to override
62 // get the best suited format for our data
63 virtual wxDataFormat GetPreferredFormat() const = 0;
64 // decide if we support this format (should be one of values of
65 // StdFormat enumerations or a user-defined format)
66 virtual bool IsSupportedFormat(wxDataFormat format) const = 0;
67 // get the (total) size of data
3cda6353 68 virtual size_t GetDataSize() const = 0;
1737035f
VZ
69 // copy raw data to provided pointer
70 virtual void GetDataHere(void *pBuf) const = 0;
71
72 // accessors
73 // retrieve IDataObject interface (for other OLE related classes)
74 IDataObject *GetInterface() const { return m_pIDataObject; }
75
06e43511
JS
76 ////// wxGTK compatibility: hopefully to become the preferred API.
77 virtual wxDataFormat GetFormat() const { return GetPreferredFormat(); }
78
1737035f
VZ
79private:
80 IDataObject *m_pIDataObject; // pointer to the COM interface
81};
82
83// ----------------------------------------------------------------------------
84// wxTextDataObject is a specialization of wxDataObject for text data
85// ----------------------------------------------------------------------------
8853b9a8 86class WXDLLEXPORT wxTextDataObject : public wxDataObject
1737035f
VZ
87{
88public:
89 // ctors
26f86486 90 wxTextDataObject() { }
1737035f
VZ
91 wxTextDataObject(const wxString& strText) : m_strText(strText) { }
92 void Init(const wxString& strText) { m_strText = strText; }
93
94 // implement base class pure virtuals
95 virtual wxDataFormat GetPreferredFormat() const
b3324be2 96 { return (wxDataFormat) wxDataObject::Text; }
1737035f
VZ
97 virtual bool IsSupportedFormat(wxDataFormat format) const
98 { return format == wxDataObject::Text || format == wxDataObject::Locale; }
3cda6353 99 virtual size_t GetDataSize() const
1737035f
VZ
100 { return m_strText.Len() + 1; } // +1 for trailing '\0'of course
101 virtual void GetDataHere(void *pBuf) const
102 { memcpy(pBuf, m_strText.c_str(), GetDataSize()); }
103
06e43511
JS
104 ////// wxGTK compatibility: hopefully to become the preferred API.
105 void SetText(const wxString& strText) { m_strText = strText; }
106 wxString GetText() const { return m_strText; }
107 virtual wxDataFormat GetFormat() const { return wxDF_TEXT; }
108
1737035f
VZ
109private:
110 wxString m_strText;
111};
112
113// ----------------------------------------------------------------------------
114// @@@ TODO: wx{Bitmap|Metafile|...}DataObject
115// ----------------------------------------------------------------------------
116
06e43511
JS
117// ----------------------------------------------------------------------------
118// wxBitmapDataObject is a specialization of wxDataObject for bitmap data
119// ----------------------------------------------------------------------------
120
121// TODO: implement OLE side of things. At present, it's just for clipboard
122// use.
123class WXDLLEXPORT wxBitmapDataObject : public wxDataObject
124{
125public:
126 // ctors
127 wxBitmapDataObject() {};
128 wxBitmapDataObject(const wxBitmap& bitmap): m_bitmap(bitmap) {}
129 void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
130 wxBitmap GetBitmap() const { return m_bitmap; }
131
132 virtual wxDataFormat GetFormat() const { return wxDF_BITMAP; }
133
06e43511
JS
134 // implement base class pure virtuals
135 virtual wxDataFormat GetPreferredFormat() const
41618278 136 { return (wxDataFormat) wxDataObject::Bitmap; }
06e43511 137 virtual bool IsSupportedFormat(wxDataFormat format) const
41618278 138 { return format == wxDataObject::Bitmap; }
06e43511 139 virtual size_t GetDataSize() const
41618278 140 { wxASSERT(false); return 0; } // BEMIMP
06e43511 141 virtual void GetDataHere(void *pBuf) const
41618278 142 { wxASSERT(false); } // BEMIMP
06e43511
JS
143
144private:
145 wxBitmap m_bitmap;
146};
147
148// ----------------------------------------------------------------------------
149// wxMetaFileDataObject: see metafile.h is a specialization of wxDataObject for bitmap data
150// ----------------------------------------------------------------------------
151
657865d2 152// TODO: wxFileDataObject.
2845ddc2 153
bbcdf8bc 154#endif //_WX_OLEDATAOBJ_H
06e43511 155