1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/palmos/enhmeta.h
3 // Purpose: wxEnhMetaFile class for PalmOS
4 // Author: William Osborne - minimal working wxPalmOS port
8 // Copyright: (c) William Osborne
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_PALMOS_ENHMETA_H_
13 #define _WX_PALMOS_ENHMETA_H_
16 #include "wx/gdiobj.h"
18 #if wxUSE_DRAG_AND_DROP
19 #include "wx/dataobj.h"
22 // ----------------------------------------------------------------------------
23 // wxEnhMetaFile: encapsulation of Win32 HENHMETAFILE
24 // ----------------------------------------------------------------------------
26 class WXDLLIMPEXP_CORE wxEnhMetaFile
: public wxGDIObject
29 wxEnhMetaFile(const wxString
& file
= wxEmptyString
) : m_filename(file
)
31 wxEnhMetaFile(const wxEnhMetaFile
& metafile
)
32 { Init(); Assign(metafile
); }
33 wxEnhMetaFile
& operator=(const wxEnhMetaFile
& metafile
)
34 { Free(); Assign(metafile
); return *this; }
36 virtual ~wxEnhMetaFile()
39 // display the picture stored in the metafile on the given DC
40 bool Play(wxDC
*dc
, wxRect
*rectBound
= NULL
);
43 virtual bool IsOk() const { return m_hMF
!= 0; }
45 wxSize
GetSize() const;
46 int GetWidth() const { return GetSize().x
; }
47 int GetHeight() const { return GetSize().y
; }
49 const wxString
& GetFileName() const { return m_filename
; }
51 // copy the metafile to the clipboard: the width and height parameters are
52 // for backwards compatibility (with wxMetaFile) only, they are ignored by
54 bool SetClipboard(int width
= 0, int height
= 0);
57 WXHANDLE
GetHENHMETAFILE() const { return m_hMF
; }
58 void SetHENHMETAFILE(WXHANDLE hMF
) { Free(); m_hMF
= hMF
; }
61 void Init() { m_hMF
= 0; }
63 void Assign(const wxEnhMetaFile
& mf
);
69 DECLARE_DYNAMIC_CLASS(wxEnhMetaFile
)
72 // ----------------------------------------------------------------------------
73 // wxEnhMetaFileDC: allows to create a wxEnhMetaFile
74 // ----------------------------------------------------------------------------
76 class WXDLLIMPEXP_CORE wxEnhMetaFileDC
: public wxDC
79 // the ctor parameters specify the filename (empty for memory metafiles),
80 // the metafile picture size and the optional description/comment
81 wxEnhMetaFileDC(const wxString
& filename
= wxEmptyString
,
82 int width
= 0, int height
= 0,
83 const wxString
& description
= wxEmptyString
);
85 virtual ~wxEnhMetaFileDC();
87 // obtain a pointer to the new metafile (caller should delete it)
88 wxEnhMetaFile
*Close();
91 DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC
)
94 #if wxUSE_DRAG_AND_DROP
96 // ----------------------------------------------------------------------------
97 // wxEnhMetaFileDataObject is a specialization of wxDataObject for enh metafile
98 // ----------------------------------------------------------------------------
100 // notice that we want to support both CF_METAFILEPICT and CF_ENHMETAFILE and
101 // so we derive from wxDataObject and not from wxDataObjectSimple
102 class WXDLLIMPEXP_CORE wxEnhMetaFileDataObject
: public wxDataObject
106 wxEnhMetaFileDataObject() { }
107 wxEnhMetaFileDataObject(const wxEnhMetaFile
& metafile
)
108 : m_metafile(metafile
) { }
110 // virtual functions which you may override if you want to provide data on
111 // demand only - otherwise, the trivial default versions will be used
112 virtual void SetMetafile(const wxEnhMetaFile
& metafile
)
113 { m_metafile
= metafile
; }
114 virtual wxEnhMetaFile
GetMetafile() const
115 { return m_metafile
; }
117 // implement base class pure virtuals
118 virtual wxDataFormat
GetPreferredFormat(Direction dir
) const;
119 virtual size_t GetFormatCount(Direction dir
) const;
120 virtual void GetAllFormats(wxDataFormat
*formats
, Direction dir
) const;
121 virtual size_t GetDataSize(const wxDataFormat
& format
) const;
122 virtual bool GetDataHere(const wxDataFormat
& format
, void *buf
) const;
123 virtual bool SetData(const wxDataFormat
& format
, size_t len
,
127 wxEnhMetaFile m_metafile
;
129 DECLARE_NO_COPY_CLASS(wxEnhMetaFileDataObject
)
133 // ----------------------------------------------------------------------------
134 // wxEnhMetaFileSimpleDataObject does derive from wxDataObjectSimple which
135 // makes it more convenient to use (it can be used with wxDataObjectComposite)
136 // at the price of not supoprting any more CF_METAFILEPICT but only
138 // ----------------------------------------------------------------------------
140 class WXDLLIMPEXP_CORE wxEnhMetaFileSimpleDataObject
: public wxDataObjectSimple
144 wxEnhMetaFileSimpleDataObject() : wxDataObjectSimple(wxDF_ENHMETAFILE
) { }
145 wxEnhMetaFileSimpleDataObject(const wxEnhMetaFile
& metafile
)
146 : wxDataObjectSimple(wxDF_ENHMETAFILE
), m_metafile(metafile
) { }
148 // virtual functions which you may override if you want to provide data on
149 // demand only - otherwise, the trivial default versions will be used
150 virtual void SetEnhMetafile(const wxEnhMetaFile
& metafile
)
151 { m_metafile
= metafile
; }
152 virtual wxEnhMetaFile
GetEnhMetafile() const
153 { return m_metafile
; }
155 // implement base class pure virtuals
156 virtual size_t GetDataSize() const;
157 virtual bool GetDataHere(void *buf
) const;
158 virtual bool SetData(size_t len
, const void *buf
);
160 virtual size_t GetDataSize(const wxDataFormat
& WXUNUSED(format
)) const
161 { return GetDataSize(); }
162 virtual bool GetDataHere(const wxDataFormat
& WXUNUSED(format
),
164 { return GetDataHere(buf
); }
165 virtual bool SetData(const wxDataFormat
& WXUNUSED(format
),
166 size_t len
, const void *buf
)
167 { return SetData(len
, buf
); }
170 wxEnhMetaFile m_metafile
;
172 DECLARE_NO_COPY_CLASS(wxEnhMetaFileSimpleDataObject
)
175 #endif // wxUSE_DRAG_AND_DROP
177 #endif // _WX_PALMOS_ENHMETA_H_