]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/joystick.cpp
Fix broken and missing DataView interface items for Phoenix
[wxWidgets.git] / src / msw / joystick.cpp
index a9a18a6935bf5392349cfb77b70e03b0ee2420c8..158c0b64b845e70ecc6a8f66f47d8b210a59ea5e 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        joystick.cpp
+// Name:        src/msw/joystick.cpp
 // Purpose:     wxJoystick class
 // Author:      Julian Smart
 // Modified by:
 // Purpose:     wxJoystick class
 // Author:      Julian Smart
 // Modified by:
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
+#endif
+
+#if wxUSE_JOYSTICK
+
+#include "wx/joystick.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/string.h"
+    #include "wx/window.h"
 #endif
 
 #endif
 
-#include "wx/string.h"
-#include "wx/window.h"
 #include "wx/msw/private.h"
 
 #if !defined(__GNUWIN32_OLD__) || defined(__CYGWIN10__)
 #include "wx/msw/private.h"
 
 #if !defined(__GNUWIN32_OLD__) || defined(__CYGWIN10__)
@@ -29,9 +36,7 @@
 #define NO_JOYGETPOSEX
 #endif
 
 #define NO_JOYGETPOSEX
 #endif
 
-#include "wx/window.h"
 #include "wx/msw/registry.h"
 #include "wx/msw/registry.h"
-#include "wx/msw/joystick.h"
 
 #include <regstr.h>
 
 
 #include <regstr.h>
 
@@ -69,7 +74,7 @@ wxJoystick::wxJoystick(int joystick)
     /* No such joystick, return ID 0 */
     m_joystick = 0;
     return;
     /* No such joystick, return ID 0 */
     m_joystick = 0;
     return;
-};
+}
 
 wxPoint wxJoystick::GetPosition() const
 {
 
 wxPoint wxJoystick::GetPosition() const
 {
@@ -81,6 +86,26 @@ wxPoint wxJoystick::GetPosition() const
         return wxPoint(0,0);
 }
 
         return wxPoint(0,0);
 }
 
+int wxJoystick::GetPosition(unsigned axis) const
+{
+    switch (axis) {
+    case 0:
+        return GetPosition().x;
+    case 1:
+        return GetPosition().y;
+    case 2:
+        return GetZPosition();
+    case 3:
+        return GetRudderPosition();
+    case 4:
+        return GetUPosition();
+    case 5:
+        return GetVPosition();
+    default:
+        return 0;
+    }
+}
+
 int wxJoystick::GetZPosition() const
 {
     JOYINFO joyInfo;
 int wxJoystick::GetZPosition() const
 {
     JOYINFO joyInfo;
@@ -122,6 +147,14 @@ int wxJoystick::GetButtonState() const
         return 0;
 }
 
         return 0;
 }
 
+bool wxJoystick::GetButtonState(unsigned id) const
+{
+    if (id > sizeof(int) * 8)
+        return false;
+
+    return (GetButtonState() & (1 << id)) != 0;
+}
+
 /**
     JLI 2002-08-20:
     Returns -1 to signify error.
 /**
     JLI 2002-08-20:
     Returns -1 to signify error.
@@ -293,6 +326,8 @@ int wxJoystick::GetProductId() const
 
 wxString wxJoystick::GetProductName() const
 {
 
 wxString wxJoystick::GetProductName() const
 {
+    wxString str;
+#ifndef __WINE__
     JOYCAPS joyCaps;
     if (joyGetDevCaps(m_joystick, &joyCaps, sizeof(joyCaps)) != JOYERR_NOERROR)
         return wxEmptyString;
     JOYCAPS joyCaps;
     if (joyGetDevCaps(m_joystick, &joyCaps, sizeof(joyCaps)) != JOYERR_NOERROR)
         return wxEmptyString;
@@ -300,7 +335,6 @@ wxString wxJoystick::GetProductName() const
     wxRegKey key1(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s\\%s"),
                    REGSTR_PATH_JOYCONFIG, joyCaps.szRegKey, REGSTR_KEY_JOYCURR));
 
     wxRegKey key1(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s\\%s"),
                    REGSTR_PATH_JOYCONFIG, joyCaps.szRegKey, REGSTR_KEY_JOYCURR));
 
-    wxString str;
     key1.QueryValue(wxString::Format(wxT("Joystick%d%s"),
                                      m_joystick + 1, REGSTR_VAL_JOYOEMNAME),
                     str);
     key1.QueryValue(wxString::Format(wxT("Joystick%d%s"),
                                      m_joystick + 1, REGSTR_VAL_JOYOEMNAME),
                     str);
@@ -308,7 +342,7 @@ wxString wxJoystick::GetProductName() const
     wxRegKey key2(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s"),
                                         REGSTR_PATH_JOYOEM, str.c_str()));
     key2.QueryValue(REGSTR_VAL_JOYOEMNAME, str);
     wxRegKey key2(wxString::Format(wxT("HKEY_LOCAL_MACHINE\\%s\\%s"),
                                         REGSTR_PATH_JOYOEM, str.c_str()));
     key2.QueryValue(REGSTR_VAL_JOYOEMNAME, str);
-
+#endif
     return str;
 }
 
     return str;
 }
 
@@ -607,9 +641,15 @@ bool wxJoystick::HasPOVCTS() const
 
 bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq)
 {
 
 bool wxJoystick::SetCapture(wxWindow* win, int pollingFreq)
 {
+#ifdef __WXMSW__
     BOOL changed = (pollingFreq == 0);
     MMRESULT res = joySetCapture((HWND) win->GetHWND(), m_joystick, pollingFreq, changed);
     return (res == JOYERR_NOERROR);
     BOOL changed = (pollingFreq == 0);
     MMRESULT res = joySetCapture((HWND) win->GetHWND(), m_joystick, pollingFreq, changed);
     return (res == JOYERR_NOERROR);
+#else
+    wxUnusedVar(win);
+    wxUnusedVar(pollingFreq);
+    return false;
+#endif
 }
 
 bool wxJoystick::ReleaseCapture()
 }
 
 bool wxJoystick::ReleaseCapture()
@@ -618,3 +658,4 @@ bool wxJoystick::ReleaseCapture()
     return (res == JOYERR_NOERROR);
 }
 
     return (res == JOYERR_NOERROR);
 }
 
+#endif // wxUSE_JOYSTICK