X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/84006e65e80116a91514523b9d15344d4bbcbf4a..db7035e48a4ccc6265fa01949cb92db3c6b6c17f:/include/wx/mediactrl.h diff --git a/include/wx/mediactrl.h b/include/wx/mediactrl.h index e03d509968..d5223615a2 100644 --- a/include/wx/mediactrl.h +++ b/include/wx/mediactrl.h @@ -71,7 +71,8 @@ enum wxMediaCtrlPlayerControls #define wxMEDIABACKEND_MCI wxT("wxMCIMediaBackend") #define wxMEDIABACKEND_QUICKTIME wxT("wxQTMediaBackend") #define wxMEDIABACKEND_GSTREAMER wxT("wxGStreamerMediaBackend") - +#define wxMEDIABACKEND_REALPLAYER wxT("wxRealPlayerMediaBackend") +#define wxMEDIABACKEND_WMP10 wxT("wxWMP10MediaBackend") // ---------------------------------------------------------------------------- // @@ -150,7 +151,7 @@ public: { Create(parent, winid, location, pos, size, style, szBackend, validator, name); } - ~wxMediaCtrl(); + virtual ~wxMediaCtrl(); bool Create(wxWindow* parent, wxWindowID winid, const wxString& fileName = wxEmptyString, @@ -170,7 +171,7 @@ public: const wxValidator& validator = wxDefaultValidator, const wxString& name = wxT("mediaCtrl")); - bool DoCreate(wxClassInfo* instance, + bool DoCreate(const wxClassInfo* instance, wxWindow* parent, wxWindowID winid, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, @@ -196,8 +197,8 @@ public: bool Load(const wxURI& location); bool Load(const wxURI& location, const wxURI& proxy); - wxFileOffset GetDownloadProgress(); - wxFileOffset GetDownloadTotal(); + wxFileOffset GetDownloadProgress(); // DirectShow only + wxFileOffset GetDownloadTotal(); // DirectShow only double GetVolume(); bool SetVolume(double dVolume); @@ -212,7 +213,7 @@ public: { return Load(wxURI(fileName), wxURI(proxy)); } protected: - static wxClassInfo* NextBackend(); + static const wxClassInfo* NextBackend(wxClassInfo::const_iterator* it); void OnMediaFinished(wxMediaEvent& evt); virtual void DoMoveWindow(int x, int y, int w, int h); @@ -220,6 +221,9 @@ protected: //FIXME: This is nasty... find a better way to work around //inheritance issues +#if defined(__WXMAC__) + virtual void MacVisibilityChanged(); +#endif #if defined(__WXMAC__) || defined(__WXCOCOA__) friend class wxQTMediaBackend; #endif @@ -314,7 +318,8 @@ public: virtual wxLongLong GetDownloadTotal() { return 0; } - virtual void RESERVED8() {} + virtual void MacVisibilityChanged() + { } virtual void RESERVED9() {} DECLARE_DYNAMIC_CLASS(wxMediaBackend) @@ -324,12 +329,10 @@ public: //Event ID to give to our events #define wxMEDIA_FINISHED_ID 13000 #define wxMEDIA_STOP_ID 13001 -#define wxMEDIA_LOADED_ID 13002 //Define our event types - we need to call DEFINE_EVENT_TYPE(EVT) later DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_FINISHED, wxMEDIA_FINISHED_ID) DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_STOP, wxMEDIA_STOP_ID) -DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_LOADED, wxMEDIA_LOADED_ID) //Function type(s) our events need typedef void (wxEvtHandler::*wxMediaEventFunction)(wxMediaEvent&); @@ -340,8 +343,21 @@ typedef void (wxEvtHandler::*wxMediaEventFunction)(wxMediaEvent&); //Macro for usage with message maps #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 ), + +#define wxMEDIA_LOADED_ID 13002 +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_LOADED, wxMEDIA_LOADED_ID) #define EVT_MEDIA_LOADED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_LOADED, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), +#define wxMEDIA_STATECHANGED_ID 13003 +#define wxMEDIA_PLAY_ID 13004 +#define wxMEDIA_PAUSE_ID 13005 +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_STATECHANGED, wxMEDIA_STATECHANGED_ID) +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_PLAY, wxMEDIA_PLAY_ID) +DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_PAUSE, wxMEDIA_PAUSE_ID) +#define EVT_MEDIA_STATECHANGED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_STATECHANGED, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), +#define EVT_MEDIA_PLAY(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_PLAY, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), +#define EVT_MEDIA_PAUSE(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_PAUSE, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ), + // ---------------------------------------------------------------------------- // common backend base class used by many other backends // ---------------------------------------------------------------------------- @@ -353,11 +369,24 @@ public: void QueueEvent(wxEventType evtType); // notify that the movie playback is finished - void QueueFinishEvent() { QueueEvent(wxEVT_MEDIA_FINISHED); } + void QueueFinishEvent() + { + QueueEvent(wxEVT_MEDIA_STATECHANGED); + QueueEvent(wxEVT_MEDIA_FINISHED); + } // send the stop event and return true if it hasn't been vetoed bool SendStopEvent(); + // Queue pause event + void QueuePlayEvent(); + + // Queue pause event + void QueuePauseEvent(); + + // Queue stop event (no veto) + void QueueStopEvent(); + protected: // call this when the movie size has changed but not because it has just // been loaded (in this case, call NotifyMovieLoaded() below)