X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/226ec5a71a9b3f82591c0d1557ce1639a8f615d1..8d0a7b563acf4bd7e75824ba2076a7ab4d81a650:/include/wx/mediactrl.h diff --git a/include/wx/mediactrl.h b/include/wx/mediactrl.h index 54b0573eac..3791a7e26b 100644 --- a/include/wx/mediactrl.h +++ b/include/wx/mediactrl.h @@ -26,9 +26,12 @@ #pragma interface "mediactrl.h" #endif +#include "wx/defs.h" + // ---------------------------------------------------------------------------- // Compilation guard // ---------------------------------------------------------------------------- + #if wxUSE_MEDIACTRL // ---------------------------------------------------------------------------- @@ -55,14 +58,10 @@ enum wxMediaState wxMEDIASTATE_PLAYING }; -enum wxMediaTimeFormat -{ - wxMEDIATIMEFORMAT_TIME -}; - #define wxMEDIABACKEND_DIRECTSHOW wxT("wxAMMediaBackend") #define wxMEDIABACKEND_MCI wxT("wxMCIMediaBackend") #define wxMEDIABACKEND_QUICKTIME wxT("wxQTMediaBackend") +#define wxMEDIABACKEND_GSTREAMER wxT("wxGStreamerMediaBackend") // ---------------------------------------------------------------------------- // @@ -70,7 +69,7 @@ enum wxMediaTimeFormat // // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMediaEvent : public wxNotifyEvent +class WXDLLIMPEXP_MEDIA wxMediaEvent : public wxNotifyEvent { public: // ------------------------------------------------------------------------ @@ -78,8 +77,8 @@ public: // // Normal constructor, much the same as wxNotifyEvent // ------------------------------------------------------------------------ - wxMediaEvent(wxEventType commandType = wxEVT_NULL, int id = 0) - : wxNotifyEvent(commandType, id) + wxMediaEvent(wxEventType commandType = wxEVT_NULL, int winid = 0) + : wxNotifyEvent(commandType, winid) { } // ------------------------------------------------------------------------ @@ -111,107 +110,116 @@ public: // // ---------------------------------------------------------------------------- -class wxMediaCtrl : public wxControl +class WXDLLIMPEXP_MEDIA wxMediaCtrl : public wxControl { public: - wxMediaCtrl() : m_imp(NULL), m_bLoaded(false), m_bLoop(false) + wxMediaCtrl() : m_imp(NULL), m_bLoaded(false) { } - wxMediaCtrl(wxWindow* parent, wxWindowID id, - const wxString& fileName = wxT(""), + wxMediaCtrl(wxWindow* parent, wxWindowID winid, + const wxString& fileName = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& szBackend = wxT(""), + const wxString& szBackend = wxEmptyString, 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, + : m_imp(NULL), m_bLoaded(false) + { Create(parent, winid, fileName, pos, size, style, szBackend, validator, name); } - wxMediaCtrl(wxWindow* parent, wxWindowID id, + wxMediaCtrl(wxWindow* parent, wxWindowID winid, const wxURI& location, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& szBackend = wxT(""), + const wxString& szBackend = wxEmptyString, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")) - : m_imp(NULL), m_bLoop(false) - { Create(parent, id, location, pos, size, style, + : m_imp(NULL), m_bLoaded(false) + { Create(parent, winid, location, pos, size, style, szBackend, validator, name); } ~wxMediaCtrl(); - bool Create(wxWindow* parent, wxWindowID id, - const wxString& fileName = wxT(""), + bool Create(wxWindow* parent, wxWindowID winid, + const wxString& fileName = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& szBackend = wxT(""), + const wxString& szBackend = wxEmptyString, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")); - bool Create(wxWindow* parent, wxWindowID id, + bool Create(wxWindow* parent, wxWindowID winid, const wxURI& location, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& szBackend = wxT(""), + const wxString& szBackend = wxEmptyString, const wxValidator& validator = wxDefaultValidator, - const wxString& name = wxT("mediaCtrl")); + const wxString& name = wxT("mediaCtrl")); //DirectShow only bool DoCreate(wxClassInfo* instance, - wxWindow* parent, wxWindowID id, + wxWindow* parent, wxWindowID winid, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, 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); - void Loop(bool bLoop = true); - bool IsLooped(); wxMediaState GetState(); - double GetPlaybackRate(); - bool SetPlaybackRate(double dRate); + wxFileOffset Seek(wxFileOffset where, wxSeekMode mode = wxFromStart); + wxFileOffset Tell(); //FIXME: This should be const + wxFileOffset Length(); //FIXME: This should be const - bool SetPosition(wxLongLong where); - wxLongLong GetPosition(); - wxLongLong GetDuration(); + // + // Unofficial parts of API + // + //DirectShow/GStreamer only. Quicktime too, but somewhat buggy... + bool Load(const wxURI& location); + + double GetPlaybackRate(); //All but MCI & GStreamer + bool SetPlaybackRate(double dRate); //All but MCI & GStreamer protected: + static wxClassInfo* NextBackend(); + void OnMediaFinished(wxMediaEvent& evt); virtual void DoMoveWindow(int x, int y, int w, int h); wxSize DoGetBestSize() const; + //FIXME: This is nasty... find a better way to work around + //inheritance issues +#ifdef __WXMAC__ + friend class wxQTMediaBackend; +#endif +#ifdef __WXCOCOA__ + friend class wxQTMediaBackend; +#endif class wxMediaBackend* m_imp; bool m_bLoaded; - bool m_bLoop; - DECLARE_DYNAMIC_CLASS(wxMediaCtrl); + DECLARE_DYNAMIC_CLASS(wxMediaCtrl) }; // ---------------------------------------------------------------------------- // // 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() @@ -221,7 +229,7 @@ public: virtual bool CreateControl(wxControl* WXUNUSED(ctrl), wxWindow* WXUNUSED(parent), - wxWindowID WXUNUSED(id), + wxWindowID WXUNUSED(winid), const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), long WXUNUSED(style), @@ -262,7 +270,7 @@ public: virtual wxMediaState GetState() { return wxMEDIASTATE_STOPPED; } - DECLARE_CLASS(wxMediaBackend) + DECLARE_DYNAMIC_CLASS(wxMediaBackend) }; //Event ID to give to our events @@ -270,15 +278,18 @@ public: #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&); +#define wxMediaEventHandler(func) \ + (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxMediaEventFunction, &func) + //Macro for usage with message maps -#define EVT_MEDIA_FINISHED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_FINISHED, winid, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxMediaEventFunction) & fn, (wxObject *) NULL ), -#define EVT_MEDIA_STOP(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_STOP, winid, wxID_ANY, (wxObjectEventFunction) (wxEventFunction) (wxMediaEventFunction) & fn, (wxObject *) NULL ), +#define EVT_MEDIA_FINISHED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_FINISHED, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), +#define EVT_MEDIA_STOP(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_STOP, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), // ---------------------------------------------------------------------------- // End compilation gaurd