]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/mediactrl.h
Put wxEVT_SCROLL_CHANGED and wxEVT_SCROLL_ENDSCROLL inside
[wxWidgets.git] / include / wx / mediactrl.h
index 71c804b6b1db89790f1abfabb3113e56fe27334f..9646aeed81d6db9b1da8da320c33264162648334 100644 (file)
 #pragma interface "mediactrl.h"
 #endif
 
+#include "wx/defs.h"
+
 // ----------------------------------------------------------------------------
 // Compilation guard
 // ----------------------------------------------------------------------------
+
 #if wxUSE_MEDIACTRL
 
 // ----------------------------------------------------------------------------
@@ -58,6 +61,7 @@ enum wxMediaState
 #define wxMEDIABACKEND_DIRECTSHOW   wxT("wxAMMediaBackend")
 #define wxMEDIABACKEND_MCI          wxT("wxMCIMediaBackend")
 #define wxMEDIABACKEND_QUICKTIME    wxT("wxQTMediaBackend")
+#define wxMEDIABACKEND_GSTREAMER    wxT("wxGStreamerMediaBackend")
 
 // ----------------------------------------------------------------------------
 //
@@ -109,18 +113,18 @@ public:
 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 winid,
-                const wxString& fileName = wxT(""),
+                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)
+                : m_imp(NULL), m_bLoaded(false)
     {   Create(parent, winid, fileName, pos, size, style,
                szBackend, validator, name);                             }
 
@@ -129,21 +133,21 @@ public:
                 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)
+                : m_imp(NULL), m_bLoaded(false)
     {   Create(parent, winid, location, pos, size, style,
                szBackend, validator, name);                             }
 
     ~wxMediaCtrl();
 
     bool Create(wxWindow* parent, wxWindowID winid,
-                const wxString& fileName = wxT(""),
+                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"));
 
@@ -152,7 +156,7 @@ public:
                 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")); //DirectShow only
 
@@ -169,20 +173,26 @@ public:
     bool Stop();
 
     bool Load(const wxString& fileName);
-    bool Load(const wxURI& location); //DirectShow only
 
-    void Loop(bool bLoop = true);
-    bool IsLooped();
 
     wxMediaState GetState();
 
-    double GetPlaybackRate();           //All but MCI
-    bool SetPlaybackRate(double dRate); //All but MCI
-
     wxFileOffset Seek(wxFileOffset where, wxSeekMode mode = wxFromStart);
     wxFileOffset Tell(); //FIXME: This should be const
     wxFileOffset Length(); //FIXME: This should be const
 
+    //
+    // 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
+
+    double GetVolume();                 //DirectShow only
+    bool   SetVolume(double dVolume);   //DirectShow only
+
 protected:
     static wxClassInfo* NextBackend();
 
@@ -190,6 +200,8 @@ protected:
     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
@@ -198,9 +210,8 @@ protected:
 #endif
     class wxMediaBackend* m_imp;
     bool m_bLoaded;
-    bool m_bLoop;
 
-    DECLARE_DYNAMIC_CLASS(wxMediaCtrl);
+    DECLARE_DYNAMIC_CLASS(wxMediaCtrl)
 };
 
 // ----------------------------------------------------------------------------
@@ -262,7 +273,20 @@ public:
     virtual wxMediaState GetState()
     {   return wxMEDIASTATE_STOPPED;    }
 
-    DECLARE_CLASS(wxMediaBackend)
+    virtual double GetVolume()
+    {   return 0.0;                     }
+    virtual bool SetVolume(double WXUNUSED(dVolume))
+    {   return false;                   }
+
+    virtual void RESERVED3() {}
+    virtual void RESERVED4() {}
+    virtual void RESERVED5() {}
+    virtual void RESERVED6() {}
+    virtual void RESERVED7() {}
+    virtual void RESERVED8() {}
+    virtual void RESERVED9() {}
+
+    DECLARE_DYNAMIC_CLASS(wxMediaBackend)
 };
 
 //Event ID to give to our events
@@ -276,9 +300,12 @@ DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_MEDIA, wxEVT_MEDIA_STOP,     wxMEDIA_STO
 //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