X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78450975b22a9d3715af1570ee57913d27617c27..e32d4b8f07fa4315b7641861c6b740e149b7e6fd:/include/wx/mediactrl.h diff --git a/include/wx/mediactrl.h b/include/wx/mediactrl.h index fec8e979c5..7ee066d29f 100644 --- a/include/wx/mediactrl.h +++ b/include/wx/mediactrl.h @@ -2,7 +2,7 @@ // Name: wx/mediactrl.h // Purpose: wxMediaCtrl class // Author: Ryan Norton -// Modified by: +// Modified by: // Created: 11/07/04 // RCS-ID: $Id$ // Copyright: (c) Ryan Norton @@ -55,103 +55,138 @@ enum wxMediaState wxMEDIASTATE_PLAYING }; -enum wxMediaTimeFormat -{ - wxMEDIATIMEFORMAT_TIME -}; - #define wxMEDIABACKEND_DIRECTSHOW wxT("wxAMMediaBackend") #define wxMEDIABACKEND_MCI wxT("wxMCIMediaBackend") #define wxMEDIABACKEND_QUICKTIME wxT("wxQTMediaBackend") +// ---------------------------------------------------------------------------- +// +// wxMediaEvent +// +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_MEDIA wxMediaEvent : public wxNotifyEvent +{ +public: + // ------------------------------------------------------------------------ + // wxMediaEvent Constructor + // + // Normal constructor, much the same as wxNotifyEvent + // ------------------------------------------------------------------------ + wxMediaEvent(wxEventType commandType = wxEVT_NULL, int id = 0) + : wxNotifyEvent(commandType, id) + { } + + // ------------------------------------------------------------------------ + // wxMediaEvent Copy Constructor + // + // Normal copy constructor, much the same as wxNotifyEvent + // ------------------------------------------------------------------------ + wxMediaEvent(const wxMediaEvent &clone) + : wxNotifyEvent(clone) + { } + + // ------------------------------------------------------------------------ + // wxMediaEvent::Clone + // + // Allocates a copy of this object. + // Required for wxEvtHandler::AddPendingEvent + // ------------------------------------------------------------------------ + virtual wxEvent *Clone() const + { return new wxMediaEvent(*this); } + + + // Put this class on wxWidget's RTTI table + DECLARE_DYNAMIC_CLASS(wxMediaEvent) +}; + // ---------------------------------------------------------------------------- // // wxMediaCtrl // // ---------------------------------------------------------------------------- -class wxMediaCtrl : public wxControl +class WXDLLIMPEXP_MEDIA wxMediaCtrl : public wxControl { public: wxMediaCtrl() : m_imp(NULL), m_bLoaded(false), m_bLoop(false) { } - wxMediaCtrl(wxWindow* parent, wxWindowID id, + wxMediaCtrl(wxWindow* parent, wxWindowID id, const wxString& fileName = wxT(""), - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, + long style = 0, const wxString& szBackend = wxT(""), const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")) : m_imp(NULL), m_bLoaded(false), m_bLoop(false) - { Create(parent, id, fileName, pos, size, style, + { Create(parent, id, fileName, pos, size, style, szBackend, validator, name); } - wxMediaCtrl(wxWindow* parent, wxWindowID id, + wxMediaCtrl(wxWindow* parent, wxWindowID id, const wxURI& location, - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, + long style = 0, const wxString& szBackend = wxT(""), const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")) : m_imp(NULL), m_bLoop(false) - { Create(parent, id, location, pos, size, style, + { Create(parent, id, location, pos, size, style, szBackend, validator, name); } ~wxMediaCtrl(); bool Create(wxWindow* parent, wxWindowID id, const wxString& fileName = wxT(""), - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, + long style = 0, const wxString& szBackend = wxT(""), const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")); bool Create(wxWindow* parent, wxWindowID id, const wxURI& location, - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, + long style = 0, const wxString& szBackend = wxT(""), const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxT("mediaCtrl")); + const wxString& name = wxT("mediaCtrl")); //DirectShow only bool DoCreate(wxClassInfo* instance, wxWindow* parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = 0, + long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")); - static wxClassInfo* NextBackend(); - - bool Play(); bool Pause(); bool Stop(); bool Load(const wxString& fileName); - bool Load(const wxURI& location); + bool Load(const wxURI& location); //DirectShow only void Loop(bool bLoop = true); bool IsLooped(); wxMediaState GetState(); - double GetPlaybackRate(); - bool SetPlaybackRate(double dRate); + double GetPlaybackRate(); //All but MCI + bool SetPlaybackRate(double dRate); //All but MCI - bool SetPosition(wxLongLong where); - wxLongLong GetPosition(); - wxLongLong GetDuration(); + wxFileOffset Seek(wxFileOffset where, wxSeekMode mode = wxFromStart); + wxFileOffset Tell(); //FIXME: This should be const + wxFileOffset Length(); //FIXME: This should be const protected: - void OnMediaFinished(const class wxMediaEvent& evt); + static wxClassInfo* NextBackend(); + + void OnMediaFinished(wxMediaEvent& evt); virtual void DoMoveWindow(int x, int y, int w, int h); wxSize DoGetBestSize() const; @@ -166,11 +201,11 @@ protected: // // wxMediaBackend // -// Currently an internal class - API stability not gauranteed. +// Currently an internal class - API stability not guaranteed. // // ---------------------------------------------------------------------------- -class wxMediaBackend : public wxObject +class WXDLLIMPEXP_MEDIA wxMediaBackend : public wxObject { public: wxMediaBackend() @@ -178,44 +213,44 @@ public: virtual ~wxMediaBackend(); - virtual bool CreateControl(wxControl* WXUNUSED(ctrl), - wxWindow* WXUNUSED(parent), - wxWindowID WXUNUSED(id), - const wxPoint& WXUNUSED(pos), + virtual bool CreateControl(wxControl* WXUNUSED(ctrl), + wxWindow* WXUNUSED(parent), + wxWindowID WXUNUSED(id), + const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), - long WXUNUSED(style), + long WXUNUSED(style), const wxValidator& WXUNUSED(validator), const wxString& WXUNUSED(name)) { return false; } - virtual bool Play() + virtual bool Play() { return false; } - virtual bool Pause() + virtual bool Pause() { return false; } - virtual bool Stop() + virtual bool Stop() { return false; } - virtual bool Load(const wxString& WXUNUSED(fileName)) + virtual bool Load(const wxString& WXUNUSED(fileName)) { return false; } - virtual bool Load(const wxURI& WXUNUSED(location)) + virtual bool Load(const wxURI& WXUNUSED(location)) { return false; } - virtual bool SetPosition(wxLongLong WXUNUSED(where)) + virtual bool SetPosition(wxLongLong WXUNUSED(where)) { return 0; } - virtual wxLongLong GetPosition() + virtual wxLongLong GetPosition() { return 0; } - virtual wxLongLong GetDuration() + virtual wxLongLong GetDuration() { return 0; } - virtual void Move(int WXUNUSED(x), int WXUNUSED(y), - int WXUNUSED(w), int WXUNUSED(h)) + virtual void Move(int WXUNUSED(x), int WXUNUSED(y), + int WXUNUSED(w), int WXUNUSED(h)) { } - virtual wxSize GetVideoSize() const + virtual wxSize GetVideoSize() const { return wxSize(0,0); } - virtual double GetPlaybackRate() + virtual double GetPlaybackRate() { return 0.0; } - virtual bool SetPlaybackRate(double WXUNUSED(dRate)) + virtual bool SetPlaybackRate(double WXUNUSED(dRate)) { return false; } virtual wxMediaState GetState() @@ -224,54 +259,13 @@ public: DECLARE_CLASS(wxMediaBackend) }; -// ---------------------------------------------------------------------------- -// -// wxMediaEvent -// -// ---------------------------------------------------------------------------- - -class WXDLLEXPORT wxMediaEvent : public wxNotifyEvent -{ -public: - // ------------------------------------------------------------------------ - // wxMediaEvent Constructor - // - // Normal constructor, much the same as wxNotifyEvent - // ------------------------------------------------------------------------ - wxMediaEvent(wxEventType commandType = wxEVT_NULL, int id = 0) - : wxNotifyEvent(commandType, id) - { } - - // ------------------------------------------------------------------------ - // wxMediaEvent Copy Constructor - // - // Normal copy constructor, much the same as wxNotifyEvent - // ------------------------------------------------------------------------ - wxMediaEvent(const wxMediaEvent &clone) - : wxNotifyEvent(clone) - { } - - // ------------------------------------------------------------------------ - // wxMediaEvent::Clone - // - // Allocates a copy of this object. - // Required for wxEvtHandler::AddPendingEvent - // ------------------------------------------------------------------------ - virtual wxEvent *Clone() const - { return new wxMediaEvent(*this); } - - - // Put this class on wxWidget's RTTI table - DECLARE_DYNAMIC_CLASS(wxMediaEvent) -}; - //Event ID to give to our events #define wxMEDIA_FINISHED_ID 13000 #define wxMEDIA_STOP_ID 13001 //Define our event types - we need to call DEFINE_EVENT_TYPE(EVT) later -DECLARE_EVENT_TYPE(wxEVT_MEDIA_FINISHED, wxMEDIA_FINISHED_ID) -DECLARE_EVENT_TYPE(wxEVT_MEDIA_STOP, wxMEDIA_STOP_ID) +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_FINISHED, wxMEDIA_FINISHED_ID) +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_STOP, wxMEDIA_STOP_ID) //Function type(s) our events need typedef void (wxEvtHandler::*wxMediaEventFunction)(wxMediaEvent&);