]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/ole/dataobj.h
Some Unicode changes.
[wxWidgets.git] / include / wx / msw / ole / dataobj.h
index 245c4db718768950b059a145a6a391a39e12e652..80a1e13e43175e6ae98261172724cd74e15797eb 100644 (file)
@@ -25,7 +25,7 @@ struct IDataObject;
 //     do if we really want them)
 // ----------------------------------------------------------------------------
 
-class wxDataObject
+class WXDLLEXPORT wxDataObject
 {
 public:
   // all data formats (values are the same as in windows.h, do not change!)
@@ -65,7 +65,7 @@ public:
     // StdFormat enumerations or a user-defined format)
   virtual bool IsSupportedFormat(wxDataFormat format) const = 0;
     // get the (total) size of data
-  virtual uint GetDataSize() const = 0;
+  virtual size_t GetDataSize() const = 0;
     // copy raw data to provided pointer
   virtual void GetDataHere(void *pBuf) const = 0;
 
@@ -73,6 +73,9 @@ public:
     // retrieve IDataObject interface (for other OLE related classes)
   IDataObject *GetInterface() const { return m_pIDataObject; }
 
+  ////// wxGTK compatibility: hopefully to become the preferred API.
+  virtual wxDataFormat GetFormat() const { return GetPreferredFormat(); }
+
 private:
   IDataObject *m_pIDataObject; // pointer to the COM interface
 };
@@ -80,11 +83,11 @@ private:
 // ----------------------------------------------------------------------------
 // wxTextDataObject is a specialization of wxDataObject for text data
 // ----------------------------------------------------------------------------
-class wxTextDataObject : public wxDataObject
+class WXDLLEXPORT wxTextDataObject : public wxDataObject
 {
 public:
   // ctors
-  wxTextDataObject();
+  wxTextDataObject() { }
   wxTextDataObject(const wxString& strText) : m_strText(strText) { }
   void Init(const wxString& strText) { m_strText = strText; }
 
@@ -93,11 +96,16 @@ public:
     { return (wxDataFormat) wxDataObject::Text; }
   virtual bool IsSupportedFormat(wxDataFormat format) const
     { return format == wxDataObject::Text || format == wxDataObject::Locale; }
-  virtual uint GetDataSize() const
+  virtual size_t GetDataSize() const
     { return m_strText.Len() + 1; } // +1 for trailing '\0'of course
   virtual void GetDataHere(void *pBuf) const
     { memcpy(pBuf, m_strText.c_str(), GetDataSize()); }
 
+  ////// wxGTK compatibility: hopefully to become the preferred API.
+  void SetText(const wxString& strText) { m_strText = strText; }
+  wxString GetText() const { return m_strText; }
+  virtual wxDataFormat GetFormat() const { return wxDF_TEXT; }
+
 private:
   wxString  m_strText;
 };
@@ -106,4 +114,42 @@ private:
 // @@@ TODO: wx{Bitmap|Metafile|...}DataObject
 // ----------------------------------------------------------------------------
 
+// ----------------------------------------------------------------------------
+// wxBitmapDataObject is a specialization of wxDataObject for bitmap data
+// ----------------------------------------------------------------------------
+
+// TODO: implement OLE side of things. At present, it's just for clipboard
+// use.
+class WXDLLEXPORT wxBitmapDataObject : public wxDataObject
+{
+public:
+  // ctors
+  wxBitmapDataObject() {};
+  wxBitmapDataObject(const wxBitmap& bitmap): m_bitmap(bitmap) {}
+  void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; }
+  wxBitmap GetBitmap() const { return m_bitmap; }
+
+  virtual wxDataFormat GetFormat() const { return wxDF_BITMAP; }
+
+  // implement base class pure virtuals
+  virtual wxDataFormat GetPreferredFormat() const
+    { return (wxDataFormat) wxDataObject::Bitmap; }
+  virtual bool IsSupportedFormat(wxDataFormat format) const
+    { return format == wxDataObject::Bitmap; }
+  virtual size_t GetDataSize() const
+    { wxASSERT(false); return 0; } // BEMIMP
+  virtual void GetDataHere(void *pBuf) const
+    { wxASSERT(false); } // BEMIMP
+
+private:
+  wxBitmap  m_bitmap;
+};
+
+// ----------------------------------------------------------------------------
+// wxMetaFileDataObject: see metafile.h is a specialization of wxDataObject for bitmap data
+// ----------------------------------------------------------------------------
+
+// TODO: wxFileDataObject.
+
 #endif  //_WX_OLEDATAOBJ_H
+