dataobj2.h 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/msw/ole/dataobj2.h
  3. // Purpose: second part of platform specific wxDataObject header -
  4. // declarations of predefined wxDataObjectSimple-derived classes
  5. // Author: Vadim Zeitlin
  6. // Modified by:
  7. // Created: 21.10.99
  8. // Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
  9. // Licence: wxWindows licence
  10. ///////////////////////////////////////////////////////////////////////////////
  11. #ifndef _WX_MSW_OLE_DATAOBJ2_H
  12. #define _WX_MSW_OLE_DATAOBJ2_H
  13. // ----------------------------------------------------------------------------
  14. // wxBitmapDataObject is a specialization of wxDataObject for bitmap data
  15. //
  16. // NB: in fact, under MSW we support CF_DIB (and not CF_BITMAP) clipboard
  17. // format and we also provide wxBitmapDataObject2 for CF_BITMAP (which is
  18. // rarely used). This is ugly, but I haven't found a solution for it yet.
  19. // ----------------------------------------------------------------------------
  20. class WXDLLIMPEXP_CORE wxBitmapDataObject : public wxBitmapDataObjectBase
  21. {
  22. public:
  23. // ctors
  24. wxBitmapDataObject(const wxBitmap& bitmap = wxNullBitmap)
  25. : wxBitmapDataObjectBase(bitmap)
  26. {
  27. SetFormat(wxDF_DIB);
  28. m_data = NULL;
  29. }
  30. // implement base class pure virtuals
  31. virtual size_t GetDataSize() const;
  32. virtual bool GetDataHere(void *buf) const;
  33. virtual bool SetData(size_t len, const void *buf);
  34. virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
  35. { return GetDataSize(); }
  36. virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
  37. void *buf) const
  38. { return GetDataHere(buf); }
  39. virtual bool SetData(const wxDataFormat& WXUNUSED(format),
  40. size_t len, const void *buf)
  41. { return SetData(len, buf); }
  42. private:
  43. // the DIB data
  44. void /* BITMAPINFO */ *m_data;
  45. wxDECLARE_NO_COPY_CLASS(wxBitmapDataObject);
  46. };
  47. // ----------------------------------------------------------------------------
  48. // wxBitmapDataObject2 - a data object for CF_BITMAP
  49. //
  50. // FIXME did I already mention it was ugly?
  51. // ----------------------------------------------------------------------------
  52. class WXDLLIMPEXP_CORE wxBitmapDataObject2 : public wxBitmapDataObjectBase
  53. {
  54. public:
  55. // ctors
  56. wxBitmapDataObject2(const wxBitmap& bitmap = wxNullBitmap)
  57. : wxBitmapDataObjectBase(bitmap)
  58. {
  59. }
  60. // implement base class pure virtuals
  61. virtual size_t GetDataSize() const;
  62. virtual bool GetDataHere(void *buf) const;
  63. virtual bool SetData(size_t len, const void *buf);
  64. virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
  65. { return GetDataSize(); }
  66. virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
  67. void *buf) const
  68. { return GetDataHere(buf); }
  69. virtual bool SetData(const wxDataFormat& WXUNUSED(format),
  70. size_t len, const void *buf)
  71. { return SetData(len, buf); }
  72. private:
  73. wxDECLARE_NO_COPY_CLASS(wxBitmapDataObject2);
  74. };
  75. // ----------------------------------------------------------------------------
  76. // wxFileDataObject - data object for CF_HDROP
  77. // ----------------------------------------------------------------------------
  78. class WXDLLIMPEXP_CORE wxFileDataObject : public wxFileDataObjectBase
  79. {
  80. public:
  81. wxFileDataObject() { }
  82. // implement base class pure virtuals
  83. virtual bool SetData(size_t len, const void *buf);
  84. virtual size_t GetDataSize() const;
  85. virtual bool GetDataHere(void *pData) const;
  86. virtual void AddFile(const wxString& file);
  87. virtual size_t GetDataSize(const wxDataFormat& WXUNUSED(format)) const
  88. { return GetDataSize(); }
  89. virtual bool GetDataHere(const wxDataFormat& WXUNUSED(format),
  90. void *buf) const
  91. { return GetDataHere(buf); }
  92. virtual bool SetData(const wxDataFormat& WXUNUSED(format),
  93. size_t len, const void *buf)
  94. { return SetData(len, buf); }
  95. private:
  96. wxDECLARE_NO_COPY_CLASS(wxFileDataObject);
  97. };
  98. // ----------------------------------------------------------------------------
  99. // wxURLDataObject: data object for URLs
  100. // ----------------------------------------------------------------------------
  101. class WXDLLIMPEXP_CORE wxURLDataObject : public wxDataObjectComposite
  102. {
  103. public:
  104. // initialize with URL in ctor or use SetURL later
  105. wxURLDataObject(const wxString& url = wxEmptyString);
  106. // return the URL as string
  107. wxString GetURL() const;
  108. // Set a string as the URL in the data object
  109. void SetURL(const wxString& url);
  110. // override to set m_textFormat
  111. virtual bool SetData(const wxDataFormat& format,
  112. size_t len,
  113. const void *buf);
  114. private:
  115. // last data object we got data in
  116. wxDataObjectSimple *m_dataObjectLast;
  117. wxDECLARE_NO_COPY_CLASS(wxURLDataObject);
  118. };
  119. #endif // _WX_MSW_OLE_DATAOBJ2_H