]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/msw/ole/dataobj.h
Added fixes for Unicode compilation.
[wxWidgets.git] / include / wx / msw / ole / dataobj.h
index 7a7c8a84ed4361ba3eefacc6dffa9fe5ef5df8c2..3c12d8ff804e2d6cab1e21c8da8c1beb3a0c3f75 100644 (file)
@@ -6,11 +6,11 @@
 // Created:     10.05.98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifndef   _OLEDATAOBJ_H
-#define   _OLEDATAOBJ_H
+#ifndef   _WX_OLEDATAOBJ_H
+#define   _WX_OLEDATAOBJ_H
 
 // ----------------------------------------------------------------------------
 // forward declarations
@@ -20,43 +20,16 @@ struct IDataObject;
 // ----------------------------------------------------------------------------
 // wxDataObject is a "smart" and polymorphic piece of data.
 //
-// @@@ it's currently "read-only" from COM point of view, i.e. we don't support
-//     SetData. We don't support all advise functions neither (but it's easy to
-//     do if we really want them)
+// TODO it's currently "read-only" from COM point of view, i.e. we don't support
+//      SetData. We don't support all advise functions neither (but it's easy to
+//      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!)
-  enum StdFormat
-  {
-    Invalid,
-    Text,
-    Bitmap,
-    MetafilePict,
-    Sylk,
-    Dif,
-    Tiff,
-    OemText,
-    Dib,
-    Palette,
-    Pendata,
-    Riff,
-    Wave,
-    UnicodeText,
-    EnhMetafile,
-    Hdrop,
-    Locale,
-    Max
-  };
-
-  #ifdef  __DEBUG__
-    // function to return symbolic name of clipboard format (debug messages)
-    static const char *GetFormatName(wxDataFormat format);
-  #else // not used in release mode
-    inline const char* GetFormatName(wxDataFormat format) { return ""; }
-  #endif
+  // function to return symbolic name of clipboard format (debug messages)
+  static const char *GetFormatName(wxDataFormat format);
 
   // ctor & dtor
   wxDataObject();
@@ -66,10 +39,10 @@ public:
     // get the best suited format for our data
   virtual wxDataFormat GetPreferredFormat() const = 0;
     // decide if we support this format (should be one of values of
-    // StdFormat enumerations or a user-defined format)
+    // wxDataFormatId 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;
 
@@ -77,6 +50,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
 };
@@ -84,24 +60,29 @@ 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; }
 
   // implement base class pure virtuals
   virtual wxDataFormat GetPreferredFormat() const
-    { return wxDataObject::Text; }
+    { return wxDF_TEXT; }
   virtual bool IsSupportedFormat(wxDataFormat format) const
-    { return format == wxDataObject::Text || format == wxDataObject::Locale; }
-  virtual uint GetDataSize() const
+    { return format == wxDF_TEXT || format == wxDF_LOCALE; }
+  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;
 };
@@ -110,4 +91,42 @@ private:
 // @@@ TODO: wx{Bitmap|Metafile|...}DataObject
 // ----------------------------------------------------------------------------
 
-#endif  //_OLEDATAOBJ_H
+// ----------------------------------------------------------------------------
+// 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 wxDF_BITMAP; }
+  virtual bool IsSupportedFormat(wxDataFormat format) const
+    { return format == wxDF_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
+