X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/25889d3c43f537fea00a2b7d6df7bd7e63e113f8..159b66c02a8f1c724d1af3c768ad5d90f4c8a0e2:/include/wx/msw/ole/dataobj.h diff --git a/include/wx/msw/ole/dataobj.h b/include/wx/msw/ole/dataobj.h index 1fcfb1f30f..41b013a9e8 100644 --- a/include/wx/msw/ole/dataobj.h +++ b/include/wx/msw/ole/dataobj.h @@ -1,132 +1,56 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: ole/dataobj.h +// Name: msw/ole/dataobj.h // Purpose: declaration of the wxDataObject class // Author: Vadim Zeitlin -// Modified by: +// Modified by: // Created: 10.05.98 // RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef _WX_OLEDATAOBJ_H -#define _WX_OLEDATAOBJ_H +#ifndef _WX_MSW_OLE_DATAOBJ_H +#define _WX_MSW_OLE_DATAOBJ_H // ---------------------------------------------------------------------------- // forward declarations // ---------------------------------------------------------------------------- + struct IDataObject; // ---------------------------------------------------------------------------- // wxDataObject is a "smart" and polymorphic piece of data. -// -// 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 WXDLLEXPORT wxDataObject +class WXDLLEXPORT wxDataObject : public wxDataObjectBase { public: - // function to return symbolic name of clipboard format (debug messages) - static const char *GetFormatName(wxDataFormat format); - - // ctor & dtor - wxDataObject(); - virtual ~wxDataObject(); + // ctor & dtor + wxDataObject(); + virtual ~wxDataObject(); - // pure virtuals to override - // 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 - // wxDataFormatId enumerations or a user-defined format) - virtual bool IsSupportedFormat(wxDataFormat format) const = 0; - // get the (total) size of data - virtual size_t GetDataSize() const = 0; - // copy raw data to provided pointer - virtual void GetDataHere(void *pBuf) const = 0; - - // accessors // retrieve IDataObject interface (for other OLE related classes) - IDataObject *GetInterface() const { return m_pIDataObject; } + IDataObject *GetInterface() const { return m_pIDataObject; } - ////// wxGTK compatibility: hopefully to become the preferred API. - virtual wxDataFormat GetFormat() const { return GetPreferredFormat(); } + // tell the object that it should be now owned by IDataObject - i.e. when + // it is deleted, it should delete us as well + void SetAutoDelete(); -private: - IDataObject *m_pIDataObject; // pointer to the COM interface -}; + // return TRUE if we support this format in "Get" direction + bool IsSupportedFormat(const wxDataFormat& format) const + { return wxDataObjectBase::IsSupported(format, Get); } -// ---------------------------------------------------------------------------- -// wxTextDataObject is a specialization of wxDataObject for text data -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxTextDataObject : public wxDataObject -{ -public: - // ctors - 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 wxDF_TEXT; } - virtual bool IsSupportedFormat(wxDataFormat format) 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()); } +#ifdef __WXDEBUG__ + // function to return symbolic name of clipboard format (for debug messages) + static const wxChar *GetFormatName(wxDataFormat format); - ////// 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; } + #define wxGetFormatName(format) wxDataObject::GetFormatName(format) +#else // !Debug + #define wxGetFormatName(format) "" +#endif // Debug/!Debug private: - wxString m_strText; + IDataObject *m_pIDataObject; // pointer to the COM interface }; -// ---------------------------------------------------------------------------- -// @@@ 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 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 - +#endif //_WX_MSW_OLE_DATAOBJ_H