]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/mediactrl.h
listbox cleanup
[wxWidgets.git] / include / wx / mediactrl.h
index fbd3fe2c5c0faa7f54cf8fd94e0972149c51eec6..52051b4ac3bee567ea97952382f837ebd76df5b3 100644 (file)
@@ -22,9 +22,6 @@
 // ----------------------------------------------------------------------------
 // Pre-compiled header stuff
 // ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "mediactrl.h"
-#endif
 
 #include "wx/defs.h"
 
@@ -74,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")
 
 // ----------------------------------------------------------------------------
 //
@@ -202,8 +200,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);
@@ -326,6 +324,7 @@ public:
     DECLARE_DYNAMIC_CLASS(wxMediaBackend)
 };
 
+
 //Event ID to give to our events
 #define wxMEDIA_FINISHED_ID    13000
 #define wxMEDIA_STOP_ID    13001
@@ -350,6 +349,61 @@ typedef void (wxEvtHandler::*wxMediaEventFunction)(wxMediaEvent&);
 #   define EVT_MEDIA_LOADED(winid, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_MEDIA_LOADED, winid, wxID_ANY, wxMediaEventHandler(fn), (wxObject *) NULL ),
 #endif
 
+#if wxABI_VERSION >= 20603 /* 2.6.3+ only */
+#   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 ),
+#endif
+
+// ----------------------------------------------------------------------------
+// common backend base class used by many other backends
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_MEDIA wxMediaBackendCommonBase : public wxMediaBackend
+{
+public:
+    // add a pending wxMediaEvent of the given type
+    void QueueEvent(wxEventType evtType);
+
+    // notify that the movie playback is finished
+    void QueueFinishEvent()
+    {
+#if wxABI_VERSION >= 20603 /* 2.6.3+ only */
+        QueueEvent(wxEVT_MEDIA_STATECHANGED);
+#endif
+        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)
+    void NotifyMovieSizeChanged();
+
+    // call this when the movie is fully loaded
+    void NotifyMovieLoaded();
+
+
+    wxMediaCtrl *m_ctrl;      // parent control
+};
+
 // ----------------------------------------------------------------------------
 // End compilation gaurd
 // ----------------------------------------------------------------------------