]>
git.saurik.com Git - wxWidgets.git/blob - include/wx/mediactrl.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/mediactrl.h
3 // Purpose: wxMediaCtrl class
4 // Author: Ryan Norton <wxprojects@comcast.net>
8 // Copyright: (c) Ryan Norton
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 // ============================================================================
14 // ============================================================================
16 // ----------------------------------------------------------------------------
18 // ----------------------------------------------------------------------------
19 #ifndef _WX_MEDIACTRL_H_
20 #define _WX_MEDIACTRL_H_
22 // ----------------------------------------------------------------------------
23 // Pre-compiled header stuff
24 // ----------------------------------------------------------------------------
25 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
26 #pragma interface "mediactrl.h"
29 // ----------------------------------------------------------------------------
31 // ----------------------------------------------------------------------------
34 // ----------------------------------------------------------------------------
36 // ----------------------------------------------------------------------------
38 #include "wx/control.h"
41 // ============================================================================
43 // ============================================================================
45 // ----------------------------------------------------------------------------
49 // ----------------------------------------------------------------------------
58 enum wxMediaTimeFormat
60 wxMEDIATIMEFORMAT_TIME
63 #define wxMEDIABACKEND_DIRECTSHOW wxT("wxAMMediaBackend")
64 #define wxMEDIABACKEND_MCI wxT("wxMCIMediaBackend")
65 #define wxMEDIABACKEND_QUICKTIME wxT("wxQTMediaBackend")
67 // ----------------------------------------------------------------------------
71 // ----------------------------------------------------------------------------
73 class WXDLLEXPORT wxMediaEvent
: public wxNotifyEvent
76 // ------------------------------------------------------------------------
77 // wxMediaEvent Constructor
79 // Normal constructor, much the same as wxNotifyEvent
80 // ------------------------------------------------------------------------
81 wxMediaEvent(wxEventType commandType
= wxEVT_NULL
, int id
= 0)
82 : wxNotifyEvent(commandType
, id
)
85 // ------------------------------------------------------------------------
86 // wxMediaEvent Copy Constructor
88 // Normal copy constructor, much the same as wxNotifyEvent
89 // ------------------------------------------------------------------------
90 wxMediaEvent(const wxMediaEvent
&clone
)
91 : wxNotifyEvent(clone
)
94 // ------------------------------------------------------------------------
95 // wxMediaEvent::Clone
97 // Allocates a copy of this object.
98 // Required for wxEvtHandler::AddPendingEvent
99 // ------------------------------------------------------------------------
100 virtual wxEvent
*Clone() const
101 { return new wxMediaEvent(*this); }
104 // Put this class on wxWidget's RTTI table
105 DECLARE_DYNAMIC_CLASS(wxMediaEvent
)
108 // ----------------------------------------------------------------------------
112 // ----------------------------------------------------------------------------
114 class wxMediaCtrl
: public wxControl
117 wxMediaCtrl() : m_imp(NULL
), m_bLoaded(false), m_bLoop(false)
120 wxMediaCtrl(wxWindow
* parent
, wxWindowID id
,
121 const wxString
& fileName
= wxT(""),
122 const wxPoint
& pos
= wxDefaultPosition
,
123 const wxSize
& size
= wxDefaultSize
,
125 const wxString
& szBackend
= wxT(""),
126 const wxValidator
& validator
= wxDefaultValidator
,
127 const wxString
& name
= wxT("mediaCtrl"))
128 : m_imp(NULL
), m_bLoaded(false), m_bLoop(false)
129 { Create(parent
, id
, fileName
, pos
, size
, style
,
130 szBackend
, validator
, name
); }
132 wxMediaCtrl(wxWindow
* parent
, wxWindowID id
,
133 const wxURI
& location
,
134 const wxPoint
& pos
= wxDefaultPosition
,
135 const wxSize
& size
= wxDefaultSize
,
137 const wxString
& szBackend
= wxT(""),
138 const wxValidator
& validator
= wxDefaultValidator
,
139 const wxString
& name
= wxT("mediaCtrl"))
140 : m_imp(NULL
), m_bLoop(false)
141 { Create(parent
, id
, location
, pos
, size
, style
,
142 szBackend
, validator
, name
); }
146 bool Create(wxWindow
* parent
, wxWindowID id
,
147 const wxString
& fileName
= wxT(""),
148 const wxPoint
& pos
= wxDefaultPosition
,
149 const wxSize
& size
= wxDefaultSize
,
151 const wxString
& szBackend
= wxT(""),
152 const wxValidator
& validator
= wxDefaultValidator
,
153 const wxString
& name
= wxT("mediaCtrl"));
155 bool Create(wxWindow
* parent
, wxWindowID id
,
156 const wxURI
& location
,
157 const wxPoint
& pos
= wxDefaultPosition
,
158 const wxSize
& size
= wxDefaultSize
,
160 const wxString
& szBackend
= wxT(""),
161 const wxValidator
& validator
= wxDefaultValidator
,
162 const wxString
& name
= wxT("mediaCtrl"));
164 bool DoCreate(wxClassInfo
* instance
,
165 wxWindow
* parent
, wxWindowID id
,
166 const wxPoint
& pos
= wxDefaultPosition
,
167 const wxSize
& size
= wxDefaultSize
,
169 const wxValidator
& validator
= wxDefaultValidator
,
170 const wxString
& name
= wxT("mediaCtrl"));
172 static wxClassInfo
* NextBackend();
179 bool Load(const wxString
& fileName
);
180 bool Load(const wxURI
& location
);
182 void Loop(bool bLoop
= true);
185 wxMediaState
GetState();
187 double GetPlaybackRate();
188 bool SetPlaybackRate(double dRate
);
190 bool SetPosition(wxLongLong where
);
191 wxLongLong
GetPosition();
192 wxLongLong
GetDuration();
195 void OnMediaFinished(wxMediaEvent
& evt
);
196 virtual void DoMoveWindow(int x
, int y
, int w
, int h
);
197 wxSize
DoGetBestSize() const;
199 class wxMediaBackend
* m_imp
;
203 DECLARE_DYNAMIC_CLASS(wxMediaCtrl
);
206 // ----------------------------------------------------------------------------
210 // Currently an internal class - API stability not gauranteed.
212 // ----------------------------------------------------------------------------
214 class wxMediaBackend
: public wxObject
220 virtual ~wxMediaBackend();
222 virtual bool CreateControl(wxControl
* WXUNUSED(ctrl
),
223 wxWindow
* WXUNUSED(parent
),
224 wxWindowID
WXUNUSED(id
),
225 const wxPoint
& WXUNUSED(pos
),
226 const wxSize
& WXUNUSED(size
),
227 long WXUNUSED(style
),
228 const wxValidator
& WXUNUSED(validator
),
229 const wxString
& WXUNUSED(name
))
239 virtual bool Load(const wxString
& WXUNUSED(fileName
))
241 virtual bool Load(const wxURI
& WXUNUSED(location
))
244 virtual bool SetPosition(wxLongLong
WXUNUSED(where
))
246 virtual wxLongLong
GetPosition()
248 virtual wxLongLong
GetDuration()
251 virtual void Move(int WXUNUSED(x
), int WXUNUSED(y
),
252 int WXUNUSED(w
), int WXUNUSED(h
))
254 virtual wxSize
GetVideoSize() const
255 { return wxSize(0,0); }
257 virtual double GetPlaybackRate()
259 virtual bool SetPlaybackRate(double WXUNUSED(dRate
))
262 virtual wxMediaState
GetState()
263 { return wxMEDIASTATE_STOPPED
; }
265 DECLARE_CLASS(wxMediaBackend
)
268 //Event ID to give to our events
269 #define wxMEDIA_FINISHED_ID 13000
270 #define wxMEDIA_STOP_ID 13001
272 //Define our event types - we need to call DEFINE_EVENT_TYPE(EVT) later
273 DECLARE_EVENT_TYPE(wxEVT_MEDIA_FINISHED
, wxMEDIA_FINISHED_ID
)
274 DECLARE_EVENT_TYPE(wxEVT_MEDIA_STOP
, wxMEDIA_STOP_ID
)
276 //Function type(s) our events need
277 typedef void (wxEvtHandler::*wxMediaEventFunction
)(wxMediaEvent
&);
279 //Macro for usage with message maps
280 #define EVT_MEDIA_FINISHED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_FINISHED, winid, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxMediaEventFunction) & fn, (wxObject *) NULL ),
281 #define EVT_MEDIA_STOP(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_STOP, winid, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxMediaEventFunction) & fn, (wxObject *) NULL ),
283 // ----------------------------------------------------------------------------
284 // End compilation gaurd
285 // ----------------------------------------------------------------------------
286 #endif // wxUSE_MEDIACTRL
288 // ----------------------------------------------------------------------------
289 // End header guard and header itself
290 // ----------------------------------------------------------------------------
291 #endif // _WX_MEDIACTRL_H_